Files
BeWoPlaner/BeWoPlanerMobil/Views/ReportViewer/ReportViewerFormPartial.cshtml
Lyndon Jetten 2f9495161a FaC:
Kalender: Enddatum bei Abwesenheiten im ToolTip korrigiert.
Verwaltung: Sessiontimeout für den MoK zwischen 20 und 60 Minuten einstellbar gemacht.
Auswertungen: Ansehenrechte hinzugefügt (hat man nur das Recht Auswertungen ansehen zu dürfen und sonst keine Auswertungsrechte (z.B. "Auswertungen Berichte ansehen" oder "Jahresberichte"), wird das Modul nicht angezeigt).

MoK (siehe "MoK Neuerungen Juni Release 2023.pdf"):
Zeiterfassung:
+ Berechnung der Dauer/Start/Ende korrigiert.
+ Hilfeplanbezeichnungen werden angezeigt.
+ Unterschriften sind löschbar und machen Monatsunterschriften ungültig (Warnung inklusive)
+ Infotext (dass die erneute Unterschrift nicht notwendig ist) wird im Unterschriftenformular angezeigt, wenn bereits eine Monatsunterschrift für den zu unterschreibenden Eintrag geleistet wurde.

Klienten:
+ Diagnosen hinzugefügt
+ Behinderungen hinzugefügt

Quittierungsbelege:
+ Neue Informationen von Monatsunterschriften: Ob für alle Zeiterfassungseinträge im ausgewählten Zeitraum gültig, ob die Monatsunterschrift auf dem Quittierungsbeleg angezeigt wird, Unterschrift von, geleistet am (sekundengenau), und geleistet für x erbrachte Leistungen.

Auswertungen:
+ Mitarbeiterstundenkonto hinzugefügt
2023-06-18 17:11:35 +02:00

242 lines
9.4 KiB
Plaintext

@using BeWoPlanerMobil.Models
@using BeWoPlanerMobil.Util
@model BeWoPlanerMobil.Models.ReportViewerModel
<script type="text/javascript">
// ToDo:
function reportFilterOnChange() {
try {
//team oder mitarbeiter
toggleMitarbeiterstundenForm();
} catch (error) {
showErrorPopup(error);
}
}
function allEmployeesCbOnClick() {
try {
var isChecked = $("#msk-all-employees-cb").is(':checked');
$("#msk-employee-list").toggle(isChecked);
if(isChecked) {
$("#msk-form-warning").hide();
}
} catch (error) {
showErrorPopup(error);
}
}
function allTeamsCbOnClick() {
try {
var isChecked = $("#msk-all-teams-cb").is(':checked');
$("#msk-team-list").toggle(isChecked);
if (isChecked) {
$("#msk-form-warning").hide();
}
} catch (error) {
showErrorPopup(error);
}
}
function createMitarbeiterstundenkontoReport() {
try {
var formWarning = $("#msk-form-warning");
formWarning.hide();
formWarning.empty();
var month = $("#msk-month-select :selected").val();
var year = $("#msk-year-select :selected").val();
var allEmployees = $("#msk-all-employees-cb").is(':checked');
var allTeams = $("#msk-all-teams-cb").is(':checked');
var employeeOid = $("#msk-employee-select :selected").val();
var teamOid = $("#msk-team-select :selected").val();
var ansicht = 0;
if ($("#msk-tagesansicht-cb").length) {
ansicht = $("#msk-tagesansicht-cb").is('checked') ? 1 : 0;
} else {
switch ($("input[name=msk-ansichtsradio]:checked").attr("id")) {
case "msk-tagesansichtsradio":
ansicht = 1;
break;
case "msk-jahresansichtsradio":
ansicht = 2;
break;
default:
ansicht = 0;
break;
}
}
var teamForm = $("#msk-team-form");
var employeeForm = $("#msk-employee-form");
var isEmployeeFormSelected = employeeForm.css("display") === "block" || employeeForm.css("display") === "none" && (teamForm.css("display") === "none" || teamForm.length === 0);
var parameterString = month + ";" + year + ";" + isEmployeeFormSelected + ";";
if(isEmployeeFormSelected) {
if (allEmployees === false && employeeOid === "0") {
formWarning.removeClass("d-none");
formWarning.html("Bitte wählen Sie einen Mitarbeiter aus.");
formWarning.show();
return;
} else {
parameterString += allEmployees + ";" + employeeOid;
}
} else {
if (allTeams === false && teamOid === "0") {
formWarning.removeClass("d-none");
formWarning.html("Bitte wählen Sie ein Team aus.");
formWarning.show();
return;
} else {
parameterString += allTeams + ";" + teamOid;
}
}
parameterString += ";" + ansicht;
showSpinner();
$("#msk-report-container").load("@Url.Action("LoadMitarbeiterstundenkonto")", { parameters: parameterString }, function() {
hideSpinner();
});
} catch (error) {
showErrorPopup(error);
}
}
</script>
@*ToDo: Bis auf weiteres nur Mitarbeiterstundenkonto anzeigen!*@
@*@if(Model.SelectedReportType == ReportType.Berichte)
{
@Html.DropDownListFor(model => model.SelectedCustomReport, Model.CustomReports, new { @class = "custom-select", id = "msk-customReportSelect", onchange = "loadCustomReport()" })
}*@
@if(Model.SelectedReportType == ReportType.Mitarbeiterstundenkonto && AbstractModel.HasRightToViewMitarbeiterstundenkonto)
{
<div id="report-form-container">
<div class="form-row">
<div class="col">
<div class="alert alert-danger d-none w-100" role="alert" id="msk-form-warning">
</div>
</div>
</div>
@if(AbstractModel.HasRightMitarbeiterstundenkontoViewAll || AbstractModel.HasRightMitarbeiterstundenkontoViewTeams)
{
<div class="form-row">
<div class="col">
<div class="form-check">
<input class="form-check-input" type="radio" name="filterRadio" id="msk-filterForEmployeesRadio" onchange="reportFilterOnChange()" checked/>
<label for="msk-filterForEmployeesRadio">Nach Mitarbeiter filtern</label>
</div>
</div>
</div>
<div class="form-row">
<div class="col">
<div class="form-check">
<input class="form-check-input" type="radio" name="filterRadio" id="msk-filterForTeamsRadio" onchange="reportFilterOnChange()"/>
<label for="msk-filterForTeamsRadio">Nach Teams filtern</label>
</div>
</div>
</div>
}
<div id="msk-employee-form">
@if(AbstractModel.HasRightMitarbeiterstundenkontoViewAll)
{
<div class="form-row">
<div class="col">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="msk-all-employees-cb"/>
<label class="form-check-label" for="msk-all-employees-cb" onclick="allEmployeesCbOnClick()">Alle Mitarbeiter</label>
</div>
</div>
</div>
}
<div class="form-row" id="msk-employee-list">
<div class="col">
@Html.DropDownListFor(model => model.SelectedEmployeeOid, Model.Employees, new { @class = "custom-select mb-3", id = "msk-employee-select" })
</div>
</div>
</div>
@if(AbstractModel.HasRightMitarbeiterstundenkontoViewAll || AbstractModel.HasRightMitarbeiterstundenkontoViewTeams)
{
<div id="msk-team-form">
<div class="form-row">
<div class="col">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="msk-all-teams-cb"/>
<label class="form-check-label" for="msk-all-teams-cb" onclick="allTeamsCbOnClick()">Alle Teams</label>
</div>
</div>
</div>
<div class="form-row" id="msk-team-list">
<div class="col">
@Html.DropDownListFor(model => model.SelectedTeamOid, Model.Teams, new { @class = "custom-select mb-3", id = "msk-team-select" })
</div>
</div>
</div>
}
<div class="form-row">
<div class="col">
@Html.DropDownListFor(model => model.SelectedMonth, Model.Months, new { @class = "custom-select mb-3", id = "msk-month-select" })
</div>
<div class="col">
@Html.DropDownListFor(model => model.SelectedYear, Model.Years, new { @class = "custom-select mb-3", id = "msk-year-select" })
</div>
</div>
<div class="form-row">
@{
var str = BS.Shared.Translation.Translator.Translate("StundenkontoTagesansicht");
}
@if(str == "StundenkontoTagesansicht")
{
<div class="col-4">
<div class="form-check">
<input class="form-check-input" type="radio" name="msk-ansichtsradio" id="msk-tagesansichtsradio"/>
<label for="msk-tagesansichtsradio">Tag</label>
</div>
</div>
<div class="col-4">
<div class="form-check">
<input class="form-check-input" type="radio" name="msk-ansichtsradio" id="msk-monatsansichtsradio" checked/>
<label for="msk-monatsansichtsradio">Monat</label>
</div>
</div>
<div class="col-4">
<div class="form-check">
<input class="form-check-input" type="radio" name="msk-ansichtsradio" id="msk-jahresansichtsradio"/>
<label for="msk-jahresansichtsradio">Jahr</label>
</div>
</div>
}
else
{
<div class="col">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="msk-tagesansicht-cb"/>
<label class="form-check-label" for="msk-tagesansicht-cb">@str</label>
</div>
</div>
}
</div>
<div class="form-row">
<div class="col">
<button type="button" class="btn btn-primary w-100" onclick="createMitarbeiterstundenkontoReport()">Erstellen</button>
</div>
</div>
</div>
}