MoK: Fix zu "Uncaught TypeError: Cannot read properties of undefined (reading '_options')" probiert und weitergemacht mit den Bargeldkassen

This commit is contained in:
2024-01-23 10:45:34 +01:00
parent c80ac7cbe9
commit b60d52c5ba
9 changed files with 294 additions and 87 deletions

View File

@@ -5108,6 +5108,9 @@
<ItemGroup>
<Content Include="Views\Main\ServiceRecordListPartial.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Customer\BargeldkassenReportPartial.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>

View File

@@ -434,13 +434,6 @@ namespace BeWoPlanerMobil.Controllers
}
#region Bargeldkassen
// GetBargeldkassenName
// SaveBargeldkassenName
// DeleteBargeldkasse
// DownloadBargeldkassenPdf
// DownloadTransactionPdf
// SaveTransactionSignature
[Authorize]
public string SelectBargeldkasse(long oid)
{
@@ -475,6 +468,20 @@ namespace BeWoPlanerMobil.Controllers
public ActionResult LoadFormPartial()
{
Model.SelectedBargeldkasse = null;
Model.SelectedAuszahlungsintervall = 0;
return PartialView("CustomerBargeldkassenFormPartial", Model);
}
[Authorize]
public ActionResult LoadEditFormPartial(long bargeldkassenOid)
{
Model.SelectedBargeldkasse = Model.Bargeldkassen.FirstOrDefault(bargeldkasse => bargeldkasse.BargeldkassenOid.HasValue && bargeldkasse.BargeldkassenOid.Value.Equals(bargeldkassenOid));
if(Model.SelectedBargeldkasse != null)
{
Model.SelectedAuszahlungsintervall = (int) Model.SelectedBargeldkasse.Auszahlungsintervall;
}
return PartialView("CustomerBargeldkassenFormPartial", Model);
}
@@ -518,12 +525,10 @@ namespace BeWoPlanerMobil.Controllers
decimal.TryParse(rawAnfangsbestand, out var anfangsbestand);
var auszahlungsintervall = (Auszahlungsintervall) Model.SelectedAuszahlungsintervall;
if(Model.SelectedBargeldkasse is null)
{
var rawAuszahlungsintervall = formCollection["auszahlungsintervall-select"];
var auszahlungsintervall = int.TryParse(rawAuszahlungsintervall, out var parsedAuszahlungsintervall) ? (Auszahlungsintervall)parsedAuszahlungsintervall : Auszahlungsintervall.Kein;
var newBargeldkasse = new BargeldkassenDC
{
Anfangsbestand = anfangsbestand,
@@ -546,6 +551,8 @@ namespace BeWoPlanerMobil.Controllers
bargeldkasse.Kassenname = name;
}
bargeldkasse.Auszahlungsintervall = auszahlungsintervall;
bargeldkasse.Anfangsbestand = anfangsbestand;
OperationsService.UpdateBargeldkasse(bargeldkasse);
@@ -557,6 +564,34 @@ namespace BeWoPlanerMobil.Controllers
return RedirectToActionPermanent("Customer");
}
[Authorize]
public ActionResult PrintBargeldkasse(long kassenbuchOid, string reportStartDate, string reportEndDate)
{
// Benötigt werden: BargeldkassenOid, Startdatum und Enddatum
var bargeldkasse = Model.Bargeldkassen.FirstOrDefault(f => f.BargeldkassenOid.HasValue && f.BargeldkassenOid.Value.Equals(kassenbuchOid));
var startDate = DateTime.TryParse(reportStartDate, out var parsedStartDate) ? parsedStartDate : DateTime.Today.GetFirstOfMonth();
var endDate = DateTime.TryParse(reportEndDate, out var parsedEndDate) ? parsedEndDate : DateTime.Today.GetLastOfMonth();
if(bargeldkasse?.ObjectOid is null)
{
return PartialView("BargeldkassenReportPartial", Model);
}
ReportService.CreateKassenbuchReportImZeitraum(startDate, endDate, bargeldkasse, bargeldkasse.ObjectOid.Value, bargeldkasse.ObjectTid);
return PartialView("BargeldkassenReportPartial", Model);
}
[Authorize]
public string SetSelectedAuszahlungsintervall(int auszahlungsintervall)
{
Model.SelectedAuszahlungsintervall = auszahlungsintervall;
return LeerzeichenFuerGetMethoden;
}
#endregion
#region Abwesenheiten

View File

@@ -165,5 +165,25 @@ namespace BeWoPlanerMobil.Models
public AbsenceTimeDC SelectedAbsenceTime { get; set; }
public BargeldkassenDC SelectedBargeldkasse { get; set; }
[Display(Name="Auszahlunsintervall")]
public int SelectedAuszahlungsintervall { get; set; }
public List<SelectListItem> Auszahlungsintervalle
{
get
{
var result = new List<SelectListItem>
{
new SelectListItem{Value = ((int) Auszahlungsintervall.Kein).ToString(), Text = "Kein"},
new SelectListItem{Value = ((int) Auszahlungsintervall.Monatlich).ToString(), Text = "Monatlich"},
new SelectListItem{Value = ((int) Auszahlungsintervall.Woechentlich).ToString(), Text = "Wöchentlich"},
new SelectListItem{Value = ((int) Auszahlungsintervall.Taeglich).ToString(), Text = "Täglich"},
};
return result;
}
}
public XtraReport BargeldkassenReportObject { get; set; }
}
}

View File

@@ -471,6 +471,10 @@ if ((version[0] <= 2 && version[1] < 17) || version[0] >= 3) throw new Error("Te
// ToDo: workaround, damit nicht undefined zurückkommt!
var ownSoft_Date = this._dates[this._getLastPickedDateIndex()];
if(typeof ownSoft_Date == "undefined" || ownSoft_Date == null) {
ownSoft_Date = this.getMoment();
}
return ownSoft_Date === undefined ? this.getMoment() : this._dates[this._getLastPickedDateIndex()];
//return this._dates[this._getLastPickedDateIndex()];

View File

@@ -0,0 +1,28 @@
@model BeWoPlanerMobil.Models.CustomerModel
<script type="text/javascript">
function bargeldkassenReportViewerInit(s, e) {
try {
s.UpdateLocalization({
'Page': 'Seite',
'of': 'von'
});
} catch(error) {
showErrorPopup(error);
}
}
</script>
@if(Model.BargeldkassenReportObject != null)
{
@Html.DevExpress().WebDocumentViewer(settings =>
{
settings.Name = "bargeldkassenReportViewer";
settings.Width = Unit.Percentage(100);
settings.Height = Unit.Percentage(100);
settings.MobileMode = true;
settings.SettingsMobile.ReaderMode = true;
settings.SettingsMobile.AnimationEnabled = false;
settings.ClientSideEvents.Init = "bargeldkassenReportViewerInit";
}).Bind(Model.BargeldkassenReportObject).GetHtml()
}

View File

@@ -998,8 +998,8 @@
</div>
</div>
<div class="collapse" id="collapse-customer-bargeldkassen">
<div class="card-body">
<div class="container-fluid">
<div class="card-body pb-0 px-0">
<div class="container-fluid my-0 py-0">
@Html.Partial("CustomerBargeldkassen", Model)
</div>
</div>

View File

@@ -44,6 +44,13 @@
*@
<script type="text/javascript">
$(function () {
$(".ownSoft-date-picker").datetimepicker({
locale: "de",
format: "L"
});
});
function resizeButtons() {
try {
var btnGroupMaxWidth = getMaxWidth("bk-btn-group");
@@ -73,11 +80,11 @@
function editBtnClickTest(bargeldkassenOid, bargeldkassenname) {
try {
event.stopPropagation();
$("#customer-bargeldkassen-modal-body").load("@Url.Action("LoadFormPartial")", function() {
$("#customer-bargeldkassen-form-popup-title").text(bargeldkassenname + " bearbeiten");
$("#customer-bargeldkassen-form-popup").modal("show");
calcBargeldkassenFormPrependWidth();
});
$("#customer-bargeldkassen-modal-body").load("@Url.Action("LoadEditFormPartial")", { bargeldkassenOid: bargeldkassenOid }, function() {
$("#customer-bargeldkassen-form-popup-title").text(bargeldkassenname + " bearbeiten");
$("#customer-bargeldkassen-form-popup").modal("show");
calcBargeldkassenFormPrependWidth();
});
} catch(error) {
showErrorPopup(error);
}
@@ -109,9 +116,32 @@
showErrorPopup(error);
}
}
function previewBargeldkassenReport(bargeldkassenOid) {
try {
@*showSpinner();
$("#msk-form-col").load("@Url.Action("LoadViewerForm")", { reportType: selectedReportType }, function () {
toggleMitarbeiterstundenForm();
hideSpinner();
});*@
//var start = $("").val();
//var end = $("").val();
var start = "01.01.2024";
var end = "31.01.2024";
$("#customer-bargeldkassen-report-modal-body").load("@Url.Action("PrintBargeldkasse")", {bargeldkassenOid: bargeldkassenOid, reportStartDate: start, reportEndDate: end}, function() {
$("#customer-bargeldkassen-report-popup").modal("show");
});
} catch(error) {
showErrorPopup(error);
}
}
</script>
<div class="row">
<div class="row mx-0 px-0">
<div class="col-sm-12">
<button type="button" class="btn btn-primary w-100 mb-3" onclick="addNewBargeldkasse()">Neue Kasse hinzuf&uuml;gen</button>
</div>
@@ -121,16 +151,14 @@
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 row-cols-xl-4">
@foreach(var bargeldkasse in Model.Bargeldkassen)
{
<div class="col mb-3">
<div class="col mb-3 mx-0 px-1">
<div class="card h-100">
<div class="card-header" onclick="cardHeaderClick2(this)">
<div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header chevron-identifier-class"></i>
</div>
<div class="d-inline d-inline-flex text-bewo-customer-card-header h-100">
<button class="btn btn-link text-bewo-customer-card-header" type="button">
@bargeldkasse.Kassenname
</button>
<p>@bargeldkasse.Kassenname</p>
</div>
</div>
<div class="collapse">
@@ -144,24 +172,70 @@
var kassenbestand = ((bargeldkasse.Anfangsbestand ?? 0m) + einzahlungen - auszahlungen).ToString("0.00 €");
}
<div class="row">
<div class="col">
<button class="btn btn-primary" type="button" modal="#customer-bargeldtransaktions-form-popup">
<i class="fas fa-money-bill"></i>
</button>
</div>
<div class="col">
<button class="btn btn-primary ml-1" type="button" modal="#customer-bargeldkassen-form-popup" onclick="editBtnClickTest(@bargeldkasse.BargeldkassenOid, '@bargeldkasse.Kassenname')">
<i class="fas fa-edit"></i>
</button>
</div>
<div class="col">
<button class="btn btn-danger ml-1" type="button" onclick="deleteBtnClickTest(@bargeldkasse.BargeldkassenOid, '@bargeldkasse.Kassenname')">
<i class="fas fa-trash-alt"></i>
</button>
<div class="btn-group w-100" role="gorup">
<button class="btn btn-outline-primary" title="Transaktion hinzufügen" type="button" modal="#customer-bargeldtransaktions-form-popup">
<i class="fas fa-plus"></i>
Transaktion
</button>
<button class="btn btn-outline-primary" title="Kassenbuch Bearbeiten" type="button" modal="#customer-bargeldkassen-form-popup" onclick="editBtnClickTest(@bargeldkasse.BargeldkassenOid, '@bargeldkasse.Kassenname')">
<i class="fas fa-edit"></i>
</button>
<button class="btn btn-outline-primary" title="Kassenbuch drucken" type="button" modal="#customer-bargeldkassen-report-popup" onclick="previewBargeldkassenReport(@bargeldkasse.BargeldkassenOid)">
<i class="fas fa-file-download"></i>
</button>
<button class="btn btn-outline-danger" title="Kassenbuch löschen" type="button" onclick="deleteBtnClickTest(@bargeldkasse.BargeldkassenOid, '@bargeldkasse.Kassenname')">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</div>
</div>
@*
----- Startdatum -----
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
<div class="input-group date ownSoft-date-picker" id="customer-bargeldkasse-start-date-picker" data-target-input="nearest">
<div class="input-group-prepend">
<div class="input-group-text customer-bargeldkassen-prepend">
Startdatum
</div>
</div>
<input type="text" value="@startDate" id="customer-bargeldkasse-start-date" name="customer-bargeldkasse-start-date" class="form-control datetimepicker-input" data-target="#customer-absence-time-end-date-picker" data-toggle="datetimepicker" />
<div class="input-group-append" data-target="#customer-bargeldkasse-start-date-picker" data-toggle="datetimepicker">
<div class="input-group-text px-2">
<i class="fas fa-calendar-alt"></i>
</div>
</div>
</div>
</div>
</div>
</div>
----- Enddatum -----
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
<div class="input-group date ownSoft-date-picker" id="customer-bargeldkasse-end-date-picker" data-target-input="nearest">
<div class="input-group-prepend">
<div class="input-group-text customer-bargeldkassen-prepend">
Enddatum
</div>
</div>
<input type="text" value="@endDate" id="customer-bargeldkasse-end-date" name="customer-bargeldkasse-end-date" class="form-control datetimepicker-input" data-target="#customer-absence-time-end-date-picker" data-toggle="datetimepicker" />
<div class="input-group-append" data-target="#customer-bargeldkasse-end-date-picker" data-toggle="datetimepicker">
<div class="input-group-text px-2">
<i class="fas fa-calendar-alt"></i>
</div>
</div>
</div>
</div>
</div>
</div>
*@
<div class="w-100">
<table class="w-100">
<tbody>
@@ -181,20 +255,20 @@
@anfangsbestand
</td>
</tr>
<tr>
<td class="text-secondary">
Startdatum:
</td>
<td class="text-primary">
</td>
</tr>
<tr>
<td class="text-secondary">
Enddatum:
</td>
<td class="text-primary">
</td>
</tr>
@*<tr>
<td class="text-secondary">
Startdatum:
</td>
<td class="text-primary">
</td>
</tr>
<tr>
<td class="text-secondary">
Enddatum:
</td>
<td class="text-primary">
</td>
</tr>*@
</tbody>
</table>
</div>
@@ -229,7 +303,7 @@
</button>
</div>
<div class="modal-body" id="customer-bargeldkassen-modal-body">
@*@Html.Partial("CustomerBargeldkassenFormPartial", Model)*@
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" onclick="submitCustomerBargeldkassenForm()">OK</button>
@@ -258,4 +332,20 @@
</div>
</div>
</div>
}
}
<div class="modal" tabindex="-1" role="dialog" id="customer-bargeldkassen-report-popup">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="customer-bargeldkassen-report-popup-header"></h5>
<button class="close" type="button" data-dismiss="modal" aria-label="close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" id="customer-bargeldkassen-report-modal-body">
@Html.Partial("CustomerReportPartial", Model)
</div>
</div>
</div>
</div>

View File

@@ -1,5 +1,6 @@
@using BeWoPlanerMobil.Models;
@using BeWoPlanerMobil.Util
@using BS.Shared.Extensions
@model CustomerModel
@@ -78,7 +79,7 @@
$("#bargeldkassenname").val("");
$("#bargeldkassenanfangsbestand").val("");
$("#bargeldkassennamensinput").val("");
$("#bargeldkassenanfangsbestandsinput").val("");
if($("#auszahlungsintervall-select-input").length) {
@@ -88,6 +89,20 @@
showErrorPopup(error);
}
}
function setAuszahlungsintervall() {
try {
showSpinner();
var selectedAuszahlungsintervall = $("#auszahlungsintervall-select-input :selected").val();
$.get("@Url.Action("SetSelectedAuszahlungsintervall")", {auszahlungsintervall: selectedAuszahlungsintervall}).success(function() {
hideSpinner();
});
} catch(error) {
showErrorPopup(error);
}
}
</script>
@using(Html.BeginForm("CreateOrUpdateBargeldkasse", "Customer", FormMethod.Post, new { id = "create-bargeldkasse-form" }))
@@ -103,6 +118,7 @@
var anfangsbestand = Model.SelectedBargeldkasse?.Anfangsbestand?.ToString("0.00") ?? "0.00";
}
@*----- Name -----*@
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
@@ -117,28 +133,33 @@
</div>
</div>
</div>
@if(Model.SelectedBargeldkasse is null)
{
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text customer-bargeldkassen-prepend">
Auszahlungsintervall
</div>
@*----- Auszahlungsintervall -----*@
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text customer-bargeldkassen-prepend">
Auszahlungsintervall
</div>
<select class="form-control" id="auszahlungsintervall-select-input">
<option value="0" selected>Kein</option>
<option value="1">Monatlich</option>
<option value="2">W&ouml;chentlich</option>
<option value="3">T&auml;glich</option>
</select>
</div>
@*
@Html.DropDownListFor(model => model.SelectedReportType, Model.ReportTypes, new { @class = "custom-select", onchange = "updateForm()", id = "msk-report-type-select" })
*@
@Html.DropDownListFor(model => model.SelectedAuszahlungsintervall, Model.Auszahlungsintervalle, new {@class="form-control", id = "auszahlungsintervall-select-input", onchange="setAuszahlungsintervall()" })
@*<select class="form-control" id="auszahlungsintervall-select-input">
<option value="0" selected>Kein</option>
<option value="1">Monatlich</option>
<option value="2">W&ouml;chentlich</option>
<option value="3">T&auml;glich</option>
</select>*@
</div>
</div>
</div>
}
</div>
@*----- Anfangsbestand -----*@
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
@@ -157,23 +178,25 @@
</div>
</div>
@if(Html.IsInDebugMode())
{
using(Html.BeginForm("CreateOrUpdateBargeldkasse", "Customer", FormMethod.Post))
{
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text customer-bargeldkassen-prepend">
Testinput
</div>
</div>
<input class="form-control" type="text" />
@*----- Stichtag -----*@
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
<div class="input-group date ownSoft-date-picker" id="customer-bargeldkasse-stichtag-date-picker" data-target-input="nearest">
<div class="input-group-prepend">
<div class="input-group-text customer-bargeldkassen-prepend">
Stichtag
</div>
</div>
<input type="text" id="customer-bargeldkasse-stichtag-date" name="customer-bargeldkasse-stichtag-date" class="form-control datetimepicker-input" data-target="#customer-absence-time-end-date-picker" data-toggle="datetimepicker" />
<div class="input-group-append" data-target="#customer-bargeldkasse-stichtag-date-picker" data-toggle="datetimepicker">
<div class="input-group-text px-2">
<i class="fas fa-calendar-alt"></i>
</div>
</div>
</div>
</div>
}
}
</div>
</div>

View File

@@ -0,0 +1,4 @@
ALTER TABLE signature
ADD COLUMN EmployeeOid BIGINT DEFAULT NULL,
ADD COLUMN CustomerOid BIGINT DEFAULT NULL,
ADD COLUMN BargeldkassenOid BIGINT DEFAULT NULL;