Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -1924,12 +1924,12 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AiChatDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AiSettingsDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CheckObjectDeletionResultDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.ConfirmationReceiptSignatureDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ConfirmationReceiptSignatureDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.DienstvertretungDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.DienstEintragDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.DienstEintragDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.DienstvertretungDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.ConfirmationReceiptSignatureDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ConfirmationReceiptSignatureDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.VorlagentabelleDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.VorlagentabelleDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.DokumentvorlageDC))]
|
||||
@@ -5825,12 +5825,12 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AiChatDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AiSettingsDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CheckObjectDeletionResultDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.ConfirmationReceiptSignatureDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ConfirmationReceiptSignatureDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.DienstvertretungDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.DienstEintragDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.DienstEintragDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.DienstvertretungDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.ConfirmationReceiptSignatureDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ConfirmationReceiptSignatureDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.VorlagentabelleDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.VorlagentabelleDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.DokumentvorlageDC))]
|
||||
@@ -6106,7 +6106,7 @@ namespace BeWo.ServiceProxy
|
||||
"loyeeAndCustomerResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/HasConfirmationReceiptSignatureByDateAndEmp" +
|
||||
"loyeeAndCustomerBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
|
||||
bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(long customerOid, long employeeOid, System.DateTime start, System.DateTime end);
|
||||
bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(out System.Collections.Generic.List<BS.Shared.DataContracts.ConfirmationReceiptSignatureDC> confirmationReceiptSignatures, long customerOid, long employeeOid, System.DateTime start, System.DateTime end, long costBearer2SupportConceptOid);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/DeleteDienstvertretung2", ReplyAction="http://tempuri.org/IOperationsService/DeleteDienstvertretung2Response")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/DeleteDienstvertretung2BeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
|
||||
@@ -7686,9 +7686,9 @@ namespace BeWo.ServiceProxy
|
||||
return base.Channel.CheckObjectDeletionAllowed(objectoid, tableId);
|
||||
}
|
||||
|
||||
public bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(long customerOid, long employeeOid, System.DateTime start, System.DateTime end)
|
||||
public bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(out System.Collections.Generic.List<BS.Shared.DataContracts.ConfirmationReceiptSignatureDC> confirmationReceiptSignatures, long customerOid, long employeeOid, System.DateTime start, System.DateTime end, long costBearer2SupportConceptOid)
|
||||
{
|
||||
return base.Channel.HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(customerOid, employeeOid, start, end);
|
||||
return base.Channel.HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(out confirmationReceiptSignatures, customerOid, employeeOid, start, end, costBearer2SupportConceptOid);
|
||||
}
|
||||
|
||||
public bool DeleteDienstvertretung2(long empId, long wohnId, int zeile, System.DateTime date, BS.Shared.DataContracts.DienstvertretungDC dienstvertretung, System.Collections.Generic.List<BS.Shared.DataContracts.DienstEintragDC> alleDiensteintraege, System.Collections.Generic.List<BS.Shared.DataContracts.DienstvertretungDC> alleDienstvertretungen, int day, System.DateTime pflichtStart, System.DateTime pflichtEnde)
|
||||
|
||||
@@ -182,8 +182,9 @@ textarea {
|
||||
|
||||
.service-record-table {
|
||||
table-layout: auto;
|
||||
margin-right: -15px;
|
||||
margin-left: -15px;
|
||||
width: 100%;
|
||||
/*margin-right: -15px;
|
||||
margin-left: -15px;*/
|
||||
}
|
||||
|
||||
.service-record-table tr td:first-child {
|
||||
|
||||
11673
BeWoPlanerMobil/Content/style.csss
Normal file
11673
BeWoPlanerMobil/Content/style.csss
Normal file
File diff suppressed because one or more lines are too long
1
BeWoPlanerMobil/Content/style.csss.map
Normal file
1
BeWoPlanerMobil/Content/style.csss.map
Normal file
File diff suppressed because one or more lines are too long
@@ -210,8 +210,9 @@ $font-family-sans-serif: 'Signika Negative', sans-serif;
|
||||
|
||||
.service-record-table {
|
||||
table-layout: auto;
|
||||
margin-right: -15px;
|
||||
margin-left: -15px;
|
||||
/*margin-right: -15px;
|
||||
margin-left: -15px;*/
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.service-record-table tr td:first-child {
|
||||
|
||||
@@ -30,7 +30,6 @@ using FormCollection = System.Web.Mvc.FormCollection;
|
||||
using GoalRating = BeWoPlanerMobil.Util.GoalRating;
|
||||
using Image = System.Drawing.Image;
|
||||
using ServiceRecordDC = BS.Shared.DataContracts.ServiceRecordDC;
|
||||
using BeWo.Data.Entities;
|
||||
|
||||
/*
|
||||
* ToDo: Bug, wenn man auf "bearbeiten" bei einem Eintrag klickt, wird die Leistung nicht geladen
|
||||
@@ -2493,7 +2492,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
var result = OperationsService.ValidateServiceRecord(sr, null, maxDaysEditSRsAllowed, employeeOids, costBearer2SupportConceptOids);
|
||||
dateRangeString = rel.DateRangeString;
|
||||
|
||||
validationResults.Add(new ServiceRecord2Validation(sr, result, dateRangeString));
|
||||
validationResults.AddIfNotIn(new ServiceRecord2Validation(sr, result, dateRangeString));
|
||||
}
|
||||
}
|
||||
else if(serviceRecordGroup != null)
|
||||
@@ -2511,7 +2510,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
var node = CreateFlatSupportConceptItem(CustomerService.LoadCompactSupportConceptDC(sr.SupportConcept.SupportConceptOid, Model.SelectedEmployee.EmployeeOid), null);
|
||||
dateRangeString = node?.SupportConceptTreeNodeDC != null ? node.SupportConceptTreeNodeDC.SupportConceptCostBearerRelDC.DateRangeString : string.Empty;
|
||||
|
||||
validationResults.Add(new ServiceRecord2Validation(sr, result, dateRangeString));
|
||||
validationResults.AddIfNotIn(new ServiceRecord2Validation(sr, result, dateRangeString));
|
||||
}
|
||||
}
|
||||
} // Einzelbuchung
|
||||
@@ -2524,7 +2523,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
var result = OperationsService.ValidateServiceRecord(checkServiceRecord, stats, maxDaysEditSRsAllowed, null, null);
|
||||
validationResults.Add(new ServiceRecord2Validation(checkServiceRecord, result, dateRangeString ?? ""));
|
||||
validationResults.AddIfNotIn(new ServiceRecord2Validation(checkServiceRecord, result, dateRangeString ?? ""));
|
||||
} // Mehrfachbuchung
|
||||
else if(Model.IsInMultiBookingMode && !Model.IsInGroupBookingMode)
|
||||
{
|
||||
@@ -2551,7 +2550,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
var multiBookingValidationResults = OperationsService.ValidateServiceRecord(prototype, null, maxDaysEditSRsAllowed, employeeOids, cb2ScOids);
|
||||
|
||||
validationResults.Add(new ServiceRecord2Validation(prototype, multiBookingValidationResults, dateRangeString));
|
||||
validationResults.AddIfNotIn(new ServiceRecord2Validation(prototype, multiBookingValidationResults, dateRangeString));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2693,7 +2692,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
klient3 = "Klient " + vr.CustomerName;
|
||||
}
|
||||
|
||||
newResult.Message += $"Für den ausgewählten Zeitraum existiert bereits eine Monatsunterschrift bei {klient3}, die mit dem Anliegen dieses Eintrags verfällt und neu geleistet werden muss.<br /><br />";
|
||||
newResult.Message += $"Für den ausgewählten Zeitraum existiert bereits eine Monatsunterschrift bei {klient3}, die mit dem Anlegen dieses Eintrags verfällt und neu geleistet werden muss.<br /><br />";
|
||||
|
||||
exitLoop = false;
|
||||
newResult.KannTrotzdemGespeichertWerden = true;
|
||||
|
||||
@@ -706,7 +706,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
(Model.Customers.FirstOrDefault(f => f.CustomerOid.Equals(signature.CustomerOid))?.LastNameFirstName ?? "unbekannt") :
|
||||
signature.Employee.SimpleDescription;
|
||||
|
||||
result.AddIfNotIn(new ConfirmationReceiptSignatureObject(img, date, personName, signature.SignatureType == SignatureType.Employee, signature.ServiceRecords.Count));
|
||||
result.AddIfNotIn(new ConfirmationReceiptSignatureObject(img, date, personName, signature.SignatureType == SignatureType.Employee, signature.ServiceRecords));
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -1317,14 +1317,16 @@ namespace BeWoPlanerMobil.Controllers
|
||||
public string PersonName { get; }
|
||||
public bool IsEmployeeSignature { get; }
|
||||
public int NumberOfServiceRecords { get; }
|
||||
public List<ServiceRecordDC> ServiceRecords { get; }
|
||||
|
||||
public ConfirmationReceiptSignatureObject(string imageStr, string insTsStr, string personName, bool isEmployeeSignature, int numberOfServiceRecords)
|
||||
public ConfirmationReceiptSignatureObject(string imageStr, string insTsStr, string personName, bool isEmployeeSignature, List<ServiceRecordDC> serviceRecords)
|
||||
{
|
||||
ImageStr = imageStr;
|
||||
InsTsStr = insTsStr;
|
||||
PersonName = personName;
|
||||
IsEmployeeSignature = isEmployeeSignature;
|
||||
NumberOfServiceRecords = numberOfServiceRecords;
|
||||
NumberOfServiceRecords = serviceRecords.Count;
|
||||
ServiceRecords = serviceRecords;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using BeWoPlanerMobil.Models;
|
||||
using BeWoPlanerMobil.Util.MoKExtensions;
|
||||
using BS.Shared.DataContracts.ClientPartials;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
@@ -299,5 +300,12 @@ namespace BeWoPlanerMobil.Util
|
||||
|
||||
return dictionary[id] ? "show" : string.Empty;
|
||||
}
|
||||
|
||||
public static string GetCollapsibleChevron(this HtmlHelper htmlHelper, AbstractModel model, string id)
|
||||
{
|
||||
model.Collapsibles2IsShown.TryGetValue(id, out var isShown);
|
||||
|
||||
return isShown ? "fa-chevron-up" : "fa-chevron-down";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -128,7 +128,7 @@
|
||||
</div>
|
||||
<input type="text" class="input-group-text px-1 form-control text-left pointer-element no-focus-outline no-selection" value="@folder.Name" readonly onclick="toggleFolderIcon(this)"/>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-primary rounded-right border-dark" data-toggle="dropdown">
|
||||
<button class="btn btn-primary rounded-right border-primary" data-toggle="dropdown">
|
||||
<i class="fas fa-ellipsis-v"></i>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
|
||||
@@ -14,31 +14,19 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
function setSelectedServiceDescription(serviceDescriptionOid) {
|
||||
try {
|
||||
$.get("@Url.Action("SetServiceDescription")", {pServiceDescriptionOid: serviceDescriptionOid});
|
||||
} catch (error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
$.get("@Url.Action("SetServiceDescription")", {pServiceDescriptionOid: serviceDescriptionOid});
|
||||
}
|
||||
|
||||
function setSelectedServiceCategory() {
|
||||
try {
|
||||
var selectedCategoryOid = $("#category-select").find(":selected").val();
|
||||
const selectedCategoryOid = $("#category-select").find(":selected").val();
|
||||
|
||||
$("#category-to-description-container").load("@Url.Action("SetSelectedServiceCategory")", {categoryOidStr: selectedCategoryOid}, function() {
|
||||
$("#tree").load("@Url.Action("LoadUpToDateTextModules")");
|
||||
});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
$("#category-to-description-container").load("@Url.Action("SetSelectedServiceCategory")", {categoryOidStr: selectedCategoryOid}, function() {
|
||||
$("#tree").load("@Url.Action("LoadUpToDateTextModules")");
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
try {
|
||||
calcPrependWidth();
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
window.calcPrependWidth();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -50,8 +38,8 @@
|
||||
<!-- Kategorie -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="form-group mt-2 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Kategorie
|
||||
@@ -80,7 +68,7 @@
|
||||
<!-- Leistung -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="form-group mt-2 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
|
||||
@@ -93,24 +93,24 @@
|
||||
}
|
||||
|
||||
<div class="mt-3">
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="alert alert-danger collapse" role="alert" id="form-alert">
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="alert alert-danger collapse" role="alert" id="form-alert">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@* Hilfepläne und Mitarbeiter *@
|
||||
<div id="groupbooking-selection-container">
|
||||
@Html.Partial("GroupBookingSelectionPartial", Model)
|
||||
</div>
|
||||
|
||||
<!-- Marker -->
|
||||
@* ----- Marker ----- *@
|
||||
@if(Model.ShowMarker)
|
||||
{
|
||||
var markerCheckedValue = Model.SelectedServiceRecord?.ServiceRecordType == ServiceRecordTypeId.Content ? "checked" : string.Empty;
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-row mt-2">
|
||||
<div class="col-md">
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox" class="custom-control-input" name="marker-cb" id="marker-cb" @markerCheckedValue />
|
||||
@@ -129,9 +129,9 @@
|
||||
betrag = Model.SelectedServiceRecord.Betrag.Value.ToString("#.00");
|
||||
}
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-row mt-2">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
@@ -149,17 +149,13 @@
|
||||
}
|
||||
|
||||
@* Trennstrich *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<hr />
|
||||
</div>
|
||||
</div>
|
||||
<hr class="py-0 mt-2 mb-0" />
|
||||
|
||||
@* Start- und Enddatum *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="start-date-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="start-date-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Startdatum
|
||||
@@ -178,8 +174,8 @@
|
||||
@if(Model.IsEndDateVisible)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="end-date-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="end-date-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Enddatum
|
||||
@@ -225,8 +221,8 @@
|
||||
|
||||
@* Von *@
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="start-time-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="start-time-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text sm-prepend-input-group-text">
|
||||
Von
|
||||
@@ -244,8 +240,8 @@
|
||||
|
||||
@* Bis *@
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="end-time-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="end-time-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text sm-prepend-input-group-text">
|
||||
Bis
|
||||
@@ -265,8 +261,8 @@
|
||||
@* Dauer und Stunden/Minuten-Auswahl *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group mt-2">
|
||||
<div class="input-group-prepend">
|
||||
@{
|
||||
var labelText = Model.EinheitZeiterfassung == 1 ? "Dauer (h)" : "Dauer";
|
||||
@@ -279,7 +275,7 @@
|
||||
@if(Model.IsZeiterfassungInStdMin)
|
||||
{
|
||||
<div class="input-group-append">
|
||||
<button id="hours-minutes-dropdown-btn" class="btn btn-outline-primary dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
<button id="hours-minutes-dropdown-btn" class="btn btn-outline-primary dropdown-toggle" type="button" data-toggle="dropdown">
|
||||
@Model.SelectedDurationUnit
|
||||
</button>
|
||||
<div class="dropdown-menu w-100">
|
||||
@@ -298,8 +294,8 @@
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group mt-2">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">Gefahrene Kilometer</div>
|
||||
</div>
|
||||
@@ -315,14 +311,14 @@
|
||||
{
|
||||
<div class="form-row" id="textmodule-container">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control mt-3" data-toggle="modal" data-target="#textbausteine-popup" id="textbausteine-button">Textbausteine</button>
|
||||
<button type="button" class="btn btn-primary form-control mt-2" data-toggle="modal" data-target="#textbausteine-popup" id="textbausteine-button">Textbausteine</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@* Dokumentation *@
|
||||
<div class="form-row">
|
||||
<div class="col-md mt-3">
|
||||
<div class="col-md mt-2">
|
||||
@if(Model.NumberOfDokuTypes == 0)
|
||||
{
|
||||
<div class="form-group">
|
||||
@@ -359,7 +355,7 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="d-flex bd-highlight mt-2">
|
||||
<div class="mr-auto bd-highlight">
|
||||
@* dient nur als Abstandshalter *@
|
||||
</div>
|
||||
|
||||
@@ -19,33 +19,29 @@
|
||||
});
|
||||
|
||||
$(".hours-minutes-link").on("click", function () {
|
||||
var previousText = $("#hours-minutes-dropdown-btn").data("text");
|
||||
var currentText = $(this).text().replaceAll(/\s/g, "");
|
||||
const previousText = $("#hours-minutes-dropdown-btn").data("text");
|
||||
const currentText = $(this).text().replaceAll(/\s/g, "");
|
||||
|
||||
if(previousText === currentText) {
|
||||
return;
|
||||
}
|
||||
|
||||
var buttonText = $(this).text();
|
||||
const buttonText = $(this).text();
|
||||
$("#hours-minutes-dropdown-btn").text(buttonText);
|
||||
|
||||
setInputFilter('duration', 'distance', 'hours-minutes-dropdown-btn');
|
||||
window.setInputFilter('duration', 'distance', 'hours-minutes-dropdown-btn');
|
||||
|
||||
$.get('@Url.Action("ToggleDurationUnit")', { isInHoursMode: buttonText === "Stunden" });
|
||||
|
||||
calculateDuration(true, 'start-time', 'end-time', 'duration', 'hours-minutes-dropdown-btn', 'start-date-picker', 'end-date-picker', false, false);
|
||||
});
|
||||
|
||||
calcPrependWidth();
|
||||
window.calcPrependWidth();
|
||||
});
|
||||
|
||||
function resetGroupBookingForm() {
|
||||
try {
|
||||
showSpinner();
|
||||
$("#reset-group-booking-form-form").submit();
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
showSpinner();
|
||||
$("#reset-group-booking-form-form").submit();
|
||||
}
|
||||
|
||||
function addEmployeeToGroupBooking() {
|
||||
@@ -54,12 +50,12 @@
|
||||
var oidString = "";
|
||||
|
||||
$("#group-booking-employee-selection-popup input:checked").each(function() {
|
||||
var oid = $(this).val();
|
||||
const oid = $(this).val();
|
||||
|
||||
selectedEmployees.push(oid);
|
||||
selectedEmployees.push(oid);
|
||||
});
|
||||
|
||||
for(var i = 0; i < selectedEmployees.length; i++) {
|
||||
for(let i = 0; i < selectedEmployees.length; i++) {
|
||||
oidString += selectedEmployees[i];
|
||||
|
||||
if(i < selectedEmployees.length - 1) {
|
||||
@@ -91,7 +87,7 @@
|
||||
|
||||
@* ----- (Gruppenbuchung) Hilfeplan- und Gruppenauswahl Popup ----- *@
|
||||
<div class="modal" data-backdrop="static" tabindex="-1" role="dialog" id="group-booking-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title font-weight-bold">Gruppen und Hilfepläne für Gruppenbuchung</h5>
|
||||
@@ -114,7 +110,7 @@
|
||||
|
||||
@* ----- (Gruppenbuchung) Mitarbeiterauswahl Popup ----- *@
|
||||
<div class="modal" tabindex="-1" role="dialog" id="group-booking-employee-selection-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title font-weight-bold">Mitarbeiter hinzufügen</h5>
|
||||
|
||||
@@ -22,39 +22,42 @@
|
||||
@* (Gruppenbuchung) Ausgewählte Hilfepläne *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-cb2sc-list">
|
||||
@foreach(var selectedCb2ScRelation in Model.GroupBookingSelectionObject.SelectedRelations)
|
||||
{
|
||||
<div class="list-group-item bg-bewo-task-red" id="relation-item-@selectedCb2ScRelation.Value">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<span class="text-light">
|
||||
@selectedCb2ScRelation.Text1
|
||||
<br />
|
||||
<span class="@selectedCb2ScRelation.TextColor small">
|
||||
@selectedCb2ScRelation.Text2
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-auto my-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="window.removeSupportConceptCostBearerRel(@selectedCb2ScRelation.Value)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group my-0">
|
||||
@if(Model.GroupBookingSelectionObject.SelectedRelations.Any())
|
||||
{
|
||||
<div class="list-group mt-2" id="selected-cb2sc-list">
|
||||
@foreach(var selectedCb2ScRelation in Model.GroupBookingSelectionObject.SelectedRelations)
|
||||
{
|
||||
<div class="list-group-item bg-bewo-task-red" id="relation-item-@selectedCb2ScRelation.Value">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<span class="text-light">
|
||||
@selectedCb2ScRelation.Text1
|
||||
<br/>
|
||||
<span class="@selectedCb2ScRelation.TextColor small">
|
||||
@selectedCb2ScRelation.Text2
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-auto my-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="window.removeSupportConceptCostBearerRel(@selectedCb2ScRelation.Value)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* Mitarbeiterauswahl-Button *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<button type="button" class="btn btn-bewo-employee btn-block" data-toggle="modal" data-target="#group-booking-employee-selection-popup" id="employees-button">
|
||||
<div class="form-group my-0">
|
||||
<button type="button" class="btn btn-bewo-employee btn-block mt-2" data-toggle="modal" data-target="#group-booking-employee-selection-popup" id="employees-button">
|
||||
Mitarbeiter hinzufügen <span class="badge badge-light text-primary" id="selected-employees-count-badge">@Model.GroupBookingSelectedEmployees.Count</span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -64,16 +67,16 @@
|
||||
@* Ziele *@
|
||||
@if((Model.GroupBookingSelectedSupportConcepts?.Any() ?? false) && Model.GroupBookingSelectedSupportConcepts.Any(sc => sc.Goals.Any()))
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="form-row my-0">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control my-3" data-toggle="modal" data-target="#goal-popup" id="goals-button">
|
||||
<button type="button" class="btn btn-primary form-control mt-2" data-toggle="modal" data-target="#goal-popup" id="goals-button">
|
||||
Ziele <span class="badge badge-light text-primary">@Model.SelectedGoals.Count</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="collapse w-100 mt-1 max-vw-50 @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "goals-container")" id="goals-container"></div>
|
||||
<div class="collapse w-100 mt-2 max-vw-50 @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "goals-container")" id="goals-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -805,7 +805,7 @@
|
||||
@{
|
||||
var validationMessage = TempData[MobileUtils.TempDataServiceRecordValidationKey] as ValidationResult;
|
||||
var formId = TempData[MobileUtils.TempDataFormIdKey];
|
||||
|
||||
// ToDo: Bei Klick auf Abbrechen den EditModus zurücksetzen
|
||||
if(validationMessage != null)
|
||||
{
|
||||
<div class="modal modal-open" data-backdrop="static" tabindex="-1" role="dialog" id="service-record-validation-message-modal">
|
||||
@@ -821,7 +821,7 @@
|
||||
@Html.Raw(validationMessage.Message)
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@if(validationMessage.KannTrotzdemGespeichertWerden)
|
||||
@if (validationMessage.KannTrotzdemGespeichertWerden)
|
||||
{
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal" onclick="showSpinner(); $('#@formId').submit();">OK</button>
|
||||
}
|
||||
@@ -830,7 +830,24 @@
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal" onclick="loadServiceRecords()">OK</button>
|
||||
}
|
||||
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="loadServiceRecords()">Schließen</button>
|
||||
@if (Model.IsInEditingMode)
|
||||
{
|
||||
using(Html.BeginForm("ResetEditingMode", "Main", FormMethod.Post))
|
||||
{
|
||||
<button type="submit" class="btn btn-primary" onclick="showSpinner()">Schließen</button>
|
||||
}
|
||||
}
|
||||
else if (TempData[TempDataConstants.IsInTransferModeKey] is bool isInTransferMode && isInTransferMode)
|
||||
{
|
||||
using(Html.BeginForm("ResetTransferMode", "Main", FormMethod.Post))
|
||||
{
|
||||
<button type="submit" class="btn btn-primary" onclick="showSpinner()">Schließen</button>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="loadServiceRecords()">Schließen</button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
@* Marker *@
|
||||
@if(Model.ShowMarker)
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="form-row mt-2">
|
||||
<div class="col-md">
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox" class="custom-control-input" name="marker-cb" id="mb-marker-cb" />
|
||||
@@ -93,9 +93,9 @@
|
||||
@* ----- Betrag ----- *@
|
||||
@if(Model.ShowBetrag)
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="form-row mt-2">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
@@ -112,18 +112,14 @@
|
||||
</div>
|
||||
}
|
||||
|
||||
@* Trennlinie *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<hr />
|
||||
</div>
|
||||
</div>
|
||||
@* Trennstrich *@
|
||||
<hr class="py-0 mt-2 mb-0" />
|
||||
|
||||
@* Start- und Enddatum *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="mb-start-date-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="mb-start-date-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Startdatum
|
||||
@@ -142,8 +138,8 @@
|
||||
@if(Model.IsEndDateVisible)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="mb-end-date-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="mb-end-date-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Enddatum
|
||||
@@ -189,8 +185,8 @@
|
||||
}
|
||||
}
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="mb-start-time-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="mb-start-time-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text sm-prepend-input-group-text">
|
||||
Von
|
||||
@@ -206,8 +202,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="mb-end-time-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="mb-end-time-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text sm-prepend-input-group-text">
|
||||
Bis
|
||||
@@ -227,8 +223,8 @@
|
||||
@* Dauer und Stunden/Minuten-Auswahl *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group mt-2">
|
||||
<div class="input-group-prepend">
|
||||
@{
|
||||
var labelText = Model.EinheitZeiterfassung == 1 ? "Dauer (h)" : "Dauer";
|
||||
@@ -260,8 +256,8 @@
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group mt-2">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
Gefahrene Kilometer
|
||||
@@ -279,17 +275,17 @@
|
||||
{
|
||||
<div class="form-row" id="textmodule-container">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control mt-3" data-toggle="modal" data-target="#textbausteine-popup" id="mb-textbausteine-button">Textbausteine</button>
|
||||
<button type="button" class="btn btn-primary form-control mt-2" data-toggle="modal" data-target="#textbausteine-popup" id="mb-textbausteine-button">Textbausteine</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@* Dokumentationsfelder *@
|
||||
<div class="form-row">
|
||||
<div class="col-md mt-3">
|
||||
<div class="col-md">
|
||||
@if(Model.NumberOfDokuTypes == 0)
|
||||
{
|
||||
<div class="form-group">
|
||||
<div class="form-group mt-2">
|
||||
<label for="mb-dokufeld">Dokumentation</label>
|
||||
<textarea class="form-control" autocomplete="on" name="Dokumentation6" id="mb-dokufeld">@notice0</textarea>
|
||||
</div>
|
||||
@@ -323,9 +319,9 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="d-flex bd-highlight mt-2">
|
||||
<div class="mr-auto bd-highlight">
|
||||
<!-- dient nur als Abstandshalter-->
|
||||
@* Abstandshalter *@
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
@using(Html.BeginForm("ResetMultiBookingForm", "Main", FormMethod.Post))
|
||||
|
||||
@@ -14,107 +14,93 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
try {
|
||||
$("#mb-hours-minutes-dropdown-btn").on("click",
|
||||
function() {
|
||||
$("#mb-hours-minutes-dropdown-btn").data("text", $("#mb-hours-minutes-dropdown-btn").text().replaceAll(/\s/g, ""));
|
||||
});
|
||||
$("#mb-hours-minutes-dropdown-btn").on("click",
|
||||
function() {
|
||||
$("#mb-hours-minutes-dropdown-btn").data("text", $("#mb-hours-minutes-dropdown-btn").text().replaceAll(/\s/g, ""));
|
||||
});
|
||||
|
||||
$(".hours-minutes-link").on("click",
|
||||
function() {
|
||||
var previousText = $("#mb-hours-minutes-dropdown-btn").data("text");
|
||||
var currentText = $(this).text().replaceAll(/\s/g, "");
|
||||
$(".hours-minutes-link").on("click",
|
||||
function() {
|
||||
const previousText = $("#mb-hours-minutes-dropdown-btn").data("text");
|
||||
const currentText = $(this).text().replaceAll(/\s/g, "");
|
||||
|
||||
if(previousText === currentText) {
|
||||
return;
|
||||
}
|
||||
if(previousText === currentText) {
|
||||
return;
|
||||
}
|
||||
|
||||
var buttonText = $(this).text();
|
||||
$("#mb-hours-minutes-dropdown-btn").text(buttonText);
|
||||
const buttonText = $(this).text();
|
||||
$("#mb-hours-minutes-dropdown-btn").text(buttonText);
|
||||
|
||||
setInputFilter('mb-duration', 'mb-distance', 'mb-hours-minutes-dropdown-btn');
|
||||
window.setInputFilter('mb-duration', 'mb-distance', 'mb-hours-minutes-dropdown-btn');
|
||||
|
||||
$.get('@Url.Action("ToggleDurationUnit")', { isInHoursMode: buttonText === "Stunden" });
|
||||
$.get('@Url.Action("ToggleDurationUnit")', { isInHoursMode: buttonText === "Stunden" });
|
||||
|
||||
calculateDuration(true, 'mb-start-time', 'mb-end-time', 'mb-duration', 'mb-hours-minutes-dropdown-btn', 'mb-start-date-picker', 'mb-end-date-picker', false, false);
|
||||
});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
calculateDuration(true, 'mb-start-time', 'mb-end-time', 'mb-duration', 'mb-hours-minutes-dropdown-btn', 'mb-start-date-picker', 'mb-end-date-picker', false, false);
|
||||
});
|
||||
});
|
||||
|
||||
function addEmployeeToMultiBooking() {
|
||||
try {
|
||||
var selectedEmployees = [];
|
||||
var selectedEmployees = [];
|
||||
|
||||
var oidString = "";
|
||||
let oidString = "";
|
||||
|
||||
$("#multi-booking-employee-selection-popup input:checked").each(function() {
|
||||
var oid = $(this).val();
|
||||
$("#multi-booking-employee-selection-popup input:checked").each(function() {
|
||||
selectedEmployees.push($(this).val());
|
||||
});
|
||||
|
||||
selectedEmployees.push(oid);
|
||||
});
|
||||
for(let i = 0; i < selectedEmployees.length; i++) {
|
||||
oidString += selectedEmployees[i];
|
||||
|
||||
for(var i = 0; i < selectedEmployees.length; i++) {
|
||||
oidString += selectedEmployees[i];
|
||||
if(i < selectedEmployees.length - 1) {
|
||||
oidString += ",";
|
||||
}
|
||||
}
|
||||
|
||||
if(i < selectedEmployees.length - 1) {
|
||||
oidString += ",";
|
||||
}
|
||||
}
|
||||
$.get("@Url.Action("AddEmployeesToMultiBooking")", { pEmployeeOids: oidString }).done(function(numberOfSelectedEmployees) {
|
||||
$("#multi-booking-selected-employees-count-badge").text(numberOfSelectedEmployees);
|
||||
|
||||
$.get("@Url.Action("AddEmployeesToMultiBooking")", { pEmployeeOids: oidString }).done(function(numberOfSelectedEmployees) {
|
||||
$("#multi-booking-selected-employees-count-badge").text(numberOfSelectedEmployees);
|
||||
|
||||
$("#multi-booking-create-button").prop("disabled", numberOfSelectedEmployees === "0" ? true : false);
|
||||
});
|
||||
} catch (error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
$("#multi-booking-create-button").prop("disabled", numberOfSelectedEmployees === "0" ? true : false);
|
||||
});
|
||||
}
|
||||
|
||||
function submitMultiBookingForm() {
|
||||
try {
|
||||
showSpinner();
|
||||
showSpinner();
|
||||
|
||||
$.get("@Url.Action("MultiBookingHasSelectedSupportConcepts")").done(function (result1) {
|
||||
if(false === checkJson(result1)) {
|
||||
logWarning("submitMultiBookingForm: Der zurückgegebene Wert ist kein gültiges JSON!");
|
||||
hideSpinner();
|
||||
return;
|
||||
}
|
||||
$.get("@Url.Action("MultiBookingHasSelectedSupportConcepts")").done(function (result1) {
|
||||
if(false === checkJson(result1)) {
|
||||
logWarning("submitMultiBookingForm: Der zurückgegebene Wert ist kein gültiges JSON!");
|
||||
hideSpinner();
|
||||
return;
|
||||
}
|
||||
|
||||
$.get("@Url.Action("MultiBookingHasSelectedEmployees")").done(function (result2) {
|
||||
if(false === checkJson(result2)) {
|
||||
logWarning("submitMultiBookingForm: Der zurückgegebene Wert ist kein gültiges JSON!");
|
||||
hideSpinner();
|
||||
return;
|
||||
}
|
||||
$.get("@Url.Action("MultiBookingHasSelectedEmployees")").done(function (result2) {
|
||||
if(false === checkJson(result2)) {
|
||||
logWarning("submitMultiBookingForm: Der zurückgegebene Wert ist kein gültiges JSON!");
|
||||
hideSpinner();
|
||||
return;
|
||||
}
|
||||
|
||||
var hasSupportConcepts = parseJason(result1);
|
||||
var hasEmployees = parseJason(result2);
|
||||
const hasSupportConcepts = parseJason(result1);
|
||||
const hasEmployees = parseJason(result2);
|
||||
|
||||
if (hasSupportConcepts && hasEmployees) {
|
||||
validateForm($("#multiBookingForm"), "mb-");
|
||||
} else {
|
||||
hideSpinner();
|
||||
var message = "";
|
||||
if (hasSupportConcepts && hasEmployees) {
|
||||
validateForm($("#multiBookingForm"), "mb-");
|
||||
} else {
|
||||
hideSpinner();
|
||||
let message = "";
|
||||
|
||||
if (!hasSupportConcepts && !hasEmployees) {
|
||||
message = "Bitte wählen Sie mindestens einen Hilfeplan und Mitarbeiter aus.";
|
||||
} else if(hasSupportConcepts && !hasEmployees) {
|
||||
message = "Bitte wählen Sie mindestens einen Mitarbeiter aus.";
|
||||
} else {
|
||||
message = "Bitte wählen Sie mindestens einen Hilfeplan aus.";
|
||||
}
|
||||
if (!hasSupportConcepts && !hasEmployees) {
|
||||
message = "Bitte wählen Sie mindestens einen Hilfeplan und Mitarbeiter aus.";
|
||||
} else if(hasSupportConcepts && !hasEmployees) {
|
||||
message = "Bitte wählen Sie mindestens einen Mitarbeiter aus.";
|
||||
} else {
|
||||
message = "Bitte wählen Sie mindestens einen Hilfeplan aus.";
|
||||
}
|
||||
|
||||
showAlertMessageBoxWithoutCallback("Speichern nicht möglich", message);
|
||||
}
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
showAlertMessageBoxWithoutCallback("Speichern nicht möglich", message);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -127,32 +113,32 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- (Mehrfachbuchung) Hilfeplan- und Gruppenauswahl Popup -->
|
||||
@* (Mehrfachbuchung) Hilfeplan- und Gruppenauswahl Popup *@
|
||||
<div class="modal" data-backdrop="static" tabindex="-1" role="dialog" id="multi-booking-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title font-weight-bold">Gruppen und Hilfepläne für Gruppenbuchung</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<nav class="nav nav-pills nav-fill">
|
||||
<a class="nav-item nav-link active" href="#multi-booking-supportconcepts" data-toggle="tab" role="tab">Hilfepläne</a>
|
||||
<a class="nav-item nav-link" href="#multi-booking-groups" data-toggle="tab" role="tab">Gruppen</a>
|
||||
</nav>
|
||||
<div class="tab-content" id="multi-booking-sc-cb-rel-tab-content">
|
||||
@Html.Partial("MultiBookingScCbRelList", Model)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title font-weight-bold">Gruppen und Hilfepläne für Gruppenbuchung</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<nav class="nav nav-pills nav-fill">
|
||||
<a class="nav-item nav-link active" href="#multi-booking-supportconcepts" data-toggle="tab" role="tab">Hilfepläne</a>
|
||||
<a class="nav-item nav-link" href="#multi-booking-groups" data-toggle="tab" role="tab">Gruppen</a>
|
||||
</nav>
|
||||
<div class="tab-content" id="multi-booking-sc-cb-rel-tab-content">
|
||||
@Html.Partial("MultiBookingScCbRelList", Model)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- (Mehrfachbuchung) Mitarbeiterauswahl Popup -->
|
||||
@* (Mehrfachbuchung) Mitarbeiterauswahl Popup *@
|
||||
<div class="modal" tabindex="-1" role="dialog" id="multi-booking-employee-selection-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title font-weight-bold">Mitarbeiter hinzufügen</h5>
|
||||
|
||||
@@ -15,46 +15,49 @@
|
||||
@* (Mehrfachbuchung) Hilfeplanauswahl-Button *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-task-red btn-block" data-toggle="modal" data-target="#multi-booking-popup" id="support-concepts-and-groups-button">Hilfepläne und Gruppen hinzufügen</button>
|
||||
<button type="button" class="btn btn-bewo-task-red btn-block" data-toggle="modal" data-target="#multi-booking-popup" id="support-concepts-and-groups-button">Hilfepläne und Gruppen hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* (Mehrfachbuchung) Ausgewählte Hilfepläne *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="mb-selected-cb2sc-list">
|
||||
@foreach(var selectedCb2ScRelation in Model.MultiBookingSelectionObject.SelectedRelations)
|
||||
{
|
||||
<div class="list-group-item bg-bewo-task-red" id="mb-relation-item-@selectedCb2ScRelation.Value">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<span>
|
||||
@selectedCb2ScRelation.Text1
|
||||
<br />
|
||||
<span class="@selectedCb2ScRelation.TextColor small">
|
||||
@selectedCb2ScRelation.Text2
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-auto my-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="window.removeSupportConceptCostBearerRel(@selectedCb2ScRelation.Value)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group my-0">
|
||||
@if(Model.MultiBookingSelectionObject.SelectedRelations.Any())
|
||||
{
|
||||
<div class="list-group mt-2" id="mb-selected-cb2sc-list">
|
||||
@foreach(var selectedCb2ScRelation in Model.MultiBookingSelectionObject.SelectedRelations)
|
||||
{
|
||||
<div class="list-group-item bg-bewo-task-red" id="mb-relation-item-@selectedCb2ScRelation.Value">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<span class="text-light">
|
||||
@selectedCb2ScRelation.Text1
|
||||
<br/>
|
||||
<span class="@selectedCb2ScRelation.TextColor small">
|
||||
@selectedCb2ScRelation.Text2
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-auto my-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="window.removeSupportConceptCostBearerRel(@selectedCb2ScRelation.Value)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* (Mehrfachbuchung) Mitarbeiterauswahl-Button *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<button type="button" class="btn btn-bewo-employee btn-block" data-toggle="modal" data-target="#multi-booking-employee-selection-popup" id="multi-booking-employees-button">
|
||||
<div class="form-group my-0">
|
||||
<button type="button" class="btn btn-bewo-employee btn-block mt-2" data-toggle="modal" data-target="#multi-booking-employee-selection-popup" id="multi-booking-employees-button">
|
||||
Mitarbeiter hinzufügen <span class="badge badge-light text-primary" id="multi-booking-selected-employees-count-badge">@Model.MultiBookingSelectedEmployees.Count</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
<div class="card w-100 @cardBackground">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-primary" id="chevron-@serviceRecord.ServiceRecordOid"></i>
|
||||
<i class="fas @Html.GetCollapsibleChevron(Model, $"collapse-service-record-{serviceRecord.ServiceRecordOid}") h-100 text-primary" id="chevron-@serviceRecord.ServiceRecordOid"></i>
|
||||
</div>
|
||||
<div class="d-inline-flex text-primary h-100">
|
||||
<button type="button" class="btn btn-link">
|
||||
@@ -260,9 +260,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, $"collapse-service-record-{serviceRecord.ServiceRecordOid}")" id="collapse-service-record-@serviceRecord.ServiceRecordOid">
|
||||
<div class="card-body">
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="card-body p-1">
|
||||
<div class="container p-0">
|
||||
<div class="row m-1 mb-2">
|
||||
@if(Model.HasRightToEditServiceRecord(serviceRecord))
|
||||
{
|
||||
using(Html.BeginForm("SelectRecordToEdit", "Main", FormMethod.Post, new { id = "select-record-to-edit-form-" + serviceRecord.ServiceRecordOid.Value }))
|
||||
@@ -329,7 +329,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table table-sm table-striped service-record-table">
|
||||
<table class="table table-sm table-striped service-record-table m-1">
|
||||
@* Dauer *@
|
||||
<tr>
|
||||
<td class="text-secondary">
|
||||
|
||||
@@ -128,23 +128,21 @@
|
||||
|
||||
if(["0", "1", "2", "3", "4"].includes(selectedOption)) {
|
||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
||||
window.loadServiceRecords();
|
||||
}
|
||||
else if(selectedOption === "5") {
|
||||
$("#last-x-interval-container").show();
|
||||
$("#custom-interval-container, #month-interval-container").hide();
|
||||
hideSpinner();
|
||||
}
|
||||
else if(selectedOption === "6") {
|
||||
$("#custom-interval-container").show();
|
||||
$("#last-x-interval-container, #month-interval-container").hide();
|
||||
hideSpinner();
|
||||
}
|
||||
else if(selectedOption === "7") {
|
||||
$("#month-interval-container").show();
|
||||
$("#last-x-interval-container, #custom-interval-container").hide();
|
||||
hideSpinner();
|
||||
}
|
||||
|
||||
window.loadServiceRecords();
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -153,15 +151,15 @@
|
||||
<div class="row">
|
||||
@* ----- Einzelbuchungsformular ----- *@
|
||||
<div class="col col-12 col-md-5">
|
||||
@if(Model != null)
|
||||
@if (Model != null)
|
||||
{
|
||||
using(Html.BeginForm("SelectSupportConcept", "Main", FormMethod.Post, new { Id = "selectSupportConceptForm", onreset = "resetSingleBookingForm()" }))
|
||||
using (Html.BeginForm("SelectSupportConcept", "Main", FormMethod.Post, new { Id = "selectSupportConceptForm", onreset = "resetSingleBookingForm()" }))
|
||||
{
|
||||
var selectedSuportConceptTimeSpanColorClass = Model.SelectedCostBearer2SupportConceptRelListObject.IsAboutToExpire
|
||||
? "text-bewo-is-about-to-expire"
|
||||
: Model.SelectedCostBearer2SupportConceptRelListObject.ExpiresInThreeMonthsOrLess
|
||||
? "text-bewo-expires-in-three-months"
|
||||
: "text-light";
|
||||
var selectedSuportConceptTimeSpanColorClass = Model.SelectedCostBearer2SupportConceptRelListObject.IsAboutToExpire
|
||||
? "text-bewo-is-about-to-expire"
|
||||
: Model.SelectedCostBearer2SupportConceptRelListObject.ExpiresInThreeMonthsOrLess
|
||||
? "text-bewo-expires-in-three-months"
|
||||
: "text-light";
|
||||
|
||||
<div>
|
||||
<div class="container p-0">
|
||||
@@ -169,16 +167,20 @@
|
||||
<div class="col mt-3">
|
||||
<div class="list-group">
|
||||
<a href="#" class="list-group-item flex-column align-items-start no-underline bg-bewo-task-red" data-toggle="modal" data-target="#supportConceptList">
|
||||
<div class="d-flex">
|
||||
<h5 class="mb-1 text-light text-left" id="selectedSupportConceptCustomerInfo">@Model.SelectedCostBearer2SupportConceptRelListObject.NameAndDateOfBirth</h5>
|
||||
</div>
|
||||
<div class="d-flex">
|
||||
<h5 class="mb-1 text-light text-left" id="selectedSupportConceptCustomerInfo">@Model.SelectedCostBearer2SupportConceptRelListObject.NameAndDateOfBirth</h5>
|
||||
</div>
|
||||
@if(Model.SelectedCostBearerSupportConceptRelOid > 0)
|
||||
{
|
||||
<div class="dropdown-divider my-0 py-0"></div>
|
||||
}
|
||||
<p class="mb-1 text-left @selectedSuportConceptTimeSpanColorClass" id="selectedSupportConceptInfo">
|
||||
@Model.SelectedCostBearer2SupportConceptRelListObject.SupportConceptTimeSpan
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@if(Model.CostBearer2SupportConceptOid != null && Model.CostBearer2SupportConceptOid > 0)
|
||||
@if (Model.CostBearer2SupportConceptOid != null && Model.CostBearer2SupportConceptOid > 0)
|
||||
{
|
||||
<div class="col-md-auto mt-3">
|
||||
<button type="button" class="btn btn-outline-primary w-100 h-100" id="statistics-button" data-toggle="modal" data-target="#statistics-popup" onclick="showPieChart()">
|
||||
@@ -190,7 +192,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Hilfeplanauswahlpopup modal-dialog-centered-->
|
||||
@* Hilfeplanauswahlpopup *@
|
||||
<div class="modal" role="dialog" tabindex="-1" id="supportConceptList">
|
||||
<div class="modal-dialog text-center modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
@@ -201,7 +203,7 @@
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- Hilfeplansuche -->
|
||||
@* Hilfeplansuche *@
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" autocomplete="on" type="text" placeholder="Suchen..." oninput="supportConceptSearchOnChange()" id="support-concept-search-input" />
|
||||
<div class="input-group-append">
|
||||
@@ -212,10 +214,9 @@
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Hilfeplanliste -->
|
||||
@* Hilfeplanliste *@
|
||||
<div class="list-group">
|
||||
@foreach(var supportConceptListObject in Model.SupportConceptListObjects)
|
||||
@foreach (var supportConceptListObject in Model.SupportConceptListObjects)
|
||||
{
|
||||
var timeSpanColorClass = supportConceptListObject.IsAboutToExpire ? "text-bewo-is-about-to-expire" : supportConceptListObject.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
|
||||
@@ -235,14 +236,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Hilfeplanauswahlpopup -->
|
||||
@* /Hilfeplanauswahlpopup *@
|
||||
|
||||
<input type="text" class="d-none" name="CostBearer2SupportConceptOid" id="CostBearer2SupportConceptOid" value="@Model.SelectedCostBearer2SupportConceptRelListObject.CostBearer2SupportConceptOid">
|
||||
<input type="hidden" name="CostBearer2SupportConceptOid" id="CostBearer2SupportConceptOid" value="@Model.SelectedCostBearer2SupportConceptRelListObject.CostBearer2SupportConceptOid">
|
||||
}
|
||||
|
||||
if(Model.IsCustomerAbsence)
|
||||
{
|
||||
<div class="container mt-3 mx-auto p-0 w-100 text-center">
|
||||
<div class="container my-1 mb-0 mx-auto p-0 w-100 text-center bg-bewo-dev">
|
||||
<span>
|
||||
<i class="fas fa-exclamation-triangle text-warning"></i>
|
||||
<div class="text-danger d-inline">Klient ist abwesend</div>
|
||||
@@ -257,26 +258,26 @@
|
||||
@* ----- Einzelbuchung: Mitarbeiter ----- *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="mt-3" id="single-booking-employee-container">
|
||||
<div class="mt-2" id="single-booking-employee-container">
|
||||
@Html.PopupWithSearchForIFilterables(Model.Employees, "setSelectedEmployeeForSingleBooking", null, Model.SelectedEmployee?.DetailDescription, "single-booking-employee-modal-popup", false)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@* ----- Einzelbuchung: Ziele ----- *@
|
||||
@if(Model.SelectedSupportConcept != null && Model.SelectedSupportConcept.Goals.Any())
|
||||
{
|
||||
<!-- Einzelbuchung: Ziele -->
|
||||
<div class="form-row mb-0">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control my-3" data-toggle="modal" data-target="#goal-popup" id="goals-button">
|
||||
<div class="form-row">
|
||||
<div class="col-md mt-2">
|
||||
<button type="button" class="btn btn-primary form-control" data-toggle="modal" data-target="#goal-popup" id="goals-button">
|
||||
Ziele <span class="badge badge-light text-primary">@Model.SelectedGoals.Count</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row mb-0">
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="collapse w-100 mt-1 max-vw-50 @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "goals-container")" id="goals-container"></div>
|
||||
<div class="collapse mt-2 w-100 max-vw-50 @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "goals-container")" id="goals-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -293,14 +294,14 @@
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<div class="mt-1 custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox" class="custom-control-input" name="@FormCollectionConstants.MarkerKey" id="marker-cb" @markerCheckedValue />
|
||||
<label class="custom-control-label" for="marker-cb">Marker</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
@* ----- Betrag ----- *@
|
||||
@if(Model.ShowBetrag)
|
||||
{
|
||||
@@ -310,9 +311,9 @@
|
||||
betrag = Model.SelectedServiceRecord.Betrag.Value.ToString("#.00");
|
||||
}
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-row mt-2">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
@@ -328,20 +329,14 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<hr />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<hr class="mt-2 mb-0" />
|
||||
|
||||
@* ----- Einzelbuchung: Startdatum und gegebenenfalls Enddatum ----- *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="start-date-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="start-date-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Startdatum
|
||||
@@ -358,11 +353,11 @@
|
||||
</div>
|
||||
|
||||
@* ----- Einzelbuchung: Enddatum ----- *@
|
||||
@if(Model.IsEndDateVisible)
|
||||
@if (Model.IsEndDateVisible)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="end-date-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="end-date-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Enddatum
|
||||
@@ -390,20 +385,20 @@
|
||||
|
||||
var afterValidationState = TempData[TempDataConstants.AfterValidationStateKey];
|
||||
|
||||
if(Model.SetStartTimeToEndTimeAfterSave && !Model.IsInEditingMode && afterValidationState is bool isAfterValidation && isAfterValidation == false)
|
||||
if (Model.SetStartTimeToEndTimeAfterSave && !Model.IsInEditingMode && afterValidationState is bool isAfterValidation && isAfterValidation == false)
|
||||
{
|
||||
startTimeValue = Model.NewStartTime;
|
||||
endTimeValue = Model.NewEndTime;
|
||||
durationValue = Model.NewDuration?.ToString();
|
||||
if(Model.NewDuration.HasValue)
|
||||
if (Model.NewDuration.HasValue)
|
||||
{
|
||||
durationValue = (Model.NewDuration / divisor).ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="start-time-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="start-time-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text sm-prepend-input-group-text px-2">
|
||||
Von
|
||||
@@ -421,8 +416,8 @@
|
||||
|
||||
@* ----- Einzelbuchung: Bis ----- *@
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="end-time-picker" data-target-input="nearest">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group date mt-2" id="end-time-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text sm-prepend-input-group-text px-2">
|
||||
Bis
|
||||
@@ -440,9 +435,9 @@
|
||||
</div>
|
||||
|
||||
@* ----- Einzelbuchung: Dauer ----- *@
|
||||
<div class="form-row">
|
||||
<div class="form-row mt-2">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
@{
|
||||
@@ -453,7 +448,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<input type="number" step="0.01" min="0" class="form-control" id="duration" name="Dauer" onchange="onDurationChange('start-time', 'end-time', 'start-date', 'end-date', 'duration', 'hours-minutes-dropdown-btn', 'start-date-picker', 'end-date-picker')" value="@durationValue">
|
||||
@if(Model.IsZeiterfassungInStdMin)
|
||||
@if (Model.IsZeiterfassungInStdMin)
|
||||
{
|
||||
<div class="input-group-append">
|
||||
<button id="hours-minutes-dropdown-btn" class="btn btn-outline-primary dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
@@ -473,9 +468,9 @@
|
||||
@* ----- Einzelbuchung: Distanz ----- *@
|
||||
@if(Model.ShowDistanceField)
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="form-row mt-2">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="form-group my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
@@ -497,10 +492,9 @@
|
||||
$('#tree').load('@Url.Action("LoadUpToDateTextModules")');
|
||||
}
|
||||
</script>
|
||||
<!-- Einzelbuchung: Textbausteine -->
|
||||
<div class="form-row" id="textmodule-container">
|
||||
<div class="form-row mt-2" id="textmodule-container">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control mt-3" data-toggle="modal" data-target="#textbausteine-popup" id="textbausteine-button" onclick="textModuleButtonOnClick()">Textbausteine</button>
|
||||
<button type="button" class="btn btn-primary form-control" data-toggle="modal" data-target="#textbausteine-popup" id="textbausteine-button" onclick="textModuleButtonOnClick()">Textbausteine</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -508,9 +502,9 @@
|
||||
@* ----- Einzelbuchung: Dokumentation ----- *@
|
||||
<div class="form-row">
|
||||
<div class="col-md mt-3">
|
||||
@if(Model.NumberOfDokuTypes == 0)
|
||||
@if (Model.NumberOfDokuTypes == 0)
|
||||
{
|
||||
<div class="form-group">
|
||||
<div class="form-group my-0">
|
||||
<label for="dokufeld">Dokumentation</label>
|
||||
<textarea class="form-control" autocomplete="on" style="overflow: scroll;" name="Dokumentation6" id="dokufeld">@Model.NoticeToEdit</textarea>
|
||||
</div>
|
||||
@@ -518,7 +512,7 @@
|
||||
else
|
||||
{
|
||||
<ul class="nav nav-tabs" role="tab-list">
|
||||
@for(var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
@for (var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var currentDokuType = Model.Dokutypes[i];
|
||||
|
||||
@@ -530,7 +524,7 @@
|
||||
}
|
||||
</ul>
|
||||
<div class="tab-content" id="dokufelderTab">
|
||||
@for(var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
@for (var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var textareaName = i + 1 < 1 ? "Dokumentation" : "Dokumentation" + (i + 1);
|
||||
|
||||
@@ -546,9 +540,8 @@
|
||||
}
|
||||
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="mr-auto bd-highlight">
|
||||
<div class="mr-auto bd-highlight"></div>
|
||||
|
||||
</div>
|
||||
@if(Model.IsInEditingMode)
|
||||
{
|
||||
using(Html.BeginForm("ResetEditingMode", "Main", FormMethod.Post))
|
||||
@@ -656,7 +649,7 @@
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Von</span>
|
||||
</div>
|
||||
<input type="text" id="time-frame-start-date" name="von" class="form-control datetimepicker-input" data-target="#time-frame-start-date-picker" value="@defaultStartDate" />
|
||||
<input type="text" id="time-frame-start-date" name="von" onfocusout="loadServiceRecords()" class="form-control datetimepicker-input" data-target="#time-frame-start-date-picker" value="@defaultStartDate" />
|
||||
<div class="input-group-append" data-target="#time-frame-start-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
@@ -669,7 +662,7 @@
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Bis</span>
|
||||
</div>
|
||||
<input type="text" id="time-frame-end-date" name="bis" class="form-control datetimepicker-input" data-target="#time-frame-end-date-picker" value="@defaultEndDate" />
|
||||
<input type="text" id="time-frame-end-date" name="bis" onfocusout="loadServiceRecords()" class="form-control datetimepicker-input" data-target="#time-frame-end-date-picker" value="@defaultEndDate" />
|
||||
<div class="input-group-append" data-target="#time-frame-end-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
@@ -688,7 +681,7 @@
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Monat</span>
|
||||
</div>
|
||||
<select name="month-select" class="custom-select" id="month-select">
|
||||
<select name="month-select" class="custom-select" id="month-select" onchange="loadServiceRecords()">
|
||||
<option value="1"
|
||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 1) { @Html.Raw("selected") } }>
|
||||
Januar
|
||||
@@ -747,7 +740,7 @@
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Jahr</span>
|
||||
</div>
|
||||
<select class="custom-select" name="year-select" id="year-select">
|
||||
<select class="custom-select" name="year-select" id="year-select" onchange="loadServiceRecords()">
|
||||
@{
|
||||
var heuer = DateTime.Today.Year;
|
||||
for(var year = heuer + 1; year >= heuer - 10; year--)
|
||||
@@ -766,14 +759,14 @@
|
||||
</div>
|
||||
}
|
||||
|
||||
<hr class="mt-0"/>
|
||||
<hr class="mt-2"/>
|
||||
|
||||
<div class="container-fluid mt-3" id="service-record-list-container">
|
||||
@Html.Partial("ServiceRecordListPartial", Model)
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
@*----- /Liste mit den Einträgen und dem Auswahl-Select ----- *@
|
||||
@* ----- /Liste mit den Einträgen und dem Auswahl-Select ----- *@
|
||||
</div>
|
||||
|
||||
@using(Html.BeginForm("DeleteSignature", "Main", FormMethod.Post, new { id = "delete-signature-form" }))
|
||||
|
||||
@@ -4227,14 +4227,19 @@ WHERE sc.Billable = 1 and sr.StartDate >= '{0:yyyy-MM-dd}' and sr.StartDate < '{
|
||||
return criteria.List<ConfirmationReceiptSignature>().Any();
|
||||
}
|
||||
|
||||
public bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(long customerOid, long employeeOid, DateTime serviceRecordStart, DateTime serviceRecordEnd, out List<ConfirmationReceiptSignature> monatsunterschriften)
|
||||
// Mit confirmationreceiptsignature2servicerecord suchen: Klient UND Mitarbeiter
|
||||
public bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(long customerOid, long employeeOid, DateTime serviceRecordStart, DateTime serviceRecordEnd, long costBearer2SupportConceptOid, out List<ConfirmationReceiptSignature> monatsunterschriften)
|
||||
{
|
||||
var timePartOfQuery = " STR_TO_DATE(CONCAT(SUBSTRING(TimeSpanString, 18, 4), '-', SUBSTRING(TimeSpanString, 4, 2), '-', SUBSTRING(TimeSpanString, 1, 2)), '%Y-%m-%d') AND STR_TO_DATE(CONCAT(SUBSTRING(TimeSpanString, 18, 4), '-', SUBSTRING(TimeSpanString, 15, 2), '-', SUBSTRING(TimeSpanString, 12, 2)), '%Y-%m-%d') ";
|
||||
var timePartOfQuery = " STR_TO_DATE(CONCAT(SUBSTRING(monatsunterschrift.TimeSpanString, 18, 4), '-', SUBSTRING(monatsunterschrift.TimeSpanString, 4, 2), '-', SUBSTRING(monatsunterschrift.TimeSpanString, 1, 2)), '%Y-%m-%d') AND STR_TO_DATE(CONCAT(SUBSTRING(monatsunterschrift.TimeSpanString, 18, 4), '-', SUBSTRING(monatsunterschrift.TimeSpanString, 15, 2), '-', SUBSTRING(monatsunterschrift.TimeSpanString, 12, 2)), '%Y-%m-%d') ";
|
||||
|
||||
var sql =
|
||||
"SELECT * FROM confirmationreceiptsignature " +
|
||||
"SELECT monatsunterschrift.* FROM confirmationreceiptsignature monatsunterschrift " +
|
||||
$"WHERE ('{serviceRecordStart:yyyy-MM-dd HH:mm:ss}' BETWEEN {timePartOfQuery} OR '{serviceRecordEnd:yyyy-MM-dd HH:mm:ss}' BETWEEN {timePartOfQuery}) " +
|
||||
$"AND (CustomerOid = {customerOid} OR EmployeeOid = {employeeOid})";
|
||||
$"AND (monatsunterschrift.CustomerOid = {customerOid} OR monatsunterschrift.EmployeeOid = {employeeOid}) " +
|
||||
"AND monatsunterschrift.Oid IN " +
|
||||
"(SELECT monatsunterschrift2sr.ConfirmationReceiptSignatureOid FROM confirmationreceiptsignature2servicerecord monatsunterschrift2sr " +
|
||||
"WHERE monatsunterschrift2sr.ServiceRecordOid IN " +
|
||||
$"(SELECT sr.Oid FROM servicerecord sr WHERE sr.CostBearer2SupportConceptOid = {costBearer2SupportConceptOid}))";
|
||||
|
||||
var query = Session.CreateSQLQuery(sql);
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "2542550178"; // LWVEingliederungshilfe
|
||||
//t = "3963982016"; // Convoi
|
||||
//t = "1600408120"; // BeWo Amrath
|
||||
t = "3886054624"; // Brücke ABW
|
||||
//t = "3886054624"; // Brücke ABW
|
||||
//t = "2028095630"; // Integra Heinsberg
|
||||
//t = "5351926758"; // Viva a Vida
|
||||
//t = "2215396183"; // Diakonie Remscheid Lennep
|
||||
@@ -110,7 +110,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "8677523325"; // BeWo Richartz
|
||||
//t = "1765854593"; // Mein Betreutes Wohnen
|
||||
//t = "6802909544"; // Lebenshilfe Coburg
|
||||
t = "9417634361"; // Synprax
|
||||
//t = "9417634361"; // Synprax
|
||||
//t = "5761861730"; // Lebenshilfe Warendorf
|
||||
//t = "6712648331"; // BeWo Färber
|
||||
//t = "4982295287"; // ASB Hamm
|
||||
|
||||
@@ -44,10 +44,10 @@ namespace BeWo.Service.Plugins
|
||||
|
||||
var klientenoid = groupRecord.SupportConcept?.Customer?.CustomerOid;
|
||||
var mitarbeiteroid = groupRecord.Employee?.EmployeeOid;
|
||||
|
||||
|
||||
if(klientenoid is object && mitarbeiteroid is object)
|
||||
{
|
||||
var hasMonatsunterschrift = DAOFactory.SearchDAO.HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(klientenoid.Value, mitarbeiteroid.Value, startDate, endDate, out var existingSignatures);
|
||||
var hasMonatsunterschrift = DAOFactory.SearchDAO.HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(klientenoid.Value, mitarbeiteroid.Value, startDate, endDate, groupRecord.CostBearer2SupportConceptOid.Value, out var existingSignatures);
|
||||
|
||||
if(hasMonatsunterschrift)
|
||||
{
|
||||
@@ -246,19 +246,38 @@ namespace BeWo.Service.Plugins
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Meldung anzeigen bei:
|
||||
* 1. Neuem ServiceRecord
|
||||
* 2. Ändern der Zeitangaben eines bestehenden ServiceRecord
|
||||
*/
|
||||
|
||||
if(newServiceRecord.ServiceDescription.Category.IsBillable)
|
||||
{
|
||||
var startDate = newServiceRecord.Start.Value;
|
||||
var endDate = newServiceRecord.End.Value;
|
||||
|
||||
var areTimesEqual = true;
|
||||
var isNew = newServiceRecord.ServiceRecordOid is null;
|
||||
|
||||
if(newServiceRecord.ServiceRecordOid.HasValue)
|
||||
{
|
||||
var originalServiceRecord = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(newServiceRecord.ServiceRecordOid.Value);
|
||||
|
||||
var isStartUnchanged = Equals(originalServiceRecord.Start, newServiceRecord.Start);
|
||||
var isEndUnchanged = Equals(originalServiceRecord.End, newServiceRecord.End);
|
||||
|
||||
areTimesEqual = isStartUnchanged && isEndUnchanged;
|
||||
}
|
||||
|
||||
var klientenoid = newServiceRecord.SupportConcept?.Customer?.CustomerOid;
|
||||
var mitarbeiteroid = newServiceRecord.Employee?.EmployeeOid;
|
||||
|
||||
if(klientenoid is object && mitarbeiteroid is object)
|
||||
{
|
||||
var hasMonatsunterschrift = DAOFactory.SearchDAO.HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(klientenoid.Value, mitarbeiteroid.Value, startDate, endDate, out var existingSignatures);
|
||||
var hasMonatsunterschrift = DAOFactory.SearchDAO.HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(klientenoid.Value, mitarbeiteroid.Value, startDate, endDate, newServiceRecord.CostBearer2SupportConceptOid.Value, out var existingSignatures);
|
||||
|
||||
if(hasMonatsunterschrift)
|
||||
if(hasMonatsunterschrift && (isNew || false == areTimesEqual))
|
||||
{
|
||||
var customerName = newServiceRecord.SupportConcept.CustomerName;
|
||||
|
||||
@@ -1068,7 +1087,7 @@ namespace BeWo.Service.Plugins
|
||||
|
||||
Customer c = overlappingRecord.Customer;
|
||||
if (c != null)
|
||||
{
|
||||
{
|
||||
rdc.Message += String.Format(" bei Klient/in {0}, {1}", c.Person.LastName, c.Person.FirstName);
|
||||
}
|
||||
Employee e = overlappingRecord.Employee;
|
||||
|
||||
@@ -1406,6 +1406,6 @@ namespace BeWo.Service.ServiceContracts
|
||||
|
||||
[FaultContract(typeof(BeWoFault))]
|
||||
[OperationContract]
|
||||
bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(long customerOid, long employeeOid, DateTime start, DateTime end);
|
||||
bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(long customerOid, long employeeOid, DateTime start, DateTime end, long costBearer2SupportConceptOid, out List<ConfirmationReceiptSignatureDC> confirmationReceiptSignatures);
|
||||
}
|
||||
}
|
||||
@@ -2736,9 +2736,13 @@ namespace BeWo.Service.ServiceImplementations
|
||||
return validator.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids);
|
||||
}
|
||||
|
||||
public bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(long customerOid, long employeeOid, DateTime start, DateTime end)
|
||||
public bool HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(long customerOid, long employeeOid, DateTime start, DateTime end, long costBearer2SupportConceptOid, out List<ConfirmationReceiptSignatureDC> confirmationReceiptSignatures)
|
||||
{
|
||||
return DAOFactory.SearchDAO.HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(customerOid, employeeOid, start, end, out var list);
|
||||
var result = DAOFactory.SearchDAO.HasConfirmationReceiptSignatureByDateAndEmployeeAndCustomer(customerOid, employeeOid, start, end, costBearer2SupportConceptOid, out var list);
|
||||
|
||||
confirmationReceiptSignatures = MapperFactory.ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.MapToNewDCs(list);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<ServiceRecordValidationResultDC> ValidateServiceRecordDeletion(ServiceRecordDC serviceRecord, long employeeOid)
|
||||
|
||||
@@ -48,8 +48,8 @@ namespace BS.Shared.DataContracts
|
||||
EndDate.Equals(validationResult.EndDate) &&
|
||||
ApprovedHours.Equals(validationResult.ApprovedHours) &&
|
||||
HoursNew.Equals(validationResult.HoursNew) &&
|
||||
EmployeeName.Equals(validationResult.EmployeeName) &&
|
||||
CustomerName.Equals(validationResult.CustomerName) &&
|
||||
(EmployeeName?.Equals(validationResult.EmployeeName) ?? false) &&
|
||||
(CustomerName?.Equals(validationResult.CustomerName) ?? false) &&
|
||||
Allow.Equals(validationResult.Allow);
|
||||
|
||||
return areEqual;
|
||||
|
||||
Reference in New Issue
Block a user