diff --git a/BeWo/ViewModel/SupportConceptVM.cs b/BeWo/ViewModel/SupportConceptVM.cs index 6f0563c3b..9ed516651 100644 --- a/BeWo/ViewModel/SupportConceptVM.cs +++ b/BeWo/ViewModel/SupportConceptVM.cs @@ -106,7 +106,7 @@ namespace BeWo.ViewModel _CombinedGoals = new GenericValueListEntryListVM(ziele); var categoriesWithParent = new List(); - var goalList = GoalService.GetZieleMassnahmenTree(_CombinedGoals.VMList.ToList(), false); + var goalList = GoalService.GetZieleMassnahmenTree(_CombinedGoals.VMList.ToList(), false).OrderBy(s => s.Name); var iGoalList = new ObservableSortCollection(); var dictOid2TreeItem = new Dictionary(); @@ -139,7 +139,7 @@ namespace BeWo.ViewModel dictOid2TreeItem.Add(category.GoalEntryDC.ValueListEntryOid.Value, item); } - foreach (var category in categoriesWithParent) + foreach (var category in categoriesWithParent.OrderBy(s => s.Name)) { if (category.GoalEntryDC.ParentOid == null || category.GoalEntryDC.ValueListEntryOid == null) continue; @@ -154,7 +154,7 @@ namespace BeWo.ViewModel } var categoriesWithParents = dictOid2TreeItem.Values.Where(w => w.GoalEntryDC.ParentOid != null).ToList(); - foreach (var goalCategory in categoriesWithParents) + foreach (var goalCategory in categoriesWithParents.OrderBy(s => s.Name)) { if (dictOid2TreeItem.ContainsKey(goalCategory.GoalEntryDC.ParentOid.Value)) { diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj b/BeWoPlanerMobil/BeWoPlanerMobil.csproj index 17c59fee5..3620dc5d7 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj @@ -5109,7 +5109,10 @@ - + + + + 10.0 diff --git a/BeWoPlanerMobil/Controllers/CustomerController.cs b/BeWoPlanerMobil/Controllers/CustomerController.cs index 5a700fc81..57297ff2e 100644 --- a/BeWoPlanerMobil/Controllers/CustomerController.cs +++ b/BeWoPlanerMobil/Controllers/CustomerController.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Web.Mvc; using BeWo.Report.DefaultReports; @@ -118,8 +119,7 @@ namespace BeWoPlanerMobil.Controllers Model.SelectedCustomer = customer; - var bargeldkassen = OperationsService.LoadBargeldkassenForObject(TableID.Customer, customerOid.Value); - Model.Bargeldkassen = bargeldkassen; + ReloadBargeldkassen(); } [Authorize] @@ -207,89 +207,6 @@ namespace BeWoPlanerMobil.Controllers } [Authorize] - [HttpPost] - public ActionResult SelectReport(FormCollection formCollection) - { - if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || !AbstractModel.IsAllowedToSeeMedikamentenliste) - { - return Logout(); - } - - Model.Report = null; - - if(!int.TryParse(formCollection["report-type-input"], out var selectedReportTypeInt)) - { - return RedirectToActionPermanent("Customer"); - } - - var selectedReportType = (CustomerReportType) selectedReportTypeInt; - - SelectReport(selectedReportType); - - //return RedirectToActionPermanent("Customer", Model); - return RedirectToActionPermanent("Customer"); - } - - private void SelectReport(CustomerReportType selectedReportType) - { - Model.SelectedReportType = selectedReportType; - - GenerateMobileMedListForSelectedCustomer(); - } - - public string SelectReportType(int reportType) - { - if(Model is null) - { - return "Die Auswahl des Berichts ist fehlgeschlagen. Bitte wenden Sie sich an den Administrator."; - } - - Model.SelectedReportType = (CustomerReportType) reportType; - - return LeerzeichenFuerGetMethoden; - } - - public void GenerateMobileMedListForSelectedCustomer(long? selectedMedListOid = null) - { - if(Model.SelectedCustomerOid is null) - { - return; - } - - long? medListOid = null; - var customerOid = Model.SelectedCustomerOid.Value; - - switch(Model.SelectedReportType) - { - case CustomerReportType.Medikamentenliste: - medListOid = CustomerService.GetActiveMedListByTypeForCustomer(customerOid, false); - break; - case CustomerReportType.Bedarfsmedikation: - medListOid = CustomerService.GetActiveMedListByTypeForCustomer(customerOid, true); - break; - case CustomerReportType.Historie: - medListOid = selectedMedListOid; - break; - } - - var medList = Model.SelectedCustomer.Medikamentenverordnungslisten.FirstOrDefault(f => f.MedikamentenverordnungslistenOid == medListOid); - - if(medList?.MedikamentenverordnungslistenOid is null || Request?.Url is null) - { - return; - } - - Model.ReportName = $"Medikamentenverordnung vom {medList.ErstellDatum}"; - - using (var memoryStream = ReportService.CreateMedikamentenlistenReport(medList.MedikamentenverordnungslistenOid.Value, MobileSessionFacade.Tenant)) - { - var medikamentenverordnungslistenReport = new MedikamentenverordnungslistenReport(); - medikamentenverordnungslistenReport.PrintingSystem.LoadDocument(memoryStream); - - Model.Report = medikamentenverordnungslistenReport; - } - } - public ActionResult UpdateCustomer(FormCollection formCollection) { if(Model is null) @@ -394,36 +311,104 @@ namespace BeWoPlanerMobil.Controllers return RedirectToActionPermanent("Customer", new { id = customer.CustomerOid }); } + + #region Medikamentenverordnungen [Authorize] - [HttpPost] - public ActionResult ViewMedListFromHistoryList(FormCollection formCollection) + public ActionResult ShowMedList(int reportType) { - if(!long.TryParse(formCollection["med-list-oid"], out var medListOid)) + if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || !AbstractModel.IsAllowedToSeeMedikamentenliste) { - return RedirectToActionPermanent("Customer"); + return Logout(); + } + + var selectedReportType = (CustomerReportType)reportType; + + SelectReport(selectedReportType); + + return PartialView("CustomerReportPartial", Model); + } + + [Authorize] + public ActionResult ShowHistoricalMedList(long medListOid) + { + if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || !AbstractModel.IsAllowedToSeeMedikamentenliste) + { + return Logout(); } Model.SelectedReportType = CustomerReportType.Historie; GenerateMobileMedListForSelectedCustomer(medListOid); - return RedirectToActionPermanent("Customer"); + return PartialView("CustomerReportPartial", Model); } [Authorize] - [HttpPost] - public ActionResult DeleteMedListFromHistoryList(FormCollection formCollection) + public ActionResult DeleteHistoricalMedList(long medListOid) { - if(!long.TryParse(formCollection["med-list-oid"], out var medListOid)) + if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || !AbstractModel.IsAllowedToSeeMedikamentenliste) { - return RedirectToActionPermanent("Customer"); + return Logout(); } Model.SelectedReportType = CustomerReportType.Historie; CustomerService.DeleteMedikamentenverordnungsliste(medListOid); - - return RedirectToActionPermanent("Customer"); + + LoadCustomerToModel(Model.SelectedCustomerOid); + + return PartialView("CustomerMedListPartial", Model); + } + + private void SelectReport(CustomerReportType selectedReportType) + { + Model.SelectedReportType = selectedReportType; + + GenerateMobileMedListForSelectedCustomer(); + } + + private void GenerateMobileMedListForSelectedCustomer(long? selectedMedListOid = null) + { + if(Model.SelectedCustomerOid is null) + { + return; + } + + long? medListOid = null; + var customerOid = Model.SelectedCustomerOid.Value; + + switch(Model.SelectedReportType) + { + case CustomerReportType.Medikamentenliste: + medListOid = CustomerService.GetActiveMedListByTypeForCustomer(customerOid, false); + break; + case CustomerReportType.Bedarfsmedikation: + medListOid = CustomerService.GetActiveMedListByTypeForCustomer(customerOid, true); + break; + case CustomerReportType.Historie: + medListOid = selectedMedListOid; + break; + } + + var medList = Model.SelectedCustomer.Medikamentenverordnungslisten.FirstOrDefault(f => f.MedikamentenverordnungslistenOid == medListOid); + + if(medList?.MedikamentenverordnungslistenOid is null || Request?.Url is null) + { + return; + } + + Model.ReportName = $"Medikamentenverordnung vom {medList.ErstellDatum}"; + + using(var memoryStream = ReportService.CreateMedikamentenlistenReport(medList.MedikamentenverordnungslistenOid.Value, MobileSessionFacade.Tenant)) + { + var medikamentenverordnungslistenReport = new MedikamentenverordnungslistenReport(); + medikamentenverordnungslistenReport.PrintingSystem.LoadDocument(memoryStream); + + Model.Report = medikamentenverordnungslistenReport; + Model.BargeldkassenReportName = null; + Model.BargeldkassenReportObject = null; + Model.ZahlungsbelegsReportObject = null; + } } [Authorize] @@ -433,8 +418,20 @@ namespace BeWoPlanerMobil.Controllers return LeerzeichenFuerGetMethoden; } + #endregion #region Bargeldkassen + + private void ReloadBargeldkassen() + { + if(Model?.SelectedCustomer?.CustomerOid is null) + { + return; + } + + Model.Bargeldkassen = OperationsService.LoadBargeldkassenForObject(TableID.Customer, Model.SelectedCustomer.CustomerOid.Value); + } + [Authorize] public string SelectBargeldkasse(long oid) { @@ -507,7 +504,7 @@ namespace BeWoPlanerMobil.Controllers OperationsService.DeactivateBargeldkasse(bargeldkassenOid, bargeldkassenVersion); - Model.Bargeldkassen = OperationsService.LoadBargeldkassenForObject(TableID.Customer, Model.SelectedCustomerOid.Value); + ReloadBargeldkassen(); return RedirectToActionPermanent("Customer"); } @@ -576,7 +573,7 @@ namespace BeWoPlanerMobil.Controllers if(bargeldkasse?.ObjectOid is null) { - return PartialView("BargeldkassenReportPartial", Model); + return PartialView("CustomerReportPartial", Model); } var bargeldkassenReportZeitraum = startDate.Equals(startDate.GetFirstOfMonth()) && endDate.Equals(startDate.GetLastOfMonth()) ? @@ -591,16 +588,296 @@ namespace BeWoPlanerMobil.Controllers report.PrintingSystem.LoadDocument(memoryStream); - Model.BargeldkassenReportObject = report; - Model.BargeldkassenReportName = name; + Model.Report = report; + Model.ReportName = name; - return PartialView("BargeldkassenReportPartial", Model); + return PartialView("CustomerReportPartial", Model); } [Authorize] public string SetSelectedAuszahlungsintervall(int auszahlungsintervall) { - Model.SelectedAuszahlungsintervall = auszahlungsintervall; + Model.SelectedAuszahlungsintervall = auszahlungsintervall < 4 && auszahlungsintervall >= 0 ? auszahlungsintervall : 0; + + return LeerzeichenFuerGetMethoden; + } + + [Authorize] + public ActionResult DownloadZahlungsbeleg(long transaktionsOid) + { + var kassenbuch = Model.Bargeldkassen.FirstOrDefault(bargeldkasse => bargeldkasse.Bargeldtransaktionen.Any(transaktion => transaktion.BargeldtransaktionOid.Equals(transaktionsOid))); + + var zahlung = kassenbuch?.Bargeldtransaktionen.FirstOrDefault(bargeldtransaktion => bargeldtransaktion.BargeldtransaktionOid.Equals(transaktionsOid)); + + if(zahlung != null && kassenbuch.ObjectOid.HasValue) + { + var memoryStream = ReportService.CreateKassenbelegReport(zahlung, kassenbuch.ObjectOid.Value, kassenbuch.ObjectTid); + + var report = new XtraReport(); + + report.PrintingSystem.LoadDocument(memoryStream); + + Model.Report = report; + Model.ReportName = "Zahlungsbeleg"; + } + + return PartialView("CustomerReportPartial", Model); + } + + [Authorize] + public ActionResult LoadBargeldtransaktionsEditForm(long transaktionsOid) + { + var kassenbuch = GetBargeldkasseByTransaktionsOid(transaktionsOid); + + var zahlung = kassenbuch?.Bargeldtransaktionen.FirstOrDefault(bargeldtransaktion => bargeldtransaktion.BargeldtransaktionOid.Equals(transaktionsOid)); + + Model.SelectedBargeldtransaktion = zahlung; + Model.SelectedBargeldkasse = kassenbuch; + + return PartialView("CustomerBargeldtransaktionenFormPartial", Model); + } + + private BargeldkassenDC GetBargeldkasseByTransaktionsOid(long transaktionsOid) + { + return Model.Bargeldkassen.FirstOrDefault(bargeldkasse => bargeldkasse.Bargeldtransaktionen.Any(transaktion => transaktion.BargeldtransaktionOid.Equals(transaktionsOid))); + } + + [Authorize] + public string SetTransaktionsart(int transaktionsart) + { + Model.SelectedTransaktionsart = transaktionsart < 2 && transaktionsart >= 0 ? transaktionsart : 0; + + return LeerzeichenFuerGetMethoden; + } + + [Authorize] + public ActionResult LoadBargeldtransaktionsForm(long bargeldkassenOid) + { + Model.SelectedBargeldtransaktion = null; + Model.SelectedTransaktionsart = 0; + + Model.SelectedBargeldkasse = Model.Bargeldkassen.FirstOrDefault(bk => bk.BargeldkassenOid.HasValue && bk.BargeldkassenOid.Equals(bargeldkassenOid)); + + return PartialView("CustomerBargeldtransaktionenFormPartial", Model); + } + + [Authorize] + public ActionResult CreateOrUpdateBargeldTransaktion2(string rawDate, string rawArt, string rawBetrag, string belegnummer, string notice) + { + var transaktion2Edit = Model.SelectedBargeldtransaktion; + var bargeldkasse = Model.SelectedBargeldkasse; + + var isNew = transaktion2Edit is null; + + var datum = DateTime.Parse(rawDate); + + var isDateValid = Enum.TryParse(rawArt, out Zahlungstyp art); + var isBetragValid = decimal.TryParse(rawBetrag.Replace('.', ','), NumberStyles.AllowDecimalPoint, new CultureInfo("DE-de"), out var betrag); + + if(!isDateValid || !isBetragValid || betrag <= 0) + { + TempData["CustomerBargeldkassenErrorMessage"] = "Datum oder Betrag sind ungültig!"; + return PartialView("CustomerBargeldkassen", Model); + } + + if(bargeldkasse is null) + { + TempData["CustomerBargeldkassenErrorMessage"] = "Beim Speichern der Transaktion ist ein Fehler aufgetreten. Bitte wenden Sie sich an Ihren Administrator."; + return PartialView("CustomerBargeldkassen", Model); + } + + if(isNew) + { + bargeldkasse.Bargeldtransaktionen.Add(new BargeldtransaktionDC + { + Belegnummer = belegnummer, + Betrag = betrag, + Notice = notice, + Zahlungsdatum = datum, + Zahlungstyp = art + }); + } + else + { + foreach(var bargeldtransaktion in bargeldkasse.Bargeldtransaktionen) + { + if(transaktion2Edit.BargeldtransaktionOid.HasValue && (bargeldtransaktion.BargeldtransaktionOid?.Equals(transaktion2Edit.BargeldtransaktionOid.Value) ?? false)) + { + bargeldtransaktion.Belegnummer = belegnummer; + bargeldtransaktion.Betrag = betrag; + bargeldtransaktion.Notice = notice; + bargeldtransaktion.Zahlungsdatum = datum; + bargeldtransaktion.Zahlungstyp = art; + + break; + } + } + } + + OperationsService.UpdateBargeldkasse(bargeldkasse); + + Model.SelectedBargeldkasse = null; + + ReloadBargeldkassen(); + + return PartialView("CustomerBargeldkassen", Model); + } + + [Authorize] + public ActionResult DeleteBargeldtransaktion(long? bargeldtransaktionsOid) + { + if(Model is null) + { + return Logout(); + } + + if(bargeldtransaktionsOid is null) + { + TempData["CustomerBargeldkassenErrorMessage"] = "Es ist ein Fehler beim Löschen der Bargeldtransaktion aufgetreten. Bitte wenden Sie sich an Ihren Administrator."; + return PartialView("CustomerBargeldkassen", Model); + } + + var bargeldkasse = GetBargeldkasseByTransaktionsOid(bargeldtransaktionsOid.Value); + + var bargeldtransaktion = bargeldkasse.Bargeldtransaktionen.FirstOrDefault(f => f.BargeldtransaktionOid.HasValue && f.BargeldtransaktionOid.Value.Equals(bargeldtransaktionsOid)); + + if(bargeldtransaktion is null) + { + TempData["CustomerBargeldkassenErrorMessage"] = "Es ist ein Fehler beim Löschen der Bargeldtransaktion aufgetreten. Bitte wenden Sie sich an Ihren Administrator."; + return PartialView("CustomerBargeldkassen", Model); + } + + bargeldkasse.Bargeldtransaktionen.Remove(bargeldtransaktion); + + OperationsService.UpdateBargeldkasse(bargeldkasse); + + if(Model.SelectedCustomer?.CustomerOid is null) + { + TempData["CustomerBargeldkassenErrorMessage"] = "Es ist ein Fehler beim Laden der Bargeldkassen aufgetreten. Bitte wenden Sie sich an Ihren Administrator."; + return PartialView("CustomerBargeldkassen", Model); + } + + ReloadBargeldkassen(); + + return PartialView("CustomerBargeldkassen", Model); + } + + [Authorize] + public ActionResult SaveTransaktionsunterschrift(long transaktionsOid, string signatureAsBase64) + { + if(Model is null) + { + return Logout(); + } + + var bargeldkasse = GetBargeldkasseByTransaktionsOid(transaktionsOid); + + var transaktion = bargeldkasse?.Bargeldtransaktionen.FirstOrDefault(f => f.BargeldtransaktionOid.HasValue && f.BargeldtransaktionOid.Value.Equals(transaktionsOid)); + + if(transaktion is null) + { + TempData["CustomerBargeldkassenErrorMessage"] = "Beim Speichern der Transaktionsunterschrift ist ein Fehler aufgetreten. Bitte wenden Sie sich an Ihren Administrator."; + return PartialView("CustomerBargeldkassen", Model); + } + + long? signatureOid; + + using(var signatureBitmap = SignatureUtils.Base64StringToBitmap(signatureAsBase64.Split(',')[1])) + { + var isValid = SignatureUtils.ValidateSignature(signatureBitmap); + + if(!isValid) + { + TempData["CustomerBargeldkassenErrorMessage"] = "Das Unterschriftenfeld darf nicht leer sein."; + } + + signatureOid = OperationsService.InsertSignature(new SignatureDC + { + DataBild = signatureAsBase64, + BargeldtransaktionsOid = transaktionsOid, + Zeitstempel = DateTime.Now + }).SignatureOid; + } + + if(signatureOid.HasValue) + { + foreach(var bargeldtransaktion in bargeldkasse.Bargeldtransaktionen) + { + if(bargeldtransaktion.BargeldtransaktionOid.HasValue && bargeldtransaktion.BargeldtransaktionOid.Value.Equals(transaktionsOid)) + { + bargeldtransaktion.SignatureOid = signatureOid; + } + } + + OperationsService.UpdateBargeldkasse(bargeldkasse); + } + + ReloadBargeldkassen(); + + return PartialView("CustomerBargeldkassen", Model); + } + + public ActionResult DeleteTransactionSignature(long transactionOid) + { + if(Model is null) + { + return Logout(); + } + + BargeldkassenDC bargeldkasse = null; + BargeldtransaktionDC transaction = null; + + foreach(var item in Model.Bargeldkassen) + { + transaction = item.Bargeldtransaktionen.FirstOrDefault(t => t.BargeldtransaktionOid.Equals(transactionOid)); + + if(transaction == null) + { + continue; + } + + bargeldkasse = item; + break; + } + + var signatureOid = transaction?.SignatureOid; + + if(signatureOid.HasValue) + { + bargeldkasse.Bargeldtransaktionen.DoForEach(t => + { + if(t.BargeldtransaktionOid.Equals(transactionOid)) + { + t.SignatureOid = null; + } + }); + + OperationsService.DeleteBargeldtransaktionSignature(signatureOid.Value); + OperationsService.UpdateBargeldkasse(bargeldkasse); + + ReloadBargeldkassen(); + } + + return PartialView("CustomerBargeldkassen", Model); + } + + public ActionResult LoadHistoryEntries(long transactionOid) + { + if(Model is null) + { + return Logout(); + } + + var historyEntries = OperationsService.LoadBargeldtransaktionshistoryEntries(transactionOid); + + Model.BargeldtransaktionshistoryEntries = historyEntries; + + return PartialView("CustomerBargeldtransaktionshistorienPartial", Model); + } + + public string ClearHistoryEntries() + { + Model?.BargeldtransaktionshistoryEntries.Clear(); return LeerzeichenFuerGetMethoden; } diff --git a/BeWoPlanerMobil/Controllers/MainController.cs b/BeWoPlanerMobil/Controllers/MainController.cs index c09086721..0d5c67460 100644 --- a/BeWoPlanerMobil/Controllers/MainController.cs +++ b/BeWoPlanerMobil/Controllers/MainController.cs @@ -161,6 +161,7 @@ namespace BeWoPlanerMobil.Controllers BS.Shared.Settings.ApplicationSettings.AnzTageZeiterfassErfolgt = UserSettingsUtils.GetSettingValueAsInteger(mandatorSettings, SettingsKeys.AnzTageZeiterfassErfolgt); BS.Shared.Settings.ApplicationSettings.MaxDaysEditServiceRecordsAllowed = UserSettingsUtils.GetSettingValueAsInteger(mandatorSettings, SettingsKeys.MaxDaysEditServiceRecordsAllowed); BS.Shared.Settings.ApplicationSettings.TimeUntilUILock = UserSettingsUtils.GetSettingValueAsInteger(mandatorSettings, SettingsKeys.TimeUntilUILock); + BS.Shared.Settings.ApplicationSettings.ServiceRecordAllowChangeHours = UserSettingsUtils.GetSettingValueAsInteger(mandatorSettings, SettingsKeys.ServiceRecordAllowChangeHours); AbstractModel.ShowServiceRecordInsertedOn = !UserSettingsUtils.GetSettingValueAsBool(mandatorSettings, SettingsKeys.HideServiceRecordInsertedByAndInsertedOn); @@ -526,7 +527,13 @@ namespace BeWoPlanerMobil.Controllers foreach(var ziel in ziele.Where(z => z.ValueListEntryOid.HasValue)) { - var treeItem = new GoalTreeItem { Children = new List(), Header = ziel.DisplayName ?? string.Empty, ParentOid = ziel.ParentOid, ValueListEntryOid = ziel.ValueListEntryOid }; + var treeItem = new GoalTreeItem(true) + { + Children = new List(), + Header = ziel.DisplayName ?? string.Empty, + ParentOid = ziel.ParentOid, + ValueListEntryOid = ziel.ValueListEntryOid + }; goalTreeDic.Add(ziel.ValueListEntryOid.Value, treeItem); @@ -556,7 +563,15 @@ namespace BeWoPlanerMobil.Controllers } } - var kind = new GoalTreeItem { Children = new List(), Header = ziel.DisplayName ?? string.Empty, IsLeaf = true, ValueListEntryOid = ziel.ValueListEntryOid, RatingName = ratingName}; + var kind = new GoalTreeItem(false) + { + Children = new List(), + Header = ziel.DisplayName ?? string.Empty, + IsLeaf = true, + ValueListEntryOid = ziel.ValueListEntryOid, + RatingName = ratingName, + ParentOid = ziel.ParentOid + }; if(ziel.ParentOid is null || !goalTreeDic.ContainsKey(ziel.ParentOid.Value)) { @@ -771,7 +786,7 @@ namespace BeWoPlanerMobil.Controllers return LeerzeichenFuerGetMethoden; } - long? oid = null; + long? oid; using(var signatureBitmap = SignatureUtils.Base64StringToBitmap(blob.Split(',')[1])) { diff --git a/BeWoPlanerMobil/Models/CustomerModel.cs b/BeWoPlanerMobil/Models/CustomerModel.cs index bfa4d754b..fee49656c 100644 --- a/BeWoPlanerMobil/Models/CustomerModel.cs +++ b/BeWoPlanerMobil/Models/CustomerModel.cs @@ -106,32 +106,33 @@ namespace BeWoPlanerMobil.Models } } - public List OldMedLists - { - get - { - var result = new List(); + // ToDo: KGW + //public List OldMedLists + //{ + // get + // { + // var result = new List(); - var ungueltigeListen = SelectedCustomer.Medikamentenverordnungslisten.Where(w => !w.Gueltig).OrderBy(x => x.ErstellDatum).ToList(); + // var ungueltigeListen = SelectedCustomer.Medikamentenverordnungslisten.Where(w => !w.Gueltig).OrderByDescending(x => x.ErstellDatum).ToList(); - foreach(var list in ungueltigeListen) - { - result.Add(new SelectListItem - { - Value = list.MedikamentenverordnungslistenOid.Value.ToString(), - Text = $"{(list.MedListType ? "Medikamentenverordnungsliste" : "Bedarfsmedikamentenverordnungsliste")} vom {list.ErstellDatum}" - }); - } + // foreach(var list in ungueltigeListen) + // { + // result.Add(new SelectListItem + // { + // Value = list.MedikamentenverordnungslistenOid.Value.ToString(), + // Text = $"{(list.MedListType ? "Medikamentenverordnungsliste" : "Bedarfsmedikamentenverordnungsliste")} vom {list.ErstellDatum}" + // }); + // } - return result; - } - } + // return result; + // } + //} public XtraReport Report { get; set; } public string ReportName { get; set; } - public List Bargeldkassen { get; set; } + public List Bargeldkassen { get; set; } = new List(); [Display(Name = "Kategorie")] public long? SelectedAbsenceReason { get; set; } @@ -168,23 +169,31 @@ namespace BeWoPlanerMobil.Models [Display(Name="Auszahlunsintervall")] public int SelectedAuszahlungsintervall { get; set; } - public List Auszahlungsintervalle - { - get + public List Auszahlungsintervalle => + new List { - var result = new List - { - 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; - } - } + 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"}, + }; public XtraReport BargeldkassenReportObject { get; set; } public string BargeldkassenReportName { get; set; } + + public XtraReport ZahlungsbelegsReportObject { get; set; } + + public BargeldtransaktionDC SelectedBargeldtransaktion { get; set; } + + [Display(Name = "Art")] + public int SelectedTransaktionsart { get; set; } + public List Transaktionsarten => + new List + { + new SelectListItem{Value=((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung"}, + new SelectListItem{Value=((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung"} + }; + + public List BargeldtransaktionshistoryEntries { get; set; } = new List(); } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/MainModel.cs b/BeWoPlanerMobil/Models/MainModel.cs index 91eed7297..faf9365eb 100644 --- a/BeWoPlanerMobil/Models/MainModel.cs +++ b/BeWoPlanerMobil/Models/MainModel.cs @@ -114,7 +114,7 @@ namespace BeWoPlanerMobil.Models { if(serviceRecord.InsertedOn.HasValue) { - if(DateTime.Now < serviceRecord.InsertedOn.Value.AddDays(1)) + if(DateTime.Now < serviceRecord.InsertedOn.Value.AddDays(ApplicationSettings.ServiceRecordAllowChangeHours)) { allowed = true; } diff --git a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js index df1a631cd..d34a08db2 100644 --- a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js +++ b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js @@ -285,29 +285,29 @@ function cardHeaderClick(chevronId, cardBodyId) { function cardHeaderClick2(element, callback) { try { if(element === undefined || element === null) { + console.logWarning("element is undefined or null!"); return; } - var jQElement = $(element); + var chevronDown = $(element).find(".fa-chevron-down"); + var chevronUp = $(element).find(".fa-chevron-up"); - var icon = jQElement.find("svg.chevron-identifier-class"); - var collapse = jQElement.next(".collapse"); + //if(chevronDown.length) { + chevronDown.removeClass("fa-chevron-down").addClass("fa-chevron-up"); + //chevronDown.addClass("fa-chevron-up"); + //} - if (collapse.length) { - $(collapse).toggle(); - } + //if(chevronUp.length) { + chevronUp.removeClass("fa-chevron-up").addClass("fa-chevron-down"); + //} - if (icon.length && collapse.length) { - var isDown = $(collapse).css("display") !== "none"; - var chevron = $(icon); - var iconToRemove = isDown ? "fa-chevron-down" : "fa-chevron-up"; - var iconToAdd = isDown ? "fa-chevron-up" : "fa-chevron-down"; + //logInfo(`${chevronDown.attr("class")}`); - chevron.removeClass(iconToRemove); - chevron.addClass(iconToAdd); - } + //$(element).find(".fa-chevron-down,.fa-chevron-up").toggleClass("fa-chevron-down").toggleClass("fa-chevron-up"); + + $(element).next(".collapse").toggle(); - if (typeof callback === "function") { + if(typeof callback === "function") { callback(); } } catch (error) { diff --git a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/utils/dateUtils.js b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/utils/dateUtils.js index 12e2ff0f0..83e71993b 100644 --- a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/utils/dateUtils.js +++ b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/utils/dateUtils.js @@ -118,4 +118,23 @@ function mergeDateAndTime(date, time) { // ToDo: Löst Exception aus bei einem Wert von z.B. "06.02.2023". function isValidDate(date) { return Object.prototype.toString.call(date) === "[object Date]" && !isNaN(date); +} + +function ddMMyyyyToyyyyMMdd(dateString) +{ + if (dateString === undefined || dateString === null || typeof dateString != "string" || dateString.length !== 10) { + return null; + } + + var dayMonthYear = dateString.split("."); + + if(dayMonthYear.length !== 3) { + return null; + } + + var dd = dayMonthYear[0]; + var mm = dayMonthYear[1]; + var yyyy = dayMonthYear[2]; + + return `${yyyy}-${mm}-${dd}`; } \ No newline at end of file diff --git a/BeWoPlanerMobil/Scripts/tempusdominus-boostrap-4.min.js b/BeWoPlanerMobil/Scripts/tempusdominus-boostrap-4.min.js index 9354efe60..29e1c64f9 100644 --- a/BeWoPlanerMobil/Scripts/tempusdominus-boostrap-4.min.js +++ b/BeWoPlanerMobil/Scripts/tempusdominus-boostrap-4.min.js @@ -1471,7 +1471,7 @@ if ((version[0] <= 2 && version[1] < 17) || version[0] >= 3) throw new Error("Te .on(f.Event.FOCUS, "." + f.ClassName.INPUT, function (a) { var b = k(e(this)), c = b.data(f.DATA_KEY); - 0 !== b.length && c._options.allowInputToggle && l._jQueryInterface.call(b, c, a); + 0 !== b.length && (c !== undefined || c !== null) && c._options.allowInputToggle && l._jQueryInterface.call(b, c, a); }), (e.fn[f.NAME] = l._jQueryInterface), (e.fn[f.NAME].Constructor = l), diff --git a/BeWoPlanerMobil/Util/GoalTreeItem.cs b/BeWoPlanerMobil/Util/GoalTreeItem.cs index 94b799771..b927303b7 100644 --- a/BeWoPlanerMobil/Util/GoalTreeItem.cs +++ b/BeWoPlanerMobil/Util/GoalTreeItem.cs @@ -17,5 +17,12 @@ namespace BeWoPlanerMobil.Util public long? TopmostParentOid { get; set; } public string RatingName { get; set; } = "Bewerten"; + + public bool IsGoal { get; } + + public GoalTreeItem(bool isGoal) + { + IsGoal = isGoal; + } } } diff --git a/BeWoPlanerMobil/Views/Customer/BargeldkassenReportPartial.cshtml b/BeWoPlanerMobil/Views/Customer/BargeldkassenReportPartial.cshtml deleted file mode 100644 index 3217f5ede..000000000 --- a/BeWoPlanerMobil/Views/Customer/BargeldkassenReportPartial.cshtml +++ /dev/null @@ -1,41 +0,0 @@ -@model BeWoPlanerMobil.Models.CustomerModel - - - -@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() -} \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Customer/Customer.cshtml b/BeWoPlanerMobil/Views/Customer/Customer.cshtml index 178566b9f..c7242af9a 100644 --- a/BeWoPlanerMobil/Views/Customer/Customer.cshtml +++ b/BeWoPlanerMobil/Views/Customer/Customer.cshtml @@ -1,5 +1,4 @@ -@using BeWoPlanerMobil.Controllers -@using BeWoPlanerMobil.Models; +@using BeWoPlanerMobil.Models; @using BeWoPlanerMobil.Util @using BS.Shared @@ -8,26 +7,7 @@ ViewBag.Title = "Klient"; } -
@@ -173,327 +99,348 @@
-
+
@if(Model?.SelectedJsonCustomer != null) { - using(Html.BeginForm("UpdateCustomer", "Customer", FormMethod.Post, new { id = "stammdaten-form", @class = "needs-validation", novalidate = "novalidate" })) - { - var inputDisabled = !AbstractModel.HasRightToEditCustomers ? "disabled" : string.Empty; - -
-
-
-
-
- Eigenschaften -
-
-
-
-
-
- Vorname -
-
- -
- Dieses Feld darf nicht leer sein! -
-
-
-
-
-
-
-
-
- Nachname -
-
- -
- Dieses Feld darf nicht leer sein! -
-
-
-
-
-
-
-
-
- Alias -
-
- -
-
-
-
-
-
-
-
- Geburtstag -
-
- -
-
- -
-
-
-
-
-
-
-
-
-
- Geschlecht -
-
- @{ - var selectedMale = Model.SelectedJsonCustomer.CustomerSex == Sex.Male ? "selected" : string.Empty; - var selectedFemale = Model.SelectedJsonCustomer.CustomerSex == Sex.Female ? "selected" : string.Empty; - var selectedDiverse = Model.SelectedJsonCustomer.CustomerSex == Sex.Divers ? "selected" : string.Empty; - var selectedNull = Model.SelectedJsonCustomer.CustomerSex is null ? "selected" : string.Empty; - } - - -
-
-
-
-
-
-
-
-
-
- Adresse -
-
-
-
-
-
- Adresszusatz -
-
- -
-
-
-
-
-
-
-
- Straße -
-
- -
-
-
-
-
-
-
-
- PLZ -
-
- -
-
-
-
-
-
-
-
- Ort -
-
- -
-
-
-
-
-
-
-
-
-
- Rechnungsadresse -
-
-
-
-
-
- Name -
-
- -
-
-
-
-
-
-
-
- Straße -
-
- -
-
-
-
-
-
-
-
- PLZ -
-
- -
-
-
-
-
-
-
-
- Ort -
-
- -
-
-
-
-
-
-
-
-
-
- Kontakt -
-
-
-
-
-
- Handy -
-
- -
- -
-
-
-
-
-
-
-
-
- Telefon -
-
- -
- -
-
-
-
-
-
-
-
-
- Fax -
-
- -
-
-
-
-
-
-
-
- Mail -
-
- -
- -
-
-
-
-
-
-
- -
+ @* ----- Details ----- *@ +
-
-
-
Kommentar
+
+
+ +
+
+
-
-
- +
+
+ @using(Html.BeginForm("UpdateCustomer", "Customer", FormMethod.Post, new { id = "stammdaten-form", @class = "needs-validation", novalidate = "novalidate" })) + { + var inputDisabled = !AbstractModel.HasRightToEditCustomers ? "disabled" : string.Empty; + +
+
+
+
+
+ Eigenschaften +
+
+
+
+
+
+ Vorname +
+
+ +
+ Dieses Feld darf nicht leer sein! +
+
+
+
+
+
+
+
+
+ Nachname +
+
+ +
+ Dieses Feld darf nicht leer sein! +
+
+
+
+
+
+
+
+
+ Alias +
+
+ +
+
+
+
+
+
+
+
+ Geburtstag +
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+ Geschlecht +
+
+ @{ + var selectedMale = Model.SelectedJsonCustomer.CustomerSex == Sex.Male ? "selected" : string.Empty; + var selectedFemale = Model.SelectedJsonCustomer.CustomerSex == Sex.Female ? "selected" : string.Empty; + var selectedDiverse = Model.SelectedJsonCustomer.CustomerSex == Sex.Divers ? "selected" : string.Empty; + var selectedNull = Model.SelectedJsonCustomer.CustomerSex is null ? "selected" : string.Empty; + } + + +
+
+
+
+
+
+
+
+
+
+ Adresse +
+
+
+
+
+
+ Adresszusatz +
+
+ +
+
+
+
+
+
+
+
+ Straße +
+
+ +
+
+
+
+
+
+
+
+ PLZ +
+
+ +
+
+
+
+
+
+
+
+ Ort +
+
+ +
+
+
+
+
+
+
+
+
+
+ Rechnungsadresse +
+
+
+
+
+
+ Name +
+
+ +
+
+
+
+
+
+
+
+ Straße +
+
+ +
+
+
+
+
+
+
+
+ PLZ +
+
+ +
+
+
+
+
+
+
+
+ Ort +
+
+ +
+
+
+
+
+
+
+
+
+
+ Kontakt +
+
+
+
+
+
+ Handy +
+
+ +
+ +
+
+
+
+
+
+
+
+
+ Telefon +
+
+ +
+ +
+
+
+
+
+
+
+
+
+ Fax +
+
+ +
+
+
+
+
+
+
+
+ Mail +
+
+ +
+ +
+
+
+
+
+
+
+ +
+
+
+
+
Kommentar
+
+
+
+
+ +
+
+
+
+ + @if(AbstractModel.HasRightToEditCustomers) + { +
+ +
+ } +
+ }
- @if(AbstractModel.HasRightToEditCustomers) + @* ----- Aktenzeichen ----- *@ + if(Model.SelectedJsonCustomer.ReferenceNumbers.Any()) {
- -
- } - -
-
-
- - - @if(Model.SelectedJsonCustomer.ReferenceNumbers.Any()) - { -
-
+
- +
-
+
@@ -536,14 +483,14 @@ } - - @if(Model.SelectedJsonCustomer.Umfeldpersonen.Any()) + @* ----- Umfeld ----- *@ + if(Model.SelectedJsonCustomer.Umfeldpersonen.Any()) { -
+
-
+
- +
-
+
@foreach(var umfeldPerson in Model.SelectedJsonCustomer.Umfeldpersonen) {
-
+
@@ -630,30 +577,30 @@
} - - @if(Model.SelectedJsonCustomer.Organisations.Any()) + @* ----- Organisationen des Umfelds ----- *@ + if(Model.SelectedJsonCustomer.Organisations.Any()) { -
+
-
+
- +
-
-
+
@foreach(var organisation in Model.SelectedJsonCustomer.Organisations) {
-
+
- +
-
+
@@ -753,11 +700,12 @@
} + @* ----- Dokumente ----- *@
-
+
- +
-
+
@Html.Partial("DocumentPartial", Model) @@ -775,84 +723,38 @@
- - @if(AbstractModel.IsAllowedToSeeMedikamentenliste) + @* ----- Medikamentenliste ----- *@ + if(AbstractModel.IsAllowedToSeeMedikamentenliste) {
-
-
-
Medikamentenverordnungen
+
+
+
+ +
+
+ +
-
-
-
-
- @Html.DropDownListFor(m => m.SelectedReportType, Model.ReportTypeItems, new { @class = "custom-select", id = "report-type-select", onchange = "changeReportTypeSelection()" }) -
-
- @{ - var showReportBtnDisabledValue = Model.SelectedReportType == CustomerReportType.Historie ? "disabled" : string.Empty; - } - -
-
- @if(!(Model.SelectedCustomer is null)) - { - var displayValue = Model.SelectedReportType == CustomerReportType.Historie ? string.Empty : "d-none"; - -
- - - - - - - - - @foreach(var list in Model.SelectedCustomer.Medikamentenverordnungslisten.Where(w => !w.Gueltig)) - { - var listName = $"{(list.MedListType ? "Medikamentenverordnungsliste" : "Bedarfsmedikamentenverordnungsliste")} vom {list.ErstellDatum}"; - var name = $"{listName} von {list.Ersteller}"; - - - - - - } - -
- Liste - - Ersteller -
- @listName - - @list.Ersteller - - - -
- } -
-
+
+
+ @Html.Partial("CustomerMedListPartial", Model)
} - - @if(AbstractModel.HasRightToViewDiagnosen && (Model.SelectedJsonCustomer.HasDiagnosen || Model.SelectedJsonCustomer.HasDisabilities || Model.SelectedJsonCustomer.HasSchwebi)) + @* ----- Diagnosen ----- *@ + if(AbstractModel.HasRightToViewDiagnosen && (Model.SelectedJsonCustomer.HasDiagnosen || Model.SelectedJsonCustomer.HasDisabilities || Model.SelectedJsonCustomer.HasSchwebi)) {
-
+
- +
-
+
@{ var hasDiagnosen = Model.SelectedJsonCustomer.HasDiagnosen; @@ -975,31 +877,31 @@
} - @{ - var isRelatedCustomer = Model.SelectedCustomerOid.HasValue && Model.Employee.RelatedCustomers.Any(cer => cer.Customer.CustomerOid.Equals(Model.SelectedCustomerOid.Value)); - var isAllowedToViewBargeldkassen = AbstractModel.HasRightToViewAllCustomersBargeldkassen || (isRelatedCustomer && AbstractModel.HasRightToViewOwnCustomersBargeldkassen); - } + var isRelatedCustomer = Model.SelectedCustomerOid.HasValue && Model.Employee.RelatedCustomers.Any(cer => cer.Customer.CustomerOid.Equals(Model.SelectedCustomerOid.Value)); + + var isAllowedToViewBargeldkassen = AbstractModel.HasRightToViewAllCustomersBargeldkassen || (isRelatedCustomer && AbstractModel.HasRightToViewOwnCustomersBargeldkassen); + @* Bargeldverwaltung TODO: NOCH NICHT FERTIG! *@ - @if(Html.IsInDebugMode() && isAllowedToViewBargeldkassen && !(Model.Bargeldkassen is null) && Model.Bargeldkassen.Any()) + if(Html.IsInDebugMode() && isAllowedToViewBargeldkassen) { - + @* ----- Bargeldverwaltung ----- *@
- +
-
+
-
+
@Html.Partial("CustomerBargeldkassen", Model)
@@ -1008,14 +910,14 @@
} - @* Abwesenheiten *@ - @if(AbstractModel.HasRightToViewCustomerAbsenceTimes) + @* ----- Abwesenheiten ----- *@ + if(AbstractModel.HasRightToViewCustomerAbsenceTimes) {
-
+
- +
-
+
-
+
@Html.Partial("CustomerBetreuungPartial", Model) @@ -1068,9 +970,6 @@
} - -
- } }
@@ -1097,41 +996,38 @@
} -@if(!(Model?.Report is null)) -{ - -} +@* ----- Reports; Medikamentenlisten, Bargeldkassenreport, Zahlungsbelege ----- *@ +
+ @Html.Partial("CustomerReportPartial", Model) +
-@using(Html.BeginForm("SelectReport", "Customer", FormMethod.Post, new { id = "medverordnungs-form" })) -{ - -} - -@using(Html.BeginForm("ViewMedListFromHistoryList", "Customer", FormMethod.Post, new { id = "view-history-med-list" })) -{ - -} - -@using(Html.BeginForm("DeleteMedListFromHistoryList", "Customer", FormMethod.Post, new { id = "delete-history-med-list" })) -{ - -} @using(Html.BeginForm("SelectAbsenceTime", "Customer", FormMethod.Post, new { id = "customer-absence-selection-form" })) { -} \ No newline at end of file +} + +@* Unterschriftenlayover für den Zahlungsbeleg *@ +
+
+
+
+ +

+
+
+
+
+ +
+
+
+
+ + +
+
+
+
diff --git a/BeWoPlanerMobil/Views/Customer/CustomerBargeldkassen.cshtml b/BeWoPlanerMobil/Views/Customer/CustomerBargeldkassen.cshtml index 0f032ebe4..1bac6fdd0 100644 --- a/BeWoPlanerMobil/Views/Customer/CustomerBargeldkassen.cshtml +++ b/BeWoPlanerMobil/Views/Customer/CustomerBargeldkassen.cshtml @@ -40,7 +40,7 @@ function editBtnClickTest(bargeldkassenOid, bargeldkassenname) { try { showSpinner(); - + $("#customer-bargeldkassen-modal-body").load("@Url.Action("LoadEditFormPartial")", {bargeldkassenOid: bargeldkassenOid}, function () { hideSpinner(); $("#customer-bargeldkassen-form-popup-title").text(bargeldkassenname + " bearbeiten"); @@ -83,15 +83,22 @@ try { showSpinner(); - var start = $("#customer-bargeldkasse-start-date-" + bargeldkassenOid).val(); - var end = $("#customer-bargeldkasse-end-date-" + bargeldkassenOid).val(); + var start = $(`#customer-bargeldkasse-start-date-${bargeldkassenOid}`).val(); + var end = $(`#customer-bargeldkasse-end-date-${bargeldkassenOid}`).val(); - $("#customer-bargeldkassen-report-popup").modal("show"); - - $("#customer-bargeldkassen-report-modal-body").load("@Url.Action("PrintBargeldkasse")", {kassenbuchOid: bargeldkassenOid, reportStartDate: start, reportEndDate: end}, function () { - hideSpinner(); - }); + $("#customer-report-popup-container").load("@Url.Action("PrintBargeldkasse")", + { + kassenbuchOid: bargeldkassenOid, + reportStartDate: start, + reportEndDate: end + }, + function () { + hideSpinner(); + $("#customer-report-container").height($(window).height() * .8); + $("#customer-report-popup").modal("show"); + } + ); } catch(error) { showErrorPopup(error); } @@ -122,7 +129,130 @@ function deleteBargeldransaktion(transaktionsOid) { try { + if(false === $.isNumeric(transaktionsOid)) { + showErrorMessagePopup("Es ist ein Fehler beim Löschen einer Transaktion gekommen. Bitte wenden Sie sich an Ihren Administrator"); + } + showMessagePopupWithCallback("Transaktion löschen", + "Möchten Sie den Eintrag wirklich löschen?", + function () { + showSpinner(); + $("#bargeldkassen-container").load("@Url.Action("DeleteBargeldtransaktion")", + { + bargeldtransaktionsOid: transaktionsOid + }, + function() { + hideSpinner(); + }); + }, + false); + } catch(error) { + showErrorPopup(error); + } + } + + function signZahlungsbeleg(transaktionsOid) { + try { + $("#customer-container").hide(); + $("#transaktionsunterschriftencontainer").addClass("d-block"); + $("#transaktionsunterschriftencontainer").removeClass("d-none"); + + resizeCanvas("#transaktionsunterschriftencanvas", "#transaktionsunterschriften-canvas-row"); + + var canvas = document.getElementById("transaktionsunterschriftencanvas"); + + var signaturePad = new SignaturePad(canvas, { backgroundColor: "rgba(255, 255, 255, 0)" }); + + var cancelButton = document.getElementById("transaktionsunterschriften-cancel-btn"); + var saveButton = document.getElementById("transaktionsunterschriften-save-btn"); + var clearButton = document.getElementById("transaktionsunterschriften-clear-canvas-btn"); + + cancelButton.addEventListener("click", + function () { + var canvas = document.getElementById("transaktionsunterschriftencanvas"); + var width = canvas.getBoundingClientRect().width; + var height = canvas.getBoundingClientRect().height; + + if(width === 0 || height === 0 || signaturePad.isEmpty()) { + logInfo("width oder height sind 0 oder das SignaturePad ist leer"); + + $("#customer-container").show(); + $("#transaktionsunterschriftencontainer").removeClass("d-block"); + $("#transaktionsunterschriftencontainer").addClass("d-none"); + + signaturePad.clear(); + + return; + } + + showMessagePopupWithCallback("Unterschrift", + "Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?", + function () { + $("#customer-container").show(); + $("#transaktionsunterschriftencontainer").removeClass("d-block"); + $("#transaktionsunterschriftencontainer").addClass("d-none"); + + signaturePad.clear(); + }, + false); + }); + + saveButton.addEventListener("click", + function () { + var canvas = document.getElementById("transaktionsunterschriftencanvas"); + var clonedCanvas = cloneCanvas(canvas); + var trimmedCanvas = trimCanvas(clonedCanvas); + + var context = trimmedCanvas.getContext("2d", {willReadFrequently: true}); + context.globalCompositeOperation = "destination-over"; + context.fillStyle = "white"; + context.fillRect(0, 0, trimmedCanvas.width, trimmedCanvas.height); + + var dataUrl = trimmedCanvas.toDataURL("image/png"); + + showSpinner(); + + $("#bargeldkassen-container").load("@Url.Action("SaveTransaktionsunterschrift")", + { + transaktionsOid: transaktionsOid, + signatureAsBase64: dataUrl + }, + function () { + $("#transaktionsunterschriftencontainer").removeClass("d-block"); + $("#transaktionsunterschriftencontainer").addClass("d-none"); + $("#customer-container").show(); + + hideSpinner(); + }); + }); + + clearButton.addEventListener("click", + function () { + signaturePad.clear(); + }); + } catch(error) { + $("#transaktionsunterschriftencontainer").removeClass("d-block"); + $("#transaktionsunterschriftencontainer").addClass("d-none"); + $("#customer-container").show(); + showErrorPopup(error); + } + } + + function deleteZahlungsbelegsunterschrift(transaktionsOid) { + try { + showMessagePopupWithCallback("Transaktionsunterschrift löschen", + "message", + function () { + showSpinner(); + $("#bargeldkassen-container").load("@Url.Action("DeleteTransactionSignature")", + { + transactionOid: transaktionsOid + }, + function() { + hideSpinner(); + }); + }, + false); } catch(error) { showErrorPopup(error); } @@ -130,16 +260,87 @@ function downloadZahlungsbeleg(transaktionsOid) { try { + showSpinner(); + $("#customer-report-popup-container").load("@Url.Action("DownloadZahlungsbeleg")", + { + transaktionsOid: transaktionsOid + }, + function () { + hideSpinner(); + $("#customer-report-container").height($(window).height() * .8); + $("#customer-report-popup").modal("show"); + } + ); + } catch(error) { + showErrorPopup(error); + } + } + + function editBargeldtransaktion(bargeldkassenOid, transaktionsOid) { + try { + showSpinner(); + + $("#customer-bargeldkassentransaktion-modal-body").load("@Url.Action("LoadBargeldtransaktionsEditForm")", { transaktionsOid: transaktionsOid }, function () { + hideSpinner(); + $("#customer-bargeldtransaktions-form-popup").modal("show"); + calcBargeldtransaktionsFormPrependWidth(); + }); + } catch(error) { + showErrorPopup(error); + } + } + + function addNewBargeldtransaktion(bargeldkassenOid) { + try { + showSpinner(); + $("#customer-bargeldkassentransaktion-modal-body").load("@Url.Action("LoadBargeldtransaktionsForm")", {bargeldkassenOid: bargeldkassenOid}, function() { + hideSpinner(); + $("#customer-bargeldtransaktions-form-popup").modal("show"); + calcBargeldtransaktionsFormPrependWidth(); + }); + } catch(error) { + showErrorPopup(error); + } + } + + function showBargeldtransaktionshistorie(transaktionsOid) { + try { + showSpinner(); + + $("#customer-bargeldtransaktionshistorien-body").load("@Url.Action("LoadHistoryEntries")", + {transactionOid: transaktionsOid}, + function () { + hideSpinner(); + $("#customer-bargeldtransaktionshistorienpopup").modal("show"); + } + ); + } catch(error) { + showErrorPopup(error); + } + } + + function closeTransactionHistoryPopup() { + try { + $.get("@Url.Action("ClearHistoryEntries")").success(function() { + $("#customer-bargeldtransaktionshistorienpopup").modal("hide"); + }); } catch(error) { showErrorPopup(error); } } +@if(TempData["CustomerBargeldkassenErrorMessage"] != null) +{ + +} +
-
- +
+
@@ -151,14 +352,16 @@
- +
-

@bargeldkasse.Kassenname

+
-
+
@{ var anfangsbestand = bargeldkasse.Anfangsbestand?.ToString("0.00 €") ?? "0,00 €"; @@ -175,7 +378,7 @@
- @@ -196,7 +399,7 @@
-
+
Startdatum @@ -225,7 +428,12 @@ Enddatum
- +
@@ -235,7 +443,6 @@
- @*----- Stichtag -----*@
@@ -245,7 +452,7 @@ Stichtag
- +
@@ -255,9 +462,10 @@
-
- - +
+ @*----- Kassenbstand und Anfangsbestand -----*@ +
+ - -
Kassenbestand: @@ -274,23 +482,23 @@ @anfangsbestand
- @* Liste mit den Ein- und Auszahlungen *@ -
-
-
-
- -
-
-

Ein- und Auszahlungen

-
+ + + @* Liste mit den Ein- und Auszahlungen *@ +
+
+
+
+
-
-
- - +
+

Ein- und Auszahlungen

+
+ +
+
+
+ @{ var count = 0; } @@ -300,9 +508,29 @@ - @@ -321,7 +549,7 @@ - @@ -329,7 +557,7 @@ - @@ -337,7 +565,7 @@ - @@ -345,7 +573,7 @@ - @@ -353,7 +581,7 @@ - @@ -361,38 +589,32 @@ { } - - count++; - } - -
+ @if(transaktion.SignatureOid is null) + { + + } + else + { + + } + + @@ -313,7 +541,7 @@
Datum + @transaktion.Zahlungsdatum.Value.ToString("dd.MM.yyyy")
Art + @transaktion.Zahlungstyp
Betrag + @transaktion.Betrag.Value.ToString("0.00 €")
Belegnummer + @transaktion.Belegnummer
Angelegt von + @transaktion.InsUser
Notiz + @transaktion.Notice
-
+
-
+ + count++; + } + +
+
}
-@using(Html.BeginForm("DeleteBargeldkasse", "Customer", FormMethod.Post, new {id = "bargeldkassendeleteform" })) +@using(Html.BeginForm("DeleteBargeldkasse", "Customer", FormMethod.Post, new { id = "bargeldkassendeleteform" })) { - + } -@* - ToDo: - 2. Formularpopup für Transaktionen (Datum, Art, Betrag, Belegnummer, Notiz) - -*@ - @if(AbstractModel.HasRightToCreateCustomerBargeldkassen || AbstractModel.HasRightToEditCustomerBargeldkassen) {
} -