Commit 8060e3a8 authored by Dorchies David's avatar Dorchies David
Browse files

Merge branch '3-validation-feuille-de-temps' into 'master'

feat: validation feuille de temps

Closes #3

See merge request !1
1 merge request!1feat: validation feuille de temps
Showing with 127 additions and 74 deletions
+127 -74
# Generated by roxygen2: do not edit by hand
export(add_temps)
export(fdt_add_event)
export(fdt_isValidable)
export(fdt_valid)
export(get_user_id)
export(jump_to_mon_calendrier)
export(jump_to_pointage)
......
......@@ -15,9 +15,9 @@
#' \dontrun{
#' library(hatata)
#' session <- login("pnom", "my_password")
#' add_temps(session, "15/04/2021")
#' fdt_add_event(session, "15/04/2021")
#' }
add_temps <- function(
fdt_add_event <- function(
session,
date,
duree = "+07h44",
......
#' Check if the monthly time sheet can be validated
#'
#' Function used by [fdt_valid] before validation attempt.
#'
#' @inheritParams fdt_valid
#'
#' @return [logical] `TRUE` if the time sheet is ready for validation, `FALSE` otherwise
#' @export
#'
#' @examples
#' \dontrun{
#' library(hatata)
#' session <- login("pnom", "my_password")
#' fdt_valid(session, "15/04/2021")
#' }
fdt_isValidable <- function(session, date_validation) {
session <- jump_to_pointage(session, date = date_validation)
lForms <- rvest::html_form(session)
names(lForms) <- sapply(lForms, function(x) x$name)
f <- lForms[["form_update_report"]]
f$fields[[length(f$fields)]]$attr$id == "btn_save_report"
}
R/fdt_valid.R 0 → 100644
#' Monthly time sheet validation
#'
#' Returns an error if the time sheet is not ready for validation.
#'
#' @param session a [rvest::session] provided by [login] or [jump_to_mon_calendrier] functions
#' @param date_validation a [character] representing a date during the month to validate in format "%Y-%m-%d"
#'
#' @return the return of the [httr::POST] function
#' @export
#'
#' @examples
#' \dontrun{
#' library(hatata)
#' session <- login("pnom", "my_password")
#' fdt_valid(session, "15/04/2021")
#' }
fdt_valid <- function(session, date_validation) {
session <- jump_to_pointage(session, date = date_validation)
if(!fdt_isValidable(session, date_validation)) stop("The time sheet is not ready for validation. Check it on https://temps-activites.inrae.fr")
url <- gsub("action=showTempsTheorique", "action=updateReport", session$url)
cookies <- session$response$cookies$value
names(cookies) <- session$response$cookies$name
POST(url,
set_cookies(.cookies = cookies))
}
......@@ -18,7 +18,7 @@ jump_to_pointage <- function(session,
date = format(Sys.Date(), "%Y-%m-%d"),
user_id = get_user_id(session),
cfg = config::get(file = system.file("config.yml", package = "hatata"))) {
if(!inherits(session, "hatata_mon_calendrier")) {
if (!inherits(session, "hatata_mon_calendrier")) {
session <- jump_to_mon_calendrier(session)
}
date <- as.Date(date)
......@@ -26,7 +26,9 @@ jump_to_pointage <- function(session,
lastMonth <- format(lubridate::ceiling_date(date, "month") - 1, "%Y-%m-%d")
url <- sprintf(cfg$url_pointage, firstMonth, lastMonth, user_id)
session <- session %>% rvest::session_jump_to(url)
class(session) <- c("hatata_pointage", class(session))
if (!inherits(session, "hatata_pointage")) {
class(session) <- c("hatata_pointage", class(session))
}
attr(session, "user_id") <- user_id
session
}
......@@ -23,7 +23,7 @@ Chargement de la librarie&nbsp;:
library(hatata)
```
Pour saisir des temps dans [l'outil #temps](https://temps-activites.inra.fr/temps), il faut d'abord créer une variable de session contenant les identifiants de connexion.
Pour saisir des temps dans [l'outil #temps](https://temps-activites.inra.fr/temps), il faut d'abord créer une variable de session contenant les identifiants de connexion.
``` r
session <- login("mon_idenfiant_INRAE_pnom", "mon_mot_de_passe_INRAE")
......@@ -32,7 +32,13 @@ session <- login("mon_idenfiant_INRAE_pnom", "mon_mot_de_passe_INRAE")
Choisissez ensuite des dates sur lesquelles vous avez des régularisations à faire, exemple pour le 15 avril 2021 avec une journée de 7h44 en "heures normales"&nbsp;:
``` r
add_temps(session, "15/04/2021")
fdt_add_event(session, "15/04/2021")
```
Pour valider la feuille de temps mensuelle du mois d'avril 2021&nbsp;
``` r
fdt_valid(session, "01/04/2021")
```
# Roadmap
......@@ -42,6 +48,6 @@ Pour rendre cette application plus fonctionnelle, il manque les fonctionnalités
- Détection automatique des jours en défaut avant la date courante pour une présélection de dates à remplir automatiquement ([#2](https://gitlab.irstea.fr/david.dorchies/hatata/-/issues/2))
- Développement d'une interface Shiny pour les utilisateurs Lambda (Fonctionnalités à définir)
# Contribution
# Contribution
Toutes les contributions sont les bienvenues pour aboutir à un outil fonctionnel pour le plus grand nombre :)
<html>
<body>
<div class="container-fluid">
<form method="post" action="" class="form-horizontal" id="form_add_regul">
<div class="row-fluid">
<div class="span12" style="text-align:center;">
Evènement pour le pointage du 01/07/2021 <input type="hidden" id="date" name="date" value="01/07/2021" data-old-value="01/07/2021">
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div class="control-group">
<label class="control-label" for="type_regulation">Type d'évènement</label>
<div class="controls">
<select name="type_regulation" id="type_regulation">
<option value="40" selected="selected">Décharge syndicale</option>
<option value="39">Don de sang et de moelle osseuse </option>
<option value="38">Examens médicaux de prévention + expertises médicales diligentées par l'employeur</option>
<option value="35">Examens médicaux obligatoires antérieurs et postérieurs à l'accouchement</option>
<option value="37">FACILITES DE SERVICE en cas d'allaitement</option>
<option value="33">Fonctions électives INRAE</option>
<option value="22">Heures normales</option>
<option value="36">REDUCTION DU TEMPS DE TRAVAIL (grossesse)</option>
<option value="34">Séances préparatoires à la naissance</option>
</select>
<br> <br> </div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div class="control-group">
<label class="control-label" for="duree">Durée</label>
<div class="controls">
<input id="duree" class="duree time" type="text" style="width:5em" value="" name="duree" placeholder="+/-00h00">
</div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div class="control-group">
<label class="control-label" for="commentaire">Commentaire</label>
<div class="controls">
<textarea style="height:5em;width:20em;" id="commentaire" name="commentaire"></textarea>
<br> </div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12" style="text-align:center;">
<input type="hidden" name="id_form" value="form_add_regul">
<input type="hidden" name="user_id" id="user_id" value="4242">
<input type="submit" value="Enregistrer" id="btn_enregistrer_regul" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false">
</div>
</div>
</form>
</div>
</body>
</html>
\ No newline at end of file
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/add_temps.R
\name{add_temps}
\alias{add_temps}
% Please edit documentation in R/fdt_add_event.R
\name{fdt_add_event}
\alias{fdt_add_event}
\title{Add a day time in "Feuille de pointage"}
\usage{
add_temps(
fdt_add_event(
session,
date,
duree = "+07h44",
......@@ -36,6 +36,6 @@ Add a day time in "Feuille de pointage"
\dontrun{
library(hatata)
session <- login("pnom", "my_password")
add_temps(session, "15/04/2021")
fdt_add_event(session, "15/04/2021")
}
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/fdt_isValidable.R
\name{fdt_isValidable}
\alias{fdt_isValidable}
\title{Check if the monthly time sheet can be validated}
\usage{
fdt_isValidable(session, date_validation)
}
\arguments{
\item{session}{a \link[rvest:session]{rvest::session} provided by \link{login} or \link{jump_to_mon_calendrier} functions}
\item{date_validation}{a \link{character} representing a date during the month to validate in format "\%Y-\%m-\%d"}
}
\value{
\link{logical} \code{TRUE} if the time sheet is ready for validation, \code{FALSE} otherwise
}
\description{
Function used by \link{fdt_valid} before validation attempt.
}
\examples{
\dontrun{
library(hatata)
session <- login("pnom", "my_password")
fdt_valid(session, "15/04/2021")
}
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/fdt_valid.R
\name{fdt_valid}
\alias{fdt_valid}
\title{Monthly time sheet validation}
\usage{
fdt_valid(session, date_validation)
}
\arguments{
\item{session}{a \link[rvest:session]{rvest::session} provided by \link{login} or \link{jump_to_mon_calendrier} functions}
\item{date_validation}{a \link{character} representing a date during the month to validate in format "\%Y-\%m-\%d"}
}
\value{
the return of the \link[httr:POST]{httr::POST} function
}
\description{
Returns an error if the time sheet is not ready for validation.
}
\examples{
\dontrun{
library(hatata)
session <- login("pnom", "my_password")
fdt_valid(session, "15/04/2021")
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment