624 lines
27 KiB
Plaintext
624 lines
27 KiB
Plaintext
@using BeWoPlanerMobil.Util
|
|
@model BeWoPlanerMobil.Models.ReportModel
|
|
|
|
@{
|
|
ViewBag.Title = "Quittierungsbeleg";
|
|
|
|
if(TempData[TempDataConstants.DoLogoutKey] is bool doLogout && doLogout)
|
|
{
|
|
<text>
|
|
<script type="text/javascript">
|
|
$("#second-logout-form").submit();
|
|
</script>
|
|
</text>
|
|
}
|
|
}
|
|
|
|
<style type="text/css">
|
|
.btn-group {
|
|
width: 135px;
|
|
}
|
|
</style>
|
|
|
|
<script type="text/javascript">
|
|
function getChangeDateSelectionUrl() {
|
|
return "@Url.Action("ChangeDateSelection")";
|
|
}
|
|
|
|
function getChangeFiltersUrl() {
|
|
return "@Url.Action("ChangeFilters")";
|
|
}
|
|
|
|
function getSetCustomerUrl() {
|
|
return "@Url.Action("SetCustomer")";
|
|
}
|
|
|
|
function getValidateCustomerSignatureUrl() {
|
|
// TODO: implementieren? Ja!
|
|
}
|
|
|
|
function getCreateSignatureForServiceOverviewUrl() {
|
|
return "@Url.Action("CreateSignatureForServiceOverview")";
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
initializeReportView();
|
|
calcReportFormPrependWidth();
|
|
|
|
if($("#selected-employee-cb").is(":checked")) {
|
|
$("#employee-select-container").removeClass("d-none");
|
|
$("#employee-select-container").addClass("d-block");
|
|
}
|
|
|
|
if($("#selected-organisation-cb").is(":checked")) {
|
|
$("#organisation-select-container").removeClass("d-none");
|
|
$("#organisation-select-container").addClass("d-block");
|
|
}
|
|
|
|
if($("#selected-category-cb").is(":checked")) {
|
|
$("#test-div3").removeClass("d-none");
|
|
$("#test-div3").addClass("d-block");
|
|
}
|
|
|
|
@if(Model.QuittierungsbelegsReportObject != null)
|
|
{
|
|
<text>
|
|
const windowHeight = $(window).height() * .8;
|
|
$("#qb-container").height(windowHeight);
|
|
$("#qb-report-popup").modal("show");
|
|
</text>
|
|
}
|
|
});
|
|
|
|
$(window).resize(function() {
|
|
calcReportFormPrependWidth();
|
|
});
|
|
|
|
function getLoadConfirmationReceiptSignaturesUrl() {
|
|
return "@Url.Action("LoadConfirmationReceiptSignatures")";
|
|
}
|
|
|
|
function createServiceOverview() {
|
|
try {
|
|
showSpinner();
|
|
|
|
$("#report-signatures-container").load("@Url.Action("LoadServiceOverview")",
|
|
function () {
|
|
hideSpinner();
|
|
}
|
|
);
|
|
} catch (error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
var reportFormWidth = 0;
|
|
function calcReportFormPrependWidth() {
|
|
try {
|
|
if(reportFormWidth === 0) {
|
|
reportFormWidth = getMaxWidth("sm-report-prepend-input-group-text");
|
|
}
|
|
|
|
let newWidth = reportFormWidth;
|
|
|
|
if($(document).width() <= 768) {
|
|
newWidth = getMaxWidth("sm-report-prepend-input-group-text");
|
|
}
|
|
|
|
$(".sm-report-prepend-input-group-text").width(newWidth);
|
|
} catch (error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function setIsOnlyForSelectedEmployee() {
|
|
try {
|
|
var isChecked = $("#selected-employee-cb").is(":checked");
|
|
|
|
$.get("@Url.Action("CheckForSelectedEmployee")", function(employeeName2Oid) {
|
|
if(!employeeName2Oid.includes("_")) {
|
|
return;
|
|
}
|
|
|
|
const [name, employeeOid] = employeeName2Oid.split("_");
|
|
|
|
$("#qb-employee-popup").parent().find(".dropdown-toggle").text(name);
|
|
|
|
$.get("@Url.Action("ChangeIsForSelectedEmployeesOnly")", {isForSelectedEmployeeOnly: isChecked, employeeOid: isChecked ? parseFloat(employeeOid) : null});
|
|
});
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function setIsOnlyForSelectedOrganisation() {
|
|
try {
|
|
var isChecked = $("#selected-organisation-cb").is(":checked");
|
|
|
|
var organizationOid = null;
|
|
|
|
$.get("@Url.Action("CheckForSelectedOrganization")",
|
|
function(organizationName2Oid) {
|
|
const popup = $("#qb-organization-popup");
|
|
|
|
const links = popup.find("a");
|
|
|
|
const dropdownToggleButton = popup.parent().find(".dropdown-toggle");
|
|
|
|
if(organizationName2Oid === " " && links.length > 0) {
|
|
const firstOrganization = $(links[0]);
|
|
|
|
dropdownToggleButton.text(firstOrganization.text());
|
|
|
|
const id = firstOrganization.attr("id");
|
|
|
|
if(false === isUndefinedOrNull(id) && id.includes("_")) {
|
|
organizationOid = parseFloat(id.split("_")[1]);
|
|
}
|
|
} else if(organizationName2Oid.includes("_")) {
|
|
const splitName2Oid = organizationName2Oid.split("_");
|
|
|
|
const organizationName = splitName2Oid[0];
|
|
const oid = parseFloat(splitName2Oid[1]);
|
|
|
|
organizationOid = oid;
|
|
|
|
dropdownToggleButton.text(organizationName);
|
|
}
|
|
|
|
$.get("@Url.Action("ChangeIsForSelectedOrganisationOnly")", {isForSelectedOrganisationOnly: isChecked, organisationOid: isChecked ? organizationOid : null});
|
|
});
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function setIsOnlyForSelectedServiceCategory() {
|
|
try {
|
|
const isChecked = $("#selected-category-cb").is(":checked");
|
|
const serviceCategoryOid = isChecked ? parseFloat($("#category-select option:selected").val()) : null;
|
|
|
|
$.get("@Url.Action("ChangeIsForSelectedServiceCategoryOnly")", { isForSelectedServiceCategoryOnly: isChecked, serviceCategoryOid: serviceCategoryOid});
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function setReportEmployee(selectedDropdownItem, employeeOid) {
|
|
try {
|
|
$.get("@Url.Action("SetEmployeeOid")", { employeeOid: employeeOid }, function(employeeName) {
|
|
$("#qb-employee-popup").parent().find(".dropdown-toggle").text(employeeName);
|
|
$("#qb-employee-popup").modal("hide");
|
|
});
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function setReportOrganization(selectedDropdownItem, organisationOid) {
|
|
try {
|
|
if(organisationOid !== null && $.isNumeric(organisationOid)) {
|
|
$.get("@Url.Action("SetOrganisationOid")", { organisationOid: organisationOid }, function(organisationName) {
|
|
$("#qb-organization-popup").parent().find(".dropdown-toggle").text(organisationName);
|
|
$("#qb-organization-popup").modal("hide");
|
|
});
|
|
}
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function setReportServiceCategory() {
|
|
try {
|
|
const serviceCategoryOid = parseFloat($("#category-select option:selected").val());
|
|
if(serviceCategoryOid !== null && $.isNumeric(serviceCategoryOid)) {
|
|
$.get("@Url.Action("SetServiceCategoryOid")", { serviceCategoryOid: serviceCategoryOid });
|
|
}
|
|
} catch (error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function previewQBReport() {
|
|
try {
|
|
showSpinner();
|
|
|
|
$("#load-report-form").submit();
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function resetQuittierungsbeleg() {
|
|
try {
|
|
$.get("@Url.Action("ResetQuittierungsbeleg")");
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
$(document).on("shown.bs.modal", "#qb-report-popup", function () {
|
|
quittierungsbelegsViewer.AdjustControl();
|
|
});
|
|
|
|
function checkForExistingSignature() {
|
|
try {
|
|
const month = $("#month-select option:selected").val();
|
|
const year = $("#year-select option:selected").val();
|
|
const startDay = $("#start-day-select option:selected").val();
|
|
const endDay = $("#end-day-select option:selected").val();
|
|
|
|
if(startDay === 0 || endDay === 0 || year === 0 || month === 0 || areUndefinedOrNull([month, year, startDay, endDay])) {
|
|
return;
|
|
}
|
|
|
|
$.get("@Url.Action("ChangeDateSelection")",
|
|
{
|
|
startDayString: startDay,
|
|
endDayString: endDay,
|
|
monthString: month,
|
|
yearString: year
|
|
});
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function qbFilterSelectionChange() {
|
|
try {
|
|
const selectedOption = $("#qb-filter-select option:selected").val();
|
|
|
|
switch(selectedOption) {
|
|
case "3": // Klient auswählen
|
|
$("#team-selection-container").removeClass("d-block");
|
|
$("#team-selection-container").addClass("d-none");
|
|
|
|
$("#customer-selection-container").removeClass("d-none");
|
|
$("#customer-selection-container").addClass("d-block");
|
|
break;
|
|
case "4": // Team auswählen
|
|
$("#customer-selection-container").removeClass("d-block");
|
|
$("#customer-selection-container").addClass("d-none");
|
|
|
|
$("#team-selection-container").removeClass("d-none");
|
|
$("#team-selection-container").addClass("d-block");
|
|
break;
|
|
default:
|
|
$("#customer-selection-container, #team-selection-container").removeClass("d-block");
|
|
$("#customer-selection-container, #team-selection-container").addClass("d-none");
|
|
break;
|
|
}
|
|
|
|
window.calcPrependWidth();
|
|
|
|
$.get("@Url.Action("SetQbFilterEnum")", { filterEnumString: selectedOption });
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function onQBCustomerDropdownItemClick(selectedDropdownItem, customerOid) {
|
|
try {
|
|
$.get("@Url.Action("SetCustomer")", {customerOid: customerOid}).done(function(customerName) {
|
|
$("#qb-customer-popup").parent().find(".dropdown-toggle").text(customerName);
|
|
$("#qb-customer-popup").modal("hide");
|
|
checkForExistingSignature();
|
|
});
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function onQBTeamDropdownItemClick(selectedDropdownItem, teamOid) {
|
|
try {
|
|
$.get("@Url.Action("SetTeam")", {teamOid: teamOid}).done(function(teamName) {
|
|
$("#qb-team-popup").parent().find(".dropdown-toggle").text(teamName);
|
|
$("#qb-team-popup").modal("hide");
|
|
checkForExistingSignature();
|
|
});
|
|
} catch(error) {
|
|
window.showErrorPopup(error);
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<div class="container-fluid my-3 lg-max-width" id="report-form-container">
|
|
<div class="row">
|
|
<div class="col col-12">
|
|
@* ----- Filter ----- *@
|
|
<div class="mt-3">
|
|
<div class="form-row">
|
|
<div class="col-md">
|
|
<div class="form-group mb-1">
|
|
@Html.DropDownListFor(m => m.SelectedFilterItemId, Model.QbFilterItems, new { id = "qb-filter-select", @class = "custom-select", onchange = "qbFilterSelectionChange()" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@* ----- Klient ----- *@
|
|
<div class="mt-3">
|
|
<div class="form-row">
|
|
<div class="col-md">
|
|
<div class="mt-3" id="customer-selection-container">
|
|
@Html.PopupWithSearchForIFilterables(Model.Customers, "onQBCustomerDropdownItemClick", null, Model.SelectedCustomer?.DetailDescription, "qb-customer-popup", false)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@* ----- Team ----- *@
|
|
<div class="mt-3">
|
|
<div class="form-row">
|
|
<div class="col-md">
|
|
<div class="mb-1 d-none" id="team-selection-container">
|
|
@Html.PopupWithSearchForIFilterables(Model.AllTeams, "onQBTeamDropdownItemClick", null, Model.SelectedTeam?.DetailDescription, "qb-team-popup", false)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-3">
|
|
<div class="form-row">
|
|
<div class="col-xl">
|
|
<div class="form-group mb-1">
|
|
@* Nur für ausgewählten Mitarbeiter *@
|
|
<div class="custom-control custom-checkbox custom-control-inline">
|
|
@Html.CheckBoxFor(m => m.IsForSelectedEmployeesOnly, new { onchange = "setIsOnlyForSelectedEmployee()", @class = "custom-control-input", id = "selected-employee-cb", data_toggle = "collapse", data_target = "#employee-select-container" })
|
|
<label class="custom-control-label" for="selected-employee-cb">Nur für ausgewählten Mitarbeiter</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-group mb-1 collapse" id="employee-select-container">
|
|
@Html.PopupWithSearchForIFilterables(Model.Employees, "setReportEmployee", null, Model.SelectedEmployee?.DetailDescription, "qb-employee-popup", false)
|
|
</div>
|
|
</div>
|
|
<div class="col-xl">
|
|
<div class="form-group mb-1">
|
|
@* Nur für ausgewählten Kostenträger *@
|
|
<div class="custom-control custom-checkbox custom-control-inline">
|
|
@Html.CheckBoxFor(m => m.IsForSelectedCostbearersOnly, new { id = "selected-organisation-cb", @class = "custom-control-input", onchange = "setIsOnlyForSelectedOrganisation()", data_toggle = "collapse", data_target = "#organisation-select-container" })
|
|
<label class="custom-control-label" for="selected-organisation-cb">Nur für ausgewählten Kostenträger</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-group mb-1 collapse" id="organisation-select-container">
|
|
@Html.PopupWithSearchForIFilterables(Model.Organisations, "setReportOrganization", null, Model.SelectedOrganisation?.DetailDescription, "qb-organization-popup", false)
|
|
</div>
|
|
</div>
|
|
<div class="col-xl">
|
|
<div class="form-group mb-1">
|
|
@* Nur für ausgewählte Leistungskategorie *@
|
|
<div class="custom-control custom-checkbox custom-control-inline">
|
|
@Html.CheckBoxFor(m => m.IsForSelectedCategoryOnly, new { id = "selected-category-cb", @class = "custom-control-input", onchange = "setIsOnlyForSelectedServiceCategory()", data_toggle = "collapse", data_target = "#test-div3" })
|
|
<label class="custom-control-label" for="selected-category-cb">Nur für ausgewählte Leistungskategorie</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-group mb-1 collapse" id="test-div3">
|
|
@Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryItems, new { id = "category-select", @class = "custom-select", onchange = "setReportServiceCategory()" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-3">
|
|
<div class="form-row">
|
|
<div class="col-lg-5">
|
|
<div class="form-group mb-1">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<div class="input-group-text sm-report-prepend-input-group-text">
|
|
Monat
|
|
</div>
|
|
</div>
|
|
@Html.DropDownListFor(m => m.SelectedMonth, Model.Months, new { id = "month-select", onchange = "onMonthOrYearChange()", @class = "custom-select" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-2">
|
|
<div class="form-group mb-1">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<div class="input-group-text sm-report-prepend-input-group-text">
|
|
Vom
|
|
</div>
|
|
</div>
|
|
@Html.DropDownListFor(m => m.SelectedStartDay, Model.Days, new { id = "start-day-select", onchange = "checkForExistingSignature()", @class = "custom-select" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-2">
|
|
<div class="form-group mb-1">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<div class="input-group-text sm-report-prepend-input-group-text">
|
|
Bis
|
|
</div>
|
|
</div>
|
|
@Html.DropDownListFor(m => m.SelectedEndDay, Model.Days, new { id = "end-day-select", onchange = "checkForExistingSignature()", @class = "custom-select" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-3">
|
|
<div class="form-group mb-1">
|
|
<div class="input-group">
|
|
<div class="input-group-prepend">
|
|
<div class="input-group-text sm-report-prepend-input-group-text">
|
|
Jahr
|
|
</div>
|
|
</div>
|
|
@Html.DropDownListFor(m => m.SelectedYear, Model.Years, new { id = "year-select", onchange = "onMonthOrYearChange()", @class = "custom-select" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@* Info-, Erstellen- und Vorschau-Buttons *@
|
|
<div class="clearfix mt-3">
|
|
<button type="button" class="btn btn-info float-left" data-toggle="modal" data-target="#qb-info-popup">
|
|
<span class="fas fa-info"></span>
|
|
</button>
|
|
|
|
<button type="button" class="btn btn-primary float-right" id="create-button" onclick="createServiceOverview()">Erstellen</button>
|
|
|
|
@using(Html.BeginForm("LoadQuittierungsbeleg", "Report", FormMethod.Post, new { id = "load-report-form" }))
|
|
{
|
|
<button type="button" class="btn btn-primary float-right mr-2" onclick="previewQBReport()">
|
|
<span class="fas fa-file-alt"></span>
|
|
Vorschau
|
|
</button>
|
|
}
|
|
</div>
|
|
</div>
|
|
<div class="col col-12" id="report-signatures-container">
|
|
@Html.Partial("QuittierungsbelegsResultPartial", Model)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Container für die Mitarbeiterunterschrift -->
|
|
<div class="container-fluid d-none my-3 lg-max-width" id="report-signature-container">
|
|
|
|
</div>
|
|
<!-- /Container für die Mitarbeiterunterschrift -->
|
|
|
|
<!-- Container für die Unterschrift -->
|
|
<div class="container-fluid d-none my-3 lg-max-width" id="report-signature-container-div">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col">
|
|
<h4 class="d-inline" id="report-info-column-h4">Unterschrift</h4>
|
|
<button type="button" class="btn btn-primary float-right" id="cancel-report-signature-button">
|
|
<span class="fas fa-times-circle"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div id="signature-container-div" class="mt-4">
|
|
|
|
</div>
|
|
<div class="row mt-3 signingContent">
|
|
<div class="col">
|
|
<div class="alert alert-primary d-none" role="alert" id="overwriting-signature-alert">
|
|
Achtung, Sie sind dabei eine vorhandene Unterschrift zu ersetzen!
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row mt-3 signingContent" id="report-canvas-row-div">
|
|
<div class="canvas-container" id="canvas-container-div">
|
|
<canvas id="report-sketch-pad-canvas" width="500" height="200" style="border: 1px solid #343A40;" class="bg-white rounded"></canvas>
|
|
</div>
|
|
</div>
|
|
<div class="row signingContent">
|
|
<div class="col-12">
|
|
<button type="button" class="btn btn-primary float-right" id="save-report-signature-button">Speichern</button>
|
|
<button type="button" class="btn btn-secondary float-right mr-3" id="clear-report-canvas-button">Neu</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- /Container für die Unterschrift -->
|
|
|
|
<!-- Popup der Legende -->
|
|
<div class="modal" tabindex="-1" role="dialog" id="qb-info-popup">
|
|
<div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title text-danger font-weight-bold">Legende</h5>
|
|
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body" style="background-color: #F7F7F7 !important">
|
|
<button type="button" class="btn btn-bewo-customers d-inline">
|
|
<span class="fas fa-signature"></span>
|
|
<span class="fa-stack align-middle bg-dark" style="height: auto !important">
|
|
<i class="fas fa-check fa-stack-1x"></i>
|
|
<i class="fas fa-slash fa-stack-1x text-danger"></i>
|
|
</span>
|
|
K
|
|
</button>
|
|
/
|
|
<button type="button" class="btn btn-bewo-employee d-inline">
|
|
<span class="fas fa-signature"></span>
|
|
<span class="fa-stack align-middle bg-dark" style="height: auto !important">
|
|
<i class="fas fa-check fa-stack-1x"></i>
|
|
<i class="fas fa-slash fa-stack-1x text-danger"></i>
|
|
</span>
|
|
M
|
|
</button>
|
|
- Es gibt noch keine Monatsunterschrift für alle Zeiterfassungseinträge im ausgewählten Zeitraum; Es wird keine Unterschrift auf dem Quittierungsbeleg angezeigt.
|
|
|
|
<br />
|
|
<br />
|
|
|
|
<button type="button" class="btn btn-bewo-customers d-inline">
|
|
<span class="fas fa-signature"></span>
|
|
<span class="fas fa-check-double" style="color: greenyellow !important"></span>
|
|
K
|
|
</button>
|
|
/
|
|
<button type="button" class="btn btn-bewo-employee d-inline">
|
|
<span class="fas fa-signature"></span>
|
|
<span class="fas fa-check-double" style="color: greenyellow !important"></span>
|
|
M
|
|
</button>
|
|
- Alle Zeiterfassungseinträge haben eine Monatsunterschrift; Die Unterschrift wird auf dem Quittierungsbeleg angezeigt.
|
|
|
|
<br />
|
|
<br />
|
|
|
|
<button type="button" class="btn btn-bewo-employee d-inline">
|
|
<span class="fas fa-signature"></span>
|
|
<span class="fas fa-ban" style="color: tomato;"></span>
|
|
M
|
|
</button>
|
|
- Es wurden die von Ihnen geleisteten Zeiterfassungseinträge unterschrieben. Es fehlen jedoch die Unterschriften der anderen Mitarbeiter, für die das Recht "Unterschriften für den Quittierungsbeleg stellvertretend leisten (monatlich)" notwendig wäre.
|
|
|
|
<br />
|
|
<hr />
|
|
|
|
<p><span class="fas fa-check text-bewo-customers"></span> - Dieser Zeiterfassungseintrag hat vom Klienten eine Monatsunterschrift.</p>
|
|
<p><span class="fas fa-check text-bewo-employee"></span> - Dieser Zeiterfassungseintrag hat vom Mitarbeiter eine Monatsunterschrift.</p>
|
|
|
|
<p>
|
|
<span class="fa-stack fa-1x text-secondary">
|
|
<i class="fas fa-signature fa-stack-1x"></i>
|
|
<i class="fas fa-ban fa-stack-2x"></i>
|
|
</span>
|
|
- Dieser Zeiterfassungseinträge kann von Ihnen nicht unterschrieben werden, da Ihnen das dazu notwendige Recht "Unterschriften für den Quittierungsbeleg stellvertretend leisten (monatlich)." fehlt.
|
|
</p>
|
|
|
|
<br />
|
|
<hr />
|
|
|
|
<p>Um einen Quittierungsbeleg aus der Vorschau herunterzuladen, klicken oder tippen Sie auf den Bericht. Dann erscheint ein Button zur Formatsauswahl.</p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<div class="clearfix">
|
|
<button class="btn btn-primary float-right" type="button" data-dismiss="modal">Schließen</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- /Popup der Legende -->
|
|
|
|
<!-- Popup des Quittierungsbelegsdokuments -->
|
|
<div class="modal" tabindex="-1" data-backdrop="static" role="dialog" id="qb-report-popup">
|
|
<div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header py-1">
|
|
<p class="modal-title font-weight-bold">Quittierungsbeleg</p>
|
|
<button class="close" type="button" data-dismiss="modal" aria-label="close" onclick="resetQuittierungsbeleg()">
|
|
<span>×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body" id="qb-container">
|
|
@if(Model.QuittierungsbelegsReportObject != null)
|
|
{
|
|
@Html.Partial("QuittierungsbelegsPreviewPartial", Model)
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- /Popup des Quittierungsbelegsdokuments --> |