- Löschrechtprüfung an FaC angepasst.
- Ziele und Maßnahmen sind alphabetisch absteigend sortiert wie im FaC.
- Reports bei Klienten verbessert.
- Bargeldtransaktionshistorie eingebaut.
This commit is contained in:
2024-02-20 14:42:04 +01:00
parent 54f93647e6
commit 1df62f4183
54 changed files with 6015 additions and 4365 deletions

View File

@@ -106,7 +106,7 @@ namespace BeWo.ViewModel
_CombinedGoals = new GenericValueListEntryListVM(ziele);
var categoriesWithParent = new List<SupportConceptGoalTreeItem>();
var goalList = GoalService.GetZieleMassnahmenTree(_CombinedGoals.VMList.ToList(), false);
var goalList = GoalService.GetZieleMassnahmenTree(_CombinedGoals.VMList.ToList(), false).OrderBy(s => s.Name);
var iGoalList = new ObservableSortCollection<SupportConceptGoalTreeItem>();
var dictOid2TreeItem = new Dictionary<long, SupportConceptGoalTreeItem>();
@@ -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))
{

View File

@@ -5109,7 +5109,10 @@
<Content Include="Views\Main\ServiceRecordListPartial.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Customer\BargeldkassenReportPartial.cshtml" />
<Content Include="Views\Customer\CustomerMedListPartial.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Customer\CustomerBargeldtransaktionshistorienPartial.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>

View File

@@ -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;
}

View File

@@ -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<GoalTreeItem>(), Header = ziel.DisplayName ?? string.Empty, ParentOid = ziel.ParentOid, ValueListEntryOid = ziel.ValueListEntryOid };
var treeItem = new GoalTreeItem(true)
{
Children = new List<GoalTreeItem>(),
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<GoalTreeItem>(), Header = ziel.DisplayName ?? string.Empty, IsLeaf = true, ValueListEntryOid = ziel.ValueListEntryOid, RatingName = ratingName};
var kind = new GoalTreeItem(false)
{
Children = new List<GoalTreeItem>(),
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]))
{

View File

@@ -106,32 +106,33 @@ namespace BeWoPlanerMobil.Models
}
}
public List<SelectListItem> OldMedLists
{
get
{
var result = new List<SelectListItem>();
// ToDo: KGW
//public List<SelectListItem> OldMedLists
//{
// get
// {
// var result = new List<SelectListItem>();
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<BargeldkassenDC> Bargeldkassen { get; set; }
public List<BargeldkassenDC> Bargeldkassen { get; set; } = new List<BargeldkassenDC>();
[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<SelectListItem> Auszahlungsintervalle
{
get
public List<SelectListItem> Auszahlungsintervalle =>
new List<SelectListItem>
{
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;
}
}
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<SelectListItem> Transaktionsarten =>
new List<SelectListItem>
{
new SelectListItem{Value=((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung"},
new SelectListItem{Value=((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung"}
};
public List<BargeldtransaktionshistoryDC> BargeldtransaktionshistoryEntries { get; set; } = new List<BargeldtransaktionshistoryDC>();
}
}

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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}`;
}

View File

@@ -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),

View File

@@ -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;
}
}
}

View File

@@ -1,41 +0,0 @@
@model BeWoPlanerMobil.Models.CustomerModel
<script type="text/javascript">
function bargeldkassenReportViewerInit(s, e) {
try {
s.UpdateLocalization({
'Page': 'Seite',
'of': 'von'
});
} catch(error) {
showErrorPopup(error);
}
}
@if(Model.BargeldkassenReportName?.Length > 0)
{
<text>
$("#customer-bargeldkassen-report-popup-header").text("@Model.BargeldkassenReportName");
</text>
}
else
{
<text>
$("#customer-bargeldkassen-report-popup-header").text("");
</text>
}
</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()
}

File diff suppressed because it is too large Load Diff

View File

@@ -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);
}
}
</script>
@if(TempData["CustomerBargeldkassenErrorMessage"] != null)
{
<div class="alert alert-danger" role="alert">
@TempData["CustomerBargeldkassenErrorMessage"]
</div>
}
<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 class="col-sm-12 p-0">
<button type="button" class="btn btn-primary w-100 mb-3 mx-0 px-0" onclick="addNewBargeldkasse()">Neue Kasse hinzuf&uuml;gen</button>
</div>
</div>
@@ -151,14 +352,16 @@
<div class="card h-100">
<div class="card-header" onclick="cardHeaderClick2(this, calculateDateInputWidth)">
<div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header chevron-identifier-class"></i>
<i class="fas fa-chevron-down text-bewo-customer-card-header h-100"></i>
</div>
<div class="d-inline d-inline-flex text-bewo-customer-card-header h-100">
<p>@bargeldkasse.Kassenname</p>
<button type="button" class="btn btn-lihnk text-bewo-customer-card-header" >
@bargeldkasse.Kassenname
</button>
</div>
</div>
<div class="collapse">
<div class="card-body">
<div class="card-body p-1">
@{
var anfangsbestand = bargeldkasse.Anfangsbestand?.ToString("0.00 €") ?? "0,00 €";
@@ -175,7 +378,7 @@
<div class="row">
<div class="col">
<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">
<button class="btn btn-outline-primary" title="Transaktion hinzufügen" type="button" modal="#customer-bargeldtransaktions-form-popup" onclick="addNewBargeldtransaktion(@bargeldkasse.BargeldkassenOid)">
<i class="fas fa-plus"></i>
Transaktion
</button>
@@ -196,7 +399,7 @@
<div class="form-row mt-2">
<div class="col">
<div class="form-group mb-0">
<div class="input-group date ownSoft-date-picker" id="customer-bargeldkasse-start-date-picker" data-target-input="nearest">
<div class="input-group date ownSoft-date-picker" id="customer-bargeldkasse-start-date-picker-@bargeldkasse.BargeldkassenOid" data-target-input="nearest">
<div class="input-group-prepend">
<div class="input-group-text customer-bargeldkassen-date-prepend">
Startdatum
@@ -225,7 +428,12 @@
Enddatum
</div>
</div>
<input type="text" value="@endDate" id="customer-bargeldkasse-end-date-@bargeldkasse.BargeldkassenOid" name="customer-bargeldkasse-end-date" class="form-control datetimepicker-input" data-target="#customer-absence-time-end-date-picker" data-toggle="datetimepicker" />
<input type="text" value="@endDate"
id="customer-bargeldkasse-end-date-@bargeldkasse.BargeldkassenOid"
name="customer-bargeldkasse-end-date"
class="form-control datetimepicker-input"
data-target="#customer-bargeldkasse-end-date-picker-@bargeldkasse.BargeldkassenOid"
data-toggle="datetimepicker" />
<div class="input-group-append" data-target="#customer-bargeldkasse-end-date-picker-@bargeldkasse.BargeldkassenOid" data-toggle="datetimepicker">
<div class="input-group-text px-2">
<i class="fas fa-calendar-alt"></i>
@@ -235,7 +443,6 @@
</div>
</div>
</div>
@*----- Stichtag -----*@
<div class="form-row mt-1">
<div class="col">
<div class="form-group mb-1">
@@ -245,7 +452,7 @@
Stichtag
</div>
</div>
<input type="text" id="customer-bargeldkasse-stichtag-date-@bargeldkasse.BargeldkassenOid" name="customer-bargeldkasse-stichtag-date" class="form-control datetimepicker-input" data-target="#customer-absence-time-end-date-picker" data-toggle="datetimepicker" />
<input type="text" id="customer-bargeldkasse-stichtag-date-@bargeldkasse.BargeldkassenOid" name="customer-bargeldkasse-stichtag-date" class="form-control datetimepicker-input" data-target="#customer-bargeldkasse-stichtag-date-picker-@bargeldkasse.BargeldkassenOid" data-toggle="datetimepicker" />
<div class="input-group-append" data-target="#customer-bargeldkasse-stichtag-date-picker-@bargeldkasse.BargeldkassenOid" data-toggle="datetimepicker">
<div class="input-group-text px-2">
<i class="fas fa-calendar-alt"></i>
@@ -255,9 +462,10 @@
</div>
</div>
</div>
<div class="w-100">
<table class="w-100">
<tbody>
<div class="w-100">
@*----- Kassenbstand und Anfangsbestand -----*@
<table class="w-100">
<tbody>
<tr>
<td class="text-secondary">
Kassenbestand:
@@ -274,23 +482,23 @@
@anfangsbestand
</td>
</tr>
</tbody>
</table>
@* Liste mit den Ein- und Auszahlungen *@
<div class="col mb-0 pb-0 mx-0 px-0">
<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">
<p>Ein- und Auszahlungen</p>
</div>
</tbody>
</table>
@* Liste mit den Ein- und Auszahlungen *@
<div class="col mb-0 pb-0 mx-0 px-0">
<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="collapse">
<div class="card-body">
<table class="w-100 mx-0 px-0">
<tbody>
<div class="d-inline d-inline-flex text-bewo-customer-card-header h-100">
<p>Ein- und Auszahlungen</p>
</div>
</div>
<div class="collapse">
<div class="card-body">
<table class="w-100 mx-0 px-0">
<tbody>
@{
var count = 0;
}
@@ -300,9 +508,29 @@
<tr>
<td colspan="2">
<div class="btn-group w-100" role="gorup">
@if(transaktion.SignatureOid is null)
{
<button class="btn btn-outline-primary" title="Zahlungsbeleg unterschreiben" type="button" onclick="signZahlungsbeleg(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-signature"></i>
</button>
}
else
{
<button class="btn btn-outline-primary" title="Zahlungsbelegsunterschrift löschen" type="button" onclick="deleteZahlungsbelegsunterschrift(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-signature"></i>
<i class="fas fa-arrow-right"></i>
<i class="fas fa-trash-alt"></i>
</button>
}
<button class="btn btn-outline-primary" title="Bargeldtransaktion bearbeiten" type="button" onclick="editBargeldtransaktion(@bargeldkasse.BargeldkassenOid, @transaktion.BargeldtransaktionOid)">
<i class="fas fa-edit"></i>
</button>
<button class="btn btn-outline-primary" title="Zahlungsbeleg herunterladen" type="button" onclick="downloadZahlungsbeleg(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-file-download"></i>
</button>
<button class="btn btn-outline-primary" title="Änderungshistorie anzeigen" type="button" onclick="showBargeldtransaktionshistorie(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-history"></i>
</button>
<button class="btn btn-outline-danger" title="Bargeldtransaktion löschen" type="button" onclick="deleteBargeldransaktion(@transaktion.BargeldtransaktionOid)">
<i class="fas fa-trash-alt"></i>
</button>
@@ -313,7 +541,7 @@
<td class="text-secondary">
Datum
</td>
<td class="text-primary float-right">
<td class="float-right">
@transaktion.Zahlungsdatum.Value.ToString("dd.MM.yyyy")
</td>
</tr>
@@ -321,7 +549,7 @@
<td class="text-secondary">
Art
</td>
<td class="text-primary float-right">
<td class="float-right">
@transaktion.Zahlungstyp
</td>
</tr>
@@ -329,7 +557,7 @@
<td class="text-secondary">
Betrag
</td>
<td class="text-primary float-right">
<td class="float-right">
@transaktion.Betrag.Value.ToString("0.00 €")
</td>
</tr>
@@ -337,7 +565,7 @@
<td class="text-secondary">
Belegnummer
</td>
<td class="text-primary float-right">
<td class="float-right">
@transaktion.Belegnummer
</td>
</tr>
@@ -345,7 +573,7 @@
<td class="text-secondary">
Angelegt von
</td>
<td class="text-primary float-right">
<td class="float-right">
@transaktion.InsUser
</td>
</tr>
@@ -353,7 +581,7 @@
<td class="text-secondary">
Notiz
</td>
<td class="text-primary float-right">
<td class="float-right">
@transaktion.Notice
</td>
</tr>
@@ -361,38 +589,32 @@
{
<tr>
<td colspan="2">
<hr/>
<hr />
</td>
</tr>
}
count++;
}
</tbody>
</table>
</div>
count++;
}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
}
</div>
@using(Html.BeginForm("DeleteBargeldkasse", "Customer", FormMethod.Post, new {id = "bargeldkassendeleteform" }))
@using(Html.BeginForm("DeleteBargeldkasse", "Customer", FormMethod.Post, new { id = "bargeldkassendeleteform" }))
{
<input type="hidden" id="bk-to-delete-oid"/>
<input type="hidden" id="bk-to-delete-oid" />
}
@*
ToDo:
2. Formularpopup für Transaktionen (Datum, Art, Betrag, Belegnummer, Notiz)
*@
@if(AbstractModel.HasRightToCreateCustomerBargeldkassen || AbstractModel.HasRightToEditCustomerBargeldkassen)
{
<div class="modal" tabindex="-1" role="dialog" id="customer-bargeldkassen-form-popup">
@@ -405,7 +627,7 @@
</button>
</div>
<div class="modal-body" id="customer-bargeldkassen-modal-body">
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" onclick="submitCustomerBargeldkassenForm()">OK</button>
@@ -425,28 +647,31 @@
</button>
</div>
<div class="modal-body" id="customer-bargeldkassentransaktion-modal-body">
@Html.Partial("CustomerBargeldtransaktionenFormPartial", Model)
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" onclick="submitCustomerBargeldtransaktionenForm()">OK</button>
<button class="btn btn-secondary" type="button" data-dismiss="modal" onclick="clearCustomerBargeldtransaktionenForm()">Abbrechen</button>
<button class="btn btn-primary" type="button" onclick="submitBargeldtransaktionsform()">OK</button>
<button class="btn btn-secondary" type="button" data-dismiss="modal" onclick="clearCustomerBargeldtransaktionsForm()">Abbrechen</button>
</div>
</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" tabindex="-1" role="dialog" id="customer-bargeldtransaktionshistorienpopup">
<div class="modal-dialog modal-dialog-scrollable" 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">
<h5 class="modal-title" id="customer-bargeldtransaktionshistorienpopup-title">Änderungshistorie</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="close" onclick="closeTransactionHistoryPopup()">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" id="customer-bargeldkassen-report-modal-body">
@Html.Partial("BargeldkassenReportPartial", Model)
<div class="modal-body" id="customer-bargeldtransaktionshistorien-body">
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" onclick="closeTransactionHistoryPopup()">Schließen</button>
</div>
</div>
</div>

View File

@@ -1 +1,270 @@
@using BeWoPlanerMobil.Models;
@model CustomerModel
<script type="text/javascript">
$(function () {
$(".ownSoft-date-picker").datetimepicker({
locale: "de",
format: "L"
});
});
(function ($) {
$.fn.inputFilter = function (inputFilter) {
return this.on("input keydown keyup mouseup select mousedown contextmenu drop", function () {
if(inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if(this.hasOwnProperty("oldValue")) {
this.value = this.oldValue;
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
} else {
this.value = "";
}
});
}
}(jQuery));
var initialBargeldtransaktionsFormPrependWidth = 0;
function calcBargeldtransaktionsFormPrependWidth() {
try {
var maxWidth = getMaxWidth("customer-bargeldtransaktion-prepend");
if(initialBargeldtransaktionsFormPrependWidth <= 0 && $.isNumeric(maxWidth)) {
initialBargeldtransaktionsFormPrependWidth = maxWidth;
}
if (initialBargeldtransaktionsFormPrependWidth <= 0) {
return;
}
$(".customer-bargeldtransaktion-prepend").width(maxWidth);
} catch(error) {
showErrorPopup(error);
}
}
function setBargeldtransaktionsart() {
try {
} catch(error) {
showErrorPopup(error);
}
}
$(document).ready(function () {
setTransaktionsbetragsinputFilter();
});
function setTransaktionsbetragsinputFilter() {
$("#bargeldtransaktionsbetragsinput").inputFilter(function (value) {
return /^-?\d*[.,]?\d*$/.test(value);
});
}
function clearCustomerBargeldtransaktionsForm() {
try {
$("#bargeldtransaktionsbetragsinput").val("");
$("#bargeldtransaktionsnotizinput").val("");
$("#bargeldtransaktionsbelegnummerinput").val("");
if($("#bargeldtransaktionsarten-select-input").length) {
$("#bargeldtransaktionsarten-select-input select").val("0");
}
} catch(error) {
showErrorPopup(error);
}
}
function submitBargeldtransaktionsform() {
try {
if(false === validateTransaktionsForm()) {
return;
}
showSpinner();
var rawDate = $("#customer-bargeldtransaktionsdatum-input").val();
var rawArt = $("#bargeldtransaktionsarten-select-input").find(":selected").val();
var rawBetrag = $("#bargeldtransaktionsbetragsinput").val().replace(",", ".");
var belegnummer = $("#bargeldtransaktionsbelegnummerinput").val();
var notice = $("#bargeldtransaktionsnotizinput").val();
$("#customer-bargeldtransaktions-form-popup").modal("hide");
$("#bargeldkassen-container").load("@Url.Action("CreateOrUpdateBargeldTransaktion2")",
{
rawDate: rawDate,
rawArt: rawArt,
rawBetrag: rawBetrag,
belegnummer: belegnummer,
notice: notice
}, function () {
hideSpinner();
});
} catch(error) {
showErrorPopup(error);
}
}
function validateTransaktionsForm() {
try {
var formattedDate = ddMMyyyyToyyyyMMdd($("#customer-bargeldtransaktionsdatum-input").val());
var datum = moment(formattedDate);
var betrag = $("#bargeldtransaktionsbetragsinput").val().replace(",", ".");
var validationMessage = "";
if(datum.isValid() === false) {
validationMessage += "Das gewählte Datum ist ungültig.<br />";
}
if ($.isNumeric(betrag) === false || betrag <= 0) {
validationMessage += "Der Betrag muss größer als 0,00 € sein.<br />";
}
if (validationMessage.length > 0) {
$("#validation-error-message-paragraph").html(validationMessage);
$("#transaktionsform-validation-alert").removeClass("d-none");
return false;
} else {
$("#validation-error-message-paragraph").empty();
$("#transaktionsform-validation-alert").addClass("d-none");;
return true;
}
} catch(error) {
showErrorPopup(error);
}
}
</script>
@{
var transaktionsdatum = string.Empty;
var transaktionsbelegnummer = string.Empty;
var transaktionsbetrag = 0m;
var transaktionsnotiz = string.Empty;
var selectedBargeldtransaktion = Model.SelectedBargeldtransaktion;
if(selectedBargeldtransaktion != null)
{
if(selectedBargeldtransaktion.Zahlungsdatum.HasValue)
{
transaktionsdatum = selectedBargeldtransaktion.Zahlungsdatum.Value.ToString("dd.MM.yyyy");
}
transaktionsbelegnummer = selectedBargeldtransaktion.Belegnummer;
transaktionsbetrag = selectedBargeldtransaktion.Betrag ?? 0m;
transaktionsnotiz = selectedBargeldtransaktion.Notice ?? string.Empty;
}
}
<div id="transaktionsform-validation-alert" class="alert alert-danger d-none" role="alert">
<p id="validation-error-message-paragraph"></p>
</div>
@* ----- Datum ----- *@
<div class="form-row mt-2">
<div class="col">
<div class="form-group mb-1">
<div class="input-group date ownSoft-date-picker" id="customer-bargeldtransaktionsdatum-picker" data-target-input="nearest">
<div class="input-group-prepend">
<div class="input-group-text customer-bargeldtransaktion-prepend">
Datum
</div>
</div>
<input type="text" value="@transaktionsdatum"
id="customer-bargeldtransaktionsdatum-input"
name="customer-bargeldtransaktionsdatum"
class="form-control datetimepicker-input"
onchange="validateTransaktionsForm()"
data-target="#customer-bargeldtransaktionsdatum-picker"
data-toggle="datetimepicker" />
<div class="input-group-append" data-target="#customer-bargeldtransaktionsdatum-picker"
data-toggle="datetimepicker">
<div class="input-group-text px-2">
<i class="fas fa-calendar-alt"></i>
</div>
</div>
</div>
</div>
</div>
</div>
@*----- Art -----*@
<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-bargeldtransaktion-prepend">
Art
</div>
</div>
@Html.DropDownListFor(model => model.SelectedTransaktionsart, Model.Transaktionsarten, new { @class = "form-control", id = "bargeldtransaktionsarten-select-input", onchange = "setBargeldtransaktionsart()" })
</div>
</div>
</div>
</div>
@*----- Betrag -----*@
<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-bargeldtransaktion-prepend">
Betrag
</div>
</div>
<input class="form-control"
type="text"
id="bargeldtransaktionsbetragsinput"
value="@transaktionsbetrag.ToString("0.00")"
onchange="validateTransaktionsForm()" />
<div class="input-group-append">
<span class="input-group-text">€</span>
</div>
</div>
</div>
</div>
</div>
@*----- Belegnummer -----*@
<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-bargeldtransaktion-prepend">
Belegnummer
</div>
</div>
<input class="form-control" type="text" id="bargeldtransaktionsbelegnummerinput" value="@transaktionsbelegnummer" />
</div>
</div>
</div>
</div>
@*----- Notiz -----*@
<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-bargeldtransaktion-prepend">
Notiz
</div>
</div>
<input class="form-control" type="text" id="bargeldtransaktionsnotizinput" value="@transaktionsnotiz" />
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,109 @@
@model BeWoPlanerMobil.Models.CustomerModel
<table class="w-100 mx-0 px-0">
<tbody>
@{
var count = 0;
}
@foreach(var historyEntry in Model.BargeldtransaktionshistoryEntries)
{
var zahlungsdatum = historyEntry.Zahlungsdatum?.ToString("dd.MM.yyyy");
var betrag = historyEntry.Betrag?.ToString("0.00 €") ?? "0,00 €";
var editDate = historyEntry.InsertedOn?.ToString("dd.MM.yyyy HH:mm:ss");
<tr>
<td class="text-secondary">
Änderungsdatum
</td>
<td class="float-right">
@editDate
</td>
</tr>
<tr>
<td class="text-secondary">
Geändert von
</td>
<td class="float-right">
@historyEntry.BargeldtransaktionUdpUser
</td>
</tr>
<tr>
<td class="text-secondary">
Art der Änderung
</td>
<td class="float-right">
@historyEntry.HistoryTypeString
</td>
</tr>
<tr>
<td class="text-secondary">
Zahlungsdatum
</td>
<td class="float-right">
@zahlungsdatum
</td>
</tr>
<tr>
<td class="text-secondary">
Art
</td>
<td class="float-right">
@historyEntry.Zahlungstyp
</td>
</tr>
<tr>
<td class="text-secondary">
Betrag
</td>
<td class="float-right">
@betrag
</td>
</tr>
<tr>
<td class="text-secondary">
Belegnummer
</td>
<td class="float-right">
@historyEntry.Belegnummer
</td>
</tr>
<tr>
<td class="text-secondary">
Angelegt von
</td>
<td class="float-right">
@historyEntry.BargeldtransaktionInsUser
</td>
</tr>
<tr>
<td class="text-secondary">
Notiz
</td>
<td class="float-right">
@historyEntry.Notice
</td>
</tr>
<tr>
<td class="text-secondary">
Unterschrift
</td>
<td class="float-right">
@historyEntry.SignatureStateString
</td>
</tr>
if(count < Model.BargeldtransaktionshistoryEntries.Count - 1)
{
<tr>
<td colspan="2">
<hr />
</td>
</tr>
}
count++;
}
</tbody>
</table>

View File

@@ -0,0 +1,148 @@
@using BeWoPlanerMobil.Controllers
@model BeWoPlanerMobil.Models.CustomerModel
<script type="text/javascript">
function changeReportTypeSelection() {
try {
var selectedReportType = $("#report-type-select").find(":selected").val();
var historyList = $("#med-list-history-list");
$("#show-med-list-btn").prop("disabled", selectedReportType === "2");
if (selectedReportType !== "2") {
historyList.hide();
return;
}
historyList.removeClass("d-none");
historyList.show();
} catch (error) {
showErrorPopup(error);
}
}
function viewHistoryMedList(oid) {
try {
showSpinner();
$("#med-list-oid-view").val(oid);
$("#view-history-med-list").submit();
$("#customer-report-popup-container").load("@Url.Action("ShowHistoricalMedList")",
{
medListOid: oid
},
function () {
$("#customer-report-container").height($(window).height() * .8);
$("#customer-report-popup").modal("show");
hideSpinner();
}
);
} catch (error) {
showErrorPopup(error);
}
}
function deleteHistoryMedList(oid, name) {
try {
showMessagePopupWithCallback("Löschen", `Sind Sie sicher, dass Sie die ${name} löschen wollen?`, function () {
showSpinner();
$("#medikamentenlistencontainer").load("@Url.Action("DeleteHistoricalMedList")",
{
medListOid: oid
},
function () {
hideSpinner();
});
});
} catch (error) {
showErrorPopup(error);
}
}
function closeReport() {
try {
$.get("@Url.Action("ResetReport")");
} catch (error) {
showErrorPopup(error);
}
}
function loadMedListReport() {
try {
showSpinner();
var selectedReportType = $("#report-type-select").find(":selected").val();
$("#customer-report-popup-container").load("@Url.Action("ShowMedList")",
{
reportType: selectedReportType
},
function () {
$("#customer-report-container").height($(window).height() * .8);
$("#customer-report-popup").modal("show");
hideSpinner();
});
} catch(error) {
showErrorPopup(error);
}
}
</script>
<div class="container-fluid my-0 py-0">
<div class="row">
<div class="col-sm-6 col-lg-auto mb-3">
@Html.DropDownListFor(m => m.SelectedReportType, Model.ReportTypeItems, new { @class = "custom-select", id = "report-type-select", onchange = "changeReportTypeSelection()" })
</div>
<div class="col-sm-6 col-lg-auto mb-3">
@{
var showReportBtnDisabledValue = Model.SelectedReportType == CustomerReportType.Historie ? "disabled" : string.Empty;
}
<button @showReportBtnDisabledValue class="btn btn-primary" type="button" onclick="loadMedListReport();" id="show-med-list-btn">Bericht anzeigen</button>
</div>
<div class="col-sm-12 col-lg">
@if(!(Model.SelectedCustomer is null))
{
var displayValue = Model.SelectedReportType == CustomerReportType.Historie ? string.Empty : "d-none";
<table class="table @displayValue" id="med-list-history-list" style="table-layout: fixed !important;">
<thead>
<tr>
<th class="px-0">
Liste
</th>
<th>
Ersteller
</th>
<th class="px-0"></th>
</tr>
</thead>
<tbody>
@foreach(var list in Model.SelectedCustomer.Medikamentenverordnungslisten.Where(w => !w.Gueltig).OrderBy(x => x.ErstellDatum))
{
var listName = $"{(list.MedListType ? "Medikamentenverordnungsliste" : "Bedarfsmedikamentenverordnungsliste")} vom {list.ErstellDatum}";
var name = $"{listName} von {list.Ersteller}";
<tr>
<td class="px-0">
@listName
</td>
<td>
@list.Ersteller
</td>
<td class="px-0" style="text-align: right;">
<button type="button" class="btn btn-primary" onclick="viewHistoryMedList(@list.MedikamentenverordnungslistenOid)">
<i class="far fa-eye"></i>
</button>
<button type="button" class="btn btn-bewo-service-records" onclick="deleteHistoryMedList(@list.MedikamentenverordnungslistenOid, '@name')">
<i class="fas fa-trash-alt"></i>
</button>
</td>
</tr>
}
</tbody>
</table>
}
</div>
</div>
</div>

View File

@@ -1,14 +1,42 @@
@model BeWoPlanerMobil.Models.CustomerModel
@if(Model?.Report != null)
{
@Html.DevExpress().WebDocumentViewer(settings =>
{
settings.Name = "webDocumentViewer2";
settings.Width = Unit.Percentage(100);
settings.Height = Unit.Percentage(100);
settings.MobileMode = true;
settings.SettingsMobile.ReaderMode = true;
settings.SettingsMobile.AnimationEnabled = false;
}).Bind(Model.Report).GetHtml()
}
<script type="text/javascript">
function customerReportViewerInit(s, e) {
try {
s.UpdateLocalization({
'Page': 'Seite',
'of': 'von'
});
} catch(error) {
showErrorPopup(error);
}
}
</script>
<div class="modal" data-backdrop="static" tabindex="-1" role="dialog" id="customer-report-popup">
<div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">@Model.ReportName</h5>
<button type="button" class="close" data-dismiss="modal" onclick="closeReport()">
<span>&times;</span>
</button>
</div>
<div class="modal-body" id="customer-report-container">
@if(Model?.Report != null)
{
@Html.DevExpress().WebDocumentViewer(settings =>
{
settings.Name = "customerReportViewer";
settings.Width = Unit.Percentage(100);
settings.Height = Unit.Percentage(100);
settings.MobileMode = true;
settings.SettingsMobile.ReaderMode = true;
settings.SettingsMobile.AnimationEnabled = false;
settings.ClientSideEvents.Init = "customerReportViewerInit";
}).Bind(Model.Report).GetHtml()
}
</div>
</div>
</div>
</div>

View File

@@ -3,31 +3,23 @@
@model CustomerModel
<script>
function folderCardHeaderClick(chevronId, collapseId) {
$(collapseId).toggle();
toggleFolderChevron(chevronId, collapseId);
}
function toggleFolderChevron(chevronId, collapseId) {
var isDown = $(collapseId).css("display") !== "none";
var chevron = $(chevronId);
var iconToRemove = isDown ? "fa-folder" : "fa-folder-open";
var iconToAdd = isDown ? "fa-folder-open" : "fa-folder";
chevron.removeClass(iconToRemove);
chevron.addClass(iconToAdd);
function toggleFolderIcon(element) {
try {
$(element).find(".fa-folder,.fa-folder-open").toggleClass("fa-folder").toggleClass("fa-folder-open");
$(element).next(".collapse").toggle();
} catch (error) {
showErrorPopup(error);
}
}
</script>
@helper BuildFolderTreeBranch(BeWoFolderDC folder)
{
<div class="card w-100 mb-3">
<div class="card-header px-2" onclick="folderCardHeaderClick('#chevron-folder-@(folder.BeWoFolderOid ?? 0)', '#collapse-folder-@(folder.BeWoFolderOid ?? 0)')">
<i class="fas fa-folder pr-1 text-primary" id="chevron-folder-@(folder.BeWoFolderOid ?? 0)"></i>@folder.Name
<div class="card-header px-2" onclick="toggleFolderIcon(this)">
<i class="fas fa-folder pr-1 text-primary"></i>@folder.Name
</div>
<div class="collapse" id="collapse-folder-@(folder.BeWoFolderOid ?? 0)">
<div class="collapse">
<div class="card-body px-2">
@foreach(var file in folder.Files)
{

View File

@@ -38,8 +38,6 @@
var isLeaf = $(item).parent().prop("class").includes("goal-text");
// ToDo: Auch die Ziele beachten!
if(goalText.toLowerCase().includes(text)) {
$.each($($(item).parents(".goal-card")), function(cardIndex, card) {
$(card).show();
@@ -113,14 +111,14 @@
}
}
if(!goalTreeItem.IsLeaf) // Ziel
if(!goalTreeItem.IsLeaf)
{
<div class="card w-100 mb-3 goal-card" id="c-@goalTreeItem.ValueListEntryOid">
<div class="card-header px-2" onclick="cardHeaderClick('#goal-chevron-@goalTreeItem.ValueListEntryOid', '#collapsable-goal-tree-branch-@goalTreeItem.ValueListEntryOid')">
<div class="clearfix">
<div class="custom-control custom-checkbox goal-card-header float-left" onclick="stopToggle(event)" >
<input type="checkbox" class="custom-control-input" value="@goalTreeItem.ValueListEntryOid" @isCheckedValue id="@goalTreeItem.ValueListEntryOid" onchange="updateSelectedGoals()" />
<label class="custom-control-label" for="@goalTreeItem.ValueListEntryOid">@goalTreeItem.Header</label>
<label class="custom-control-label goal-name-label" for="@goalTreeItem.ValueListEntryOid">@goalTreeItem.Header</label>
@if(AbstractModel.HasRightToRateGoals)
{
<span id="goal-rating-@goalTreeItem.ValueListEntryOid" class="badge badge-bewo-goal-rating goal-rating-badge ml-1" onclick="showGoalRatingPopup(@goalTreeItem.ValueListEntryOid)">
@@ -135,7 +133,7 @@
</div>
<div class="collapse" id="collapsable-goal-tree-branch-@goalTreeItem.ValueListEntryOid">
<div class="card-body p-1 goal-list">
@foreach(var child in goalTreeItem.Children)
@foreach(var child in goalTreeItem.Children.OrderBy(child => child.Header))
{
@BuildGoalTreeBranch(child)
}
@@ -143,9 +141,11 @@
</div>
</div>
}
else // Maßnahme
else
{
<div class="custom-control custom-checkbox goal-text">
var marginBottom = goalTreeItem.IsGoal ? "mb-3 mx-2" : "";
<div class="custom-control custom-checkbox goal-text @marginBottom">
<input type="checkbox" class="custom-control-input" id="@goalTreeItem.ValueListEntryOid" @isCheckedValue onchange="updateSelectedGoals()">
<label for="@goalTreeItem.ValueListEntryOid" class="custom-control-label goal-name-label">@goalTreeItem.Header</label>
@if(AbstractModel.HasRightToRateGoals)
@@ -158,7 +158,7 @@
}
}
@foreach(var branch in Model.GoalTree)
@foreach(var branch in Model.GoalTree.OrderBy(goalTreeItem => goalTreeItem.Header))
{
@BuildGoalTreeBranch(branch)
}

View File

@@ -838,8 +838,10 @@
</div>
}
<input type="hidden" id="has-any-rating-types" value="@Model?.HasAnyRatingTypes ?? False" />
@{
var hasRatingTypes = Model?.HasAnyRatingTypes ?? false;
}
<input type="hidden" id="has-any-rating-types" value="@hasRatingTypes" />
<!-- Passwort ändern Popup -->
@using(Html.BeginForm("ChangePassword", "Main", FormMethod.Post, new { id = "change-password-form" }))

View File

@@ -636,106 +636,106 @@
}
<script>
@{
if(Model.SelectedSupportConcept != null || Model.CostBearer2SupportConceptOid == -2)
{
<text>
try {
initializeIntervalSelection();
} catch (error) {
showErrorPopup(error);
}
</text>
}
}
function initializeIntervalSelection() {
try {
var selectedOption = $("#timeFrameSelect").val();
switch (selectedOption) {
case "0":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "1":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "2":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "3":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "4":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "5":
$("#last-x-interval-container").show();
$("#custom-interval-container, #month-interval-container").hide();
break;
case "6":
$("#custom-interval-container").show();
$("#last-x-interval-container, #month-interval-container").hide();
break;
case "7":
$("#month-interval-container").show();
$("#last-x-interval-container, #custom-interval-container").hide();
break;
@{
if(Model.SelectedSupportConcept != null || Model.CostBearer2SupportConceptOid == -2)
{
<text>
try {
initializeIntervalSelection();
} catch (error) {
showErrorPopup(error);
}
</text>
}
} catch (error) {
showErrorPopup(error);
}
}
function changeServiceRecordIntervalSelection(select) {
var form = $("#selectServiceRecordForm");
function initializeIntervalSelection() {
try {
var selectedOption = $("#timeFrameSelect").val();
try {
var selectedOption = $(select).val();
showSpinner();
switch (selectedOption) {
case "0":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "1":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "2":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "3":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "4":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "5":
$("#last-x-interval-container").show();
$("#custom-interval-container, #month-interval-container").hide();
hideSpinner();
break;
case "6":
$("#custom-interval-container").show();
$("#last-x-interval-container, #month-interval-container").hide();
hideSpinner();
break;
case "7":
$("#month-interval-container").show();
$("#last-x-interval-container, #custom-interval-container").hide();
hideSpinner();
break;
switch (selectedOption) {
case "0":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "1":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "2":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "3":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "4":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
break;
case "5":
$("#last-x-interval-container").show();
$("#custom-interval-container, #month-interval-container").hide();
break;
case "6":
$("#custom-interval-container").show();
$("#last-x-interval-container, #month-interval-container").hide();
break;
case "7":
$("#month-interval-container").show();
$("#last-x-interval-container, #custom-interval-container").hide();
break;
}
} catch (error) {
showErrorPopup(error);
}
}
function changeServiceRecordIntervalSelection(select) {
var form = $("#selectServiceRecordForm");
try {
var selectedOption = $(select).val();
showSpinner();
switch (selectedOption) {
case "0":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "1":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "2":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "3":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "4":
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
form.submit();
break;
case "5":
$("#last-x-interval-container").show();
$("#custom-interval-container, #month-interval-container").hide();
hideSpinner();
break;
case "6":
$("#custom-interval-container").show();
$("#last-x-interval-container, #month-interval-container").hide();
hideSpinner();
break;
case "7":
$("#month-interval-container").show();
$("#last-x-interval-container, #custom-interval-container").hide();
hideSpinner();
break;
}
} catch (error) {
showErrorPopup(error);
}
} catch (error) {
showErrorPopup(error);
}
}
</script>
<div class="container-fluid mt-3" id="service-record-list-container">

View File

@@ -545,6 +545,7 @@
}
previousWidth = val;
$("#size-info-span").text(val);
}
function widthToBootstrapVal(width) {
@@ -649,7 +650,7 @@
<a href="#" class="navbar-brand">
@Model.LoggedInEmplyeeFirstNameLastName
</a>
<span class="d-inline-block" data-toggle="tooltip" title="Zeit bis zur automatischen Abmeldung" id="countdown-tooltip">
<span class="navbar-text" id="countdown" onclick="countdownClick()"></span>
</span>
@@ -660,18 +661,20 @@
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
@*@if(Html.IsInDebugMode())
{
using(Html.BeginForm("RedirectToDevExpressScheduler", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-hand-middle-finger"></i>
Scheduler
</button>
</li>
}
}*@
@*
@if(Html.IsInDebugMode())
{
using(Html.BeginForm("RedirectToDevExpressScheduler", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-hand-middle-finger"></i>
Scheduler
</button>
</li>
}
}
*@
@if(AbstractModel.IsAllowedToSeeCustomers)
{
@@ -751,25 +754,6 @@
Passwort &auml;ndern
</button>
</li>
@if(Html.IsInDebugMode())
{
<script type="text/javascript">
function showDownlink() {
try {
showMessagePopupWithHtml("Downlink", `Der Downlink betr&auml;gt laut Browser ${navigator.connection.downlink} mbps`);
} catch (error) {
showErrorPopup(error);
}
}
</script>
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showDownlink()">
<i class="fas fa-tachometer-alt"></i>
Downlink anzeigen
</button>
</li>
}
<li class="nav-item">
@using(Html.BeginForm("Logout", "Main", FormMethod.Post))

View File

@@ -5712,17 +5712,6 @@ namespace BeWo.Data.Access
}
#region MoK-Zeiterfassungspagination
// ToDo: Sortierung ins Criteria nehmen!
/*
*.OrderBy(serviceRecord => serviceRecord.Start.Value.Date)
.ThenBy(serviceRecord => serviceRecord.Start.Value.Hour)
.ThenBy(serviceRecord => serviceRecord.Start.Value.Minute)
.ThenBy(serviceRecord => serviceRecord.End.Value.Date)
.ThenBy(serviceRecord => serviceRecord.End.Value.Hour)
.ThenBy(serviceRecord => serviceRecord.End.Value.Minute)
.ThenByDescending(serviceRecord => serviceRecord.InsertedOn.Value)
*
*/
public IEnumerable<ServiceRecord> FindServiceRecordsForDaysPaginated(long? costBearer2SupportConceptOid, int dayCount, long? employeeOid, int firstResult, int maxResults, out int rowCount)
{
var minStart = DateTime.Now.GetShortDateTime().AddDays(-dayCount);
@@ -5841,5 +5830,31 @@ namespace BeWo.Data.Access
return criteria.SetFirstResult(firstResult).SetMaxResults(maxResults).Future<ServiceRecord>();
}
#endregion
public Signature LoadSignatureByTransaktionsOid(long transaktionsOid)
{
var criteria = CreateCriteriaIsActive<Signature>()
.Add(Restrictions.Eq(nameof(Signature.BargeldtransaktionsOid), transaktionsOid));
return criteria.List<Signature>().FirstOrDefault();
}
public List<Bargeldtransaktionshistory> LoadBargeldtransaktionshistoryEntries(long transaktionsOid)
{
var criteria = CreateCriteria<Bargeldtransaktionshistory>()
.Add(Restrictions.Eq(nameof(Bargeldtransaktionshistory.BargeldtransaktionOid), transaktionsOid));
return criteria.List<Bargeldtransaktionshistory>().ToList();
}
public Bargeldtransaktionshistory FindMostRecentBargeldtransaktionshistoryEntryByBargeldtransaktionOid(long transactionOid)
{
var criteria = CreateCriteria<Bargeldtransaktionshistory>()
.Add(Restrictions.Eq(nameof(Bargeldtransaktionshistory.BargeldtransaktionOid), transactionOid))
.AddOrder(Order.Desc(nameof(Bargeldtransaktionshistory.InsTs)))
.SetMaxResults(1);
return criteria.List<Bargeldtransaktionshistory>().FirstOrDefault();
}
}
}

View File

@@ -77,9 +77,11 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v21.1, Version=21.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Mvvm.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="DevExpress.Xpo.v21.1, Version=21.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraScheduler.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraScheduler.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
@@ -199,6 +201,7 @@
<Compile Include="DefaultHibernateSessionManager.cs" />
<Compile Include="Entities\AbwesenheitsInformationPrint.cs" />
<Compile Include="Entities\AddressHistory.cs" />
<Compile Include="Entities\Bargeldtransaktionshistory.cs" />
<Compile Include="Entities\ErrorMessage.cs" />
<Compile Include="Entities\AddressRoute.cs" />
<Compile Include="Entities\ConfirmationReceiptSignature.cs" />
@@ -373,6 +376,7 @@
<Compile Include="ICD10\ICD10DAO.cs" />
<Compile Include="ICF\ICFDAO.cs" />
<Compile Include="LoggedInUserOperationContextExt.cs" />
<EmbeddedResource Include="Mappings\Bargeldtransaktionshistory.hbm.xml" />
<Compile Include="MultitenancyOperationContextExt.cs" />
<Compile Include="Security\BCrypt.cs" />
<Compile Include="Security\UserRightHelper.cs" />

View File

@@ -5,14 +5,13 @@ namespace BeWo.Data.Entities
{
public class Bargeldtransaktion : BeWoEntityBase
{
public static String PropertyName_Zahlungstyp = "Zahlungstyp";
public static String PropertyName_Betrag = "Betrag";
public static string PropertyName_Zahlungstyp = "Zahlungstyp";
public static string PropertyName_Betrag = "Betrag";
public static String PropertyName_Zahlungsdatum = "Zahlungsdatum";
public static string PropertyName_Zahlungsdatum = "Zahlungsdatum";
public static String PropertyName_Transaktionskassenbestand = "Transaktionskassenbestand";
public static string PropertyName_Transaktionskassenbestand = "Transaktionskassenbestand";
public Bargeldtransaktion()
{
@@ -23,20 +22,16 @@ namespace BeWo.Data.Entities
private decimal? _Betrag;
//private Customer _Customer;
private DateTime? _Zahlungsdatum;
private decimal? _Transaktionskassenbestand;
private long? _SignatureOid;
public virtual Zahlungstyp Zahlungstyp
{
get
{
return _Zahlungstyp;
}
set
get => _Zahlungstyp;
set
{
if (AreDifferent(_Zahlungstyp, value))
{
@@ -47,12 +42,8 @@ namespace BeWo.Data.Entities
public virtual decimal? Betrag
{
get
{
return _Betrag;
}
set
get => _Betrag;
set
{
if (AreDifferent(_Betrag, value))
{
@@ -61,20 +52,10 @@ namespace BeWo.Data.Entities
}
}
//public virtual Customer Customer
//{
// get { return _Customer; }
// set
// {
// if (AreDifferent(_Customer, value))
// _Customer = value;
// }
//}
public virtual DateTime? Zahlungsdatum
{
get { return _Zahlungsdatum; }
set
get => _Zahlungsdatum;
set
{
if (AreDifferent(_Zahlungsdatum, value))
{
@@ -85,12 +66,8 @@ namespace BeWo.Data.Entities
public virtual decimal? Transaktionskassenbestand
{
get
{
return _Transaktionskassenbestand;
}
set
get => _Transaktionskassenbestand;
set
{
if (AreDifferent(_Transaktionskassenbestand, value))
{
@@ -99,6 +76,41 @@ namespace BeWo.Data.Entities
}
}
public virtual String Belegnummer { get; set; }
}
public virtual string Belegnummer { get; set; }
public virtual long? SignatureOid
{
get => _SignatureOid;
set
{
if(AreDifferent(_SignatureOid, value))
{
_SignatureOid = value;
}
}
}
public override bool Equals(object obj)
{
if(obj is Bargeldtransaktion transaction)
{
return Oid.Equals(transaction.Oid) &&
Version.Equals(transaction.Version) &&
InsTs.Equals(transaction.InsTs) &&
Equals(InsUser, transaction.InsUser) &&
Equals(UpdTs, transaction.UpdTs) &&
Equals(UdpUser, transaction.UdpUser) &&
Equals(Notice, transaction.Notice) &&
IsActive.Equals(transaction.IsActive) &&
Equals(Betrag, transaction.Betrag) &&
Equals(Belegnummer, transaction.Belegnummer) &&
Zahlungstyp.Equals(transaction.Zahlungstyp) &&
Equals(Zahlungsdatum, transaction.Zahlungsdatum) &&
Equals(SignatureOid, transaction.SignatureOid) &&
Equals(Transaktionskassenbestand, transaction.Transaktionskassenbestand);
}
return false;
}
}
}

View File

@@ -0,0 +1,196 @@
using System;
using BS.Shared;
namespace BeWo.Data.Entities
{
public class Bargeldtransaktionshistory : BeWoEntityBase
{
public Bargeldtransaktionshistory()
{
_Tid = TableID.Bargeldtransaktionshistory;
}
private long? _BargeldtransaktionOid;
private Zahlungstyp _Zahlungstyp;
private DateTime? _Zahlungsdatum;
private decimal? _Transaktionskassenbestand;
private decimal? _Betrag;
private string _Belegnummer;
private SignatureStateType _SignatureState;
private long? _SignatureOid;
private StatementType _ChangeType;
private DateTime? _BargeldtransaktionInsTs;
private long? _BargeldtransaktionVersion;
private string _BargeldtransaktionInsUser;
private string _BargeldtransaktionUdpUser;
public virtual long? BargeldtransaktionOid
{
get => _BargeldtransaktionOid;
set
{
if(AreDifferent(_BargeldtransaktionOid, value))
{
_BargeldtransaktionOid = value;
}
}
}
public virtual Zahlungstyp Zahlungstyp
{
get => _Zahlungstyp;
set
{
if(AreDifferent(_Zahlungstyp, value))
{
_Zahlungstyp = value;
}
}
}
public virtual DateTime? Zahlungsdatum
{
get => _Zahlungsdatum;
set
{
if(AreDifferent(_Zahlungsdatum, value))
{
_Zahlungsdatum = value;
}
}
}
public virtual decimal? Transaktionskassenbestand
{
get => _Transaktionskassenbestand;
set
{
if(AreDifferent(_Transaktionskassenbestand, value))
{
_Transaktionskassenbestand = value;
}
}
}
public virtual decimal? Betrag
{
get => _Betrag;
set
{
if(AreDifferent(_Betrag, value))
{
_Betrag = value;
}
}
}
public virtual string Belegnummer
{
get => _Belegnummer;
set
{
if(AreDifferent(_Belegnummer, value))
{
_Belegnummer = value;
}
}
}
public virtual SignatureStateType SignatureState
{
get => _SignatureState;
set
{
if(AreDifferent(_SignatureState, value))
{
_SignatureState = value;
}
}
}
public virtual long? SignatureOid
{
get => _SignatureOid;
set
{
if(AreDifferent(_SignatureOid, value))
{
_SignatureOid = value;
}
}
}
public virtual StatementType ChangeType
{
get => _ChangeType;
set
{
if(AreDifferent(_ChangeType, value))
{
_ChangeType = value;
}
}
}
public virtual DateTime? BargeldtransaktionInsTs
{
get => _BargeldtransaktionInsTs;
set
{
if(AreDifferent(_BargeldtransaktionInsTs, value))
{
_BargeldtransaktionInsTs = value;
}
}
}
public virtual long? BargeldtransaktionVersion
{
get => _BargeldtransaktionVersion;
set
{
if(AreDifferent(_BargeldtransaktionVersion, value))
{
_BargeldtransaktionVersion = value;
}
}
}
public virtual string BargeldtransaktionInsUser
{
get => _BargeldtransaktionInsUser;
set
{
if(AreDifferent(_BargeldtransaktionInsUser, value))
{
_BargeldtransaktionInsUser = value;
}
}
}
public virtual string BargeldtransaktionUdpUser
{
get => _BargeldtransaktionUdpUser;
set
{
if(AreDifferent(_BargeldtransaktionUdpUser, value))
{
_BargeldtransaktionUdpUser = value;
}
}
}
}
}

View File

@@ -22,6 +22,8 @@ namespace BeWo.Data.Entities
private long? _ServiceRecordOid;
private long? _BargeldtransaktionsOid;
public virtual string DataBild
{
@@ -105,5 +107,17 @@ namespace BeWo.Data.Entities
}
}
public virtual long? BargeldtransaktionsOid
{
get => _BargeldtransaktionsOid;
set
{
if(AreDifferent(_BargeldtransaktionsOid, value))
{
_BargeldtransaktionsOid = value;
}
}
}
}
}

View File

@@ -17,6 +17,7 @@
<property column="Transaktionskassenbestand" type="Decimal" name="Transaktionskassenbestand" />
<property column="Zahlungstyp" type="BS.Shared.Zahlungstyp, BS.Shared" name="Zahlungstyp" />
<property column="Zahlungsdatum" type="DateTime" name="Zahlungsdatum" />
<property column="SignatureOid" type="Int64" name="SignatureOid" />
<!--<many-to-one name="Customer" column="CustomerOid" class="BeWo.Data.Entities.Customer, BeWo.Data" />-->
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="BeWo.Data.Entities.Bargeldtransaktionshistory, BeWo.Data" table="Bargeldtransaktionshistory">
<id name="Oid" column="Oid" type="Int64" unsaved-value="null">
<generator class="identity" />
</id>
<version type="Int64" column="Version" name="Version" />
<property column="Tid" type="BS.Shared.TableID, BS.Shared" name="_Tid" access="field" />
<property column="Notice" type="String" name="Notice" length="1024" />
<property column="InsTs" type="DateTime" name="InsTs" />
<property column="InsUser" type="String" name="InsUser" length="256" />
<property column="UdpUser" type="String" name="UdpUser" length="256" />
<property column="IsActive" type="BS.Shared.ActivationTypeId, BS.Shared" name="IsActive" />
<property column="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" name="SystemEntryID" />
<property column="Belegnummer" type="String" name="Belegnummer" />
<property column="Betrag" type="Decimal" name="Betrag" />
<property column="Transaktionskassenbestand" type="Decimal" name="Transaktionskassenbestand" />
<property column="Zahlungstyp" type="BS.Shared.Zahlungstyp, BS.Shared" name="Zahlungstyp" />
<property column="Zahlungsdatum" type="DateTime" name="Zahlungsdatum" />
<property column="SignatureOid" type="Int64" name="SignatureOid" />
<property column="ChangeType" type="BS.Shared.StatementType, BS.Shared" name="ChangeType" />
<property column="BargeldtransaktionOid" type="Int64" name="BargeldtransaktionOid" />
<property column="SignatureStateType" name="SignatureState" type="BS.Shared.SignatureStateType, BS.Shared" />
<property column="BargeldtransaktionInsTs" type="DateTime" name="BargeldtransaktionInsTs" />
<property column="BargeldtransaktionInsUser" type="String" name="BargeldtransaktionInsUser" />
<property column="BargeldtransaktionVersion" type="Int64" name="BargeldtransaktionVersion" />
<property column="BargeldtransaktionUdpUser" type="String" name="BargeldtransaktionUdpUser" />
</class>
</hibernate-mapping>

View File

@@ -7,16 +7,17 @@
</id>
<version type="Int64" column="Version" name="Version" />
<property name="ServiceRecordOid" column="ServiceRecordOid" />
<property name="InsTs" />
<property name="InsUser" />
<property name="InsTs" />
<property name="InsUser" />
<property column="Tid" type="BS.Shared.TableID, BS.Shared" name="_Tid" access="field" />
<property name="UdpUser" />
<property name="UdpUser" />
<property name="IsActive" type="BS.Shared.ActivationTypeId, BS.Shared" />
<property name="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" />
<property name="Notice" />
<property name="Latitute" column="Latitute" />
<property name="Longitute" column="Longitute" />
<property name="Zeitstempel" column="Zeitstempel" />
<property name="DataBild" column="DataBild" />
<property name="Notice" />
<property name="Latitute" column="Latitute" />
<property name="Longitute" column="Longitute" />
<property name="Zeitstempel" column="Zeitstempel" />
<property name="DataBild" column="DataBild" />
<property name="BargeldtransaktionsOid" />
</class>
</hibernate-mapping>

View File

@@ -0,0 +1 @@
ALTER TABLE bargeldtransaktion ADD COLUMN SignatureOid BIGINT;

View File

@@ -0,0 +1 @@
ALTER TABLE signature RENAME COLUMN BargeldkassenOid TO BargeldtransaktionsOid;

View File

@@ -0,0 +1,24 @@
CREATE TABLE `bargeldtransaktionshistory` (
Oid BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
InsTs DATETIME DEFAULT NULL,
InsUser VARCHAR(256) DEFAULT NULL,
UdpUser VARCHAR(256) DEFAULT NULL,
Tid INT NOT NULL,
Notice VARCHAR(1024) DEFAULT NULL,
Version BIGINT DEFAULT NULL,
IsActive TINYINT DEFAULT NULL,
SystemEntryID INT DEFAULT NULL,
ChangeType TINYINT DEFAULT NULL,
Zahlungstyp TINYINT DEFAULT NULL,
Zahlungsdatum DATETIME DEFAULT NULL,
Betrag DECIMAL(18, 10) DEFAULT NULL,
Transaktionskassenbestand DECIMAL(18, 10) DEFAULT NULL,
BargeldtransaktionOid BIGINT DEFAULT NULL,
Belegnummer VARCHAR(128) DEFAULT NULL,
SignatureOid BIGINT DEFAULT NULL,
SignatureStateType INT DEFAULT '0',
BargeldtransaktionInsTs DATETIME DEFAULT NULL,
BargeldtransaktionInsUser VARCHAR(256) DEFAULT NULL,
BargeldtransaktionVersion BIGINT DEFAULT NULL,
BargeldtransaktionUdpUser VARCHAR(256) DEFAULT NULL
) ENGINE=InnoDB;

View File

@@ -30,6 +30,8 @@
{
this.components = new System.ComponentModel.Container();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
@@ -44,15 +46,15 @@
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.TopMargin = new DevExpress.XtraReports.UI.TopMarginBand();
this.BottomMargin = new DevExpress.XtraReports.UI.BottomMarginBand();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.xrPictureBox2 = new DevExpress.XtraReports.UI.XRPictureBox();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
//
this.Detail.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPictureBox2,
this.xrLabel2,
this.xrLabel3,
this.xrLabel10,
@@ -72,6 +74,29 @@
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrLabel2
//
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 152.2917F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(120.9167F, 23F);
this.xrLabel2.StylePriority.UsePadding = false;
this.xrLabel2.StylePriority.UseTextAlignment = false;
this.xrLabel2.Text = "Belegnummer:";
this.xrLabel2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrLabel3
//
this.xrLabel3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Belegnummer")});
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(120.9167F, 152.2917F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(528.0833F, 23F);
this.xrLabel3.StylePriority.UsePadding = false;
this.xrLabel3.StylePriority.UseTextAlignment = false;
this.xrLabel3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrLabel10
//
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(0F, 193.9583F);
@@ -119,10 +144,12 @@
//
// xrLabel7
//
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(316.4551F, 260.4999F);
this.xrLabel7.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "SignatureDate", "{0:dd.MM.yyyy}")});
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(306.2917F, 264.5F);
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(332.545F, 23F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(101.295F, 23.00003F);
this.xrLabel7.StylePriority.UseTextAlignment = false;
this.xrLabel7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft;
//
@@ -214,33 +241,19 @@
this.BottomMargin.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.BottomMargin.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrLabel2
//
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 152.2917F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(120.9167F, 23F);
this.xrLabel2.StylePriority.UsePadding = false;
this.xrLabel2.StylePriority.UseTextAlignment = false;
this.xrLabel2.Text = "Belegnummer:";
this.xrLabel2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrLabel3
//
this.xrLabel3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Belegnummer")});
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(120.9167F, 152.2917F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(528.0833F, 23F);
this.xrLabel3.StylePriority.UsePadding = false;
this.xrLabel3.StylePriority.UseTextAlignment = false;
this.xrLabel3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.KassenbelegRO);
//
// xrPictureBox2
//
this.xrPictureBox2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Image", null, "SignatureImage")});
this.xrPictureBox2.LocationFloat = new DevExpress.Utils.PointFloat(407.5867F, 252F);
this.xrPictureBox2.Name = "xrPictureBox2";
this.xrPictureBox2.SizeF = new System.Drawing.SizeF(241.4133F, 35.50003F);
this.xrPictureBox2.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
//
// KassenbelegReport
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -275,5 +288,6 @@
private DevExpress.XtraReports.UI.XRLabel xrLabel11;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox2;
}
}

View File

@@ -15,7 +15,7 @@ namespace BeWo.Report.DefaultReports
{
bindingSource1.DataSource = pRO;
if (pRO.Beguenstigter == null)
if(pRO.Beguenstigter is null)
{
beguenstigterLabel.Visible = false;
beguenstigterValueLabel.Visible = false;

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,10 @@
using System;
using System.Drawing;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
namespace BeWo.Report.ReportObjects
@@ -17,33 +19,39 @@ namespace BeWo.Report.ReportObjects
public string Belegnummer { get; set; }
public string Notiz { get; set; }
public Bitmap SignatureImage { get; set; }
public DateTime? SignatureDate { get; set; }
public static KassenbelegRO Create(BargeldtransaktionDC transaktion, BeWoEntityBase beguenstigter)
{
var sqlresult = DAOFactory.SearchDAO.GetSqlResult(String.Format("select k.oid from bargeldkasse k join bargeldtransaktion t on t.BargeldkassenOid = k.Oid where t.oid = {0}", transaktion.BargeldtransaktionOid));
long kasseOid = (long)sqlresult[0];
var sqlresult = DAOFactory.SearchDAO.GetSqlResult($"select k.oid from bargeldkasse k join bargeldtransaktion t on t.BargeldkassenOid = k.Oid where t.oid = {transaktion.BargeldtransaktionOid}");
var kasseOid = (long) sqlresult[0];
var kasse = DAOFactory.GenericDAO.LoadByID<Bargeldkasse>(kasseOid);
var signature = DAOFactory.SearchDAO.LoadSignatureByTransaktionsOid(transaktion.BargeldtransaktionOid.Value);
var beleg = new KassenbelegRO
{
Kasse = kasse.Kassenname,
Titel = string.Format("{0}zahlungsbeleg", (transaktion.Zahlungstyp == Zahlungstyp.Einzahlung ? "Ein" : "Aus")),
Betrag = transaktion.Betrag != null ? transaktion.Betrag.Value : 0m,
Belegdatum = transaktion.Zahlungsdatum != null ? transaktion.Zahlungsdatum.Value : DateTime.Now,
Kasse = kasse.Kassenname,
Titel = $"{(transaktion.Zahlungstyp == Zahlungstyp.Einzahlung ? "Ein" : "Aus")}zahlungsbeleg",
Betrag = transaktion.Betrag ?? 0m,
Belegdatum = transaktion.Zahlungsdatum ?? DateTime.Now,
Belegnummer = transaktion.Belegnummer,
Notiz = transaktion.Notice
Notiz = transaktion.Notice
};
if (beguenstigter != null)
if(signature != null)
{
if (beguenstigter is Customer)
{
var customer = (Customer)beguenstigter;
beleg.Beguenstigter = customer.Person.FirstNameLastName;
}
beleg.SignatureImage = ImageUtils.ConvertBase64StringToBitmap(signature.DataBild);
beleg.SignatureDate = signature.Zeitstempel;
}
return beleg;
if (beguenstigter is Customer customer)
{
beleg.Beguenstigter = customer.Person.FirstNameLastName;
}
return beleg;
}
}
}

View File

@@ -11,12 +11,13 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.BargeldtransaktionVersion = pEntity.Version;
//pDataContract.Customer = MapperFactory.CompactCustomerDC_Customer.MapToNewDC(pEntity.Customer);
pDataContract.Betrag = pEntity.Betrag;
pDataContract.Belegnummer = pEntity.Belegnummer;
pDataContract.Belegnummer = pEntity.Belegnummer;
pDataContract.Zahlungstyp = pEntity.Zahlungstyp;
pDataContract.Zahlungsdatum = pEntity.Zahlungsdatum;
pDataContract.Transaktionskassenbestand = pEntity.Transaktionskassenbestand;
pDataContract.Notice = pEntity.Notice;
pDataContract.InsUser = pEntity.InsUser;
pDataContract.InsUser = pEntity.InsUser;
pDataContract.SignatureOid = pEntity.SignatureOid;
return pDataContract;
}
@@ -28,18 +29,19 @@ namespace BeWo.Service.DCEntityMapper
pEntity.Oid = pDataContract.BargeldtransaktionOid;
//pEntity.Customer = MapperFactory.CompactCustomerDC_Customer.MergeWithEntity(pDataContract.Customer, pEntity.Customer);
pEntity.Betrag = pDataContract.Betrag;
pEntity.Belegnummer = pDataContract.Belegnummer;
pEntity.Belegnummer = pDataContract.Belegnummer;
pEntity.Zahlungstyp = pDataContract.Zahlungstyp;
pEntity.Zahlungsdatum = pDataContract.Zahlungsdatum;
pEntity.Transaktionskassenbestand = pDataContract.Transaktionskassenbestand;
pEntity.Notice = pDataContract.Notice;
pEntity.SignatureOid = pDataContract.SignatureOid;
return pEntity;
}
protected override bool AreDCAndEntityEqual(BargeldtransaktionDC pDC, Bargeldtransaktion pEntity)
{
if (pDC.BargeldtransaktionOid == null)
if (pDC.BargeldtransaktionOid is null)
{
return false;
}

View File

@@ -0,0 +1,47 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
namespace BeWo.Service.DCEntityMapper
{
public class BargeldtransaktionshistoryDC_Bargeldtransaktionshistory : AbstractIDCEntityMapper<Bargeldtransaktionshistory, BargeldtransaktionshistoryDC>
{
public override BargeldtransaktionshistoryDC MergeWithDC(Bargeldtransaktionshistory pEntity, BargeldtransaktionshistoryDC pDataContract)
{
pDataContract.BargeldtransaktionshistoryOid = pEntity.Oid;
pDataContract.BargeldtransaktionshistoryVersion = pEntity.Version;
pDataContract.InsUser = pEntity.InsUser;
pDataContract.InsertedOn = pEntity.InsTs;
pDataContract.ChangeType = pEntity.ChangeType;
pDataContract.Zahlungstyp = pEntity.Zahlungstyp;
pDataContract.Zahlungsdatum = pEntity.Zahlungsdatum;
pDataContract.Betrag = pEntity.Betrag;
pDataContract.Notice = pEntity.Notice;
pDataContract.Transaktionskassenbestand = pEntity.Transaktionskassenbestand;
pDataContract.Belegnummer = pEntity.Belegnummer;
pDataContract.SignatureOid = pEntity.SignatureOid;
pDataContract.SignatureState = pEntity.SignatureState;
pDataContract.BargeldtransaktionVersion = pEntity.Version;
pDataContract.BargeldtransaktionInsTs = pEntity.BargeldtransaktionInsTs;
pDataContract.BargeldtransaktionInsUser = pEntity.BargeldtransaktionInsUser;
pDataContract.BargeldtransaktionUdpUser = pEntity.BargeldtransaktionUdpUser;
pDataContract.BargeldtransaktionOid = pEntity.BargeldtransaktionOid;
return pDataContract;
}
public override Bargeldtransaktionshistory MergeWithEntity(BargeldtransaktionshistoryDC pDataContract, Bargeldtransaktionshistory pEntity)
{
return null;
}
protected override bool AreDCAndEntityEqual(BargeldtransaktionshistoryDC pDC, Bargeldtransaktionshistory pEntity)
{
if(pDC.BargeldtransaktionshistoryOid is null)
{
return false;
}
return pDC.BargeldtransaktionshistoryOid == pEntity.Oid;
}
}
}

View File

@@ -292,6 +292,7 @@ namespace BeWo.Service.DCEntityMapper
private static AddressRouteDC_AddressRoute _AddressRouteDC_AddressRoute;
private static BargeldtransaktionshistoryDC_Bargeldtransaktionshistory _BargeldtransaktionshistoryDC_Bargeldtransaktionshistory;
public static MedRecordDC_MedRecord MedRecordDC_MedRecord =>
_MedRecordDC_MedRecord ?? (_MedRecordDC_MedRecord = new MedRecordDC_MedRecord());
@@ -734,5 +735,8 @@ namespace BeWo.Service.DCEntityMapper
public static AddressRouteDC_AddressRoute AddressRouteDC_AddressRoute =>
_AddressRouteDC_AddressRoute ?? (_AddressRouteDC_AddressRoute = new AddressRouteDC_AddressRoute());
public static BargeldtransaktionshistoryDC_Bargeldtransaktionshistory BargeldtransaktionshistoryDC_Bargeldtransaktionshistory =>
_BargeldtransaktionshistoryDC_Bargeldtransaktionshistory ?? (_BargeldtransaktionshistoryDC_Bargeldtransaktionshistory = new BargeldtransaktionshistoryDC_Bargeldtransaktionshistory());
}
}

View File

@@ -8,26 +8,28 @@ namespace BeWo.Service.DCEntityMapper
{
public override SignatureDC MergeWithDC(Signature pEntity, SignatureDC pDataContract)
{
pDataContract.ServiceRecordOid = pEntity.ServiceRecordOid;
pDataContract.Latitute = pEntity.Latitute;
pDataContract.Longitute = pEntity.Longitute;
pDataContract.DataBild = pEntity.DataBild;
pDataContract.Zeitstempel = pEntity.Zeitstempel;
pDataContract.SignatureOid = pEntity.Oid;
pDataContract.SignatureVersion = pEntity.Version;
pDataContract.ServiceRecordOid = pEntity.ServiceRecordOid;
pDataContract.Latitute = pEntity.Latitute;
pDataContract.Longitute = pEntity.Longitute;
pDataContract.DataBild = pEntity.DataBild;
pDataContract.Zeitstempel = pEntity.Zeitstempel;
pDataContract.SignatureOid = pEntity.Oid;
pDataContract.SignatureVersion = pEntity.Version;
pDataContract.BargeldtransaktionsOid = pEntity.BargeldtransaktionsOid;
return pDataContract;
}
public override Signature MergeWithEntity(SignatureDC pDataContract, Signature pEntity)
{
pEntity.ServiceRecordOid = pDataContract.ServiceRecordOid;
pEntity.Latitute = pDataContract.Latitute;
pEntity.Longitute = pDataContract.Longitute;
pEntity.DataBild = pDataContract.DataBild;
pEntity.Zeitstempel = pDataContract.Zeitstempel;
pEntity.Oid = pDataContract.SignatureOid;
pEntity.Version = pDataContract.SignatureVersion;
pEntity.ServiceRecordOid = pDataContract.ServiceRecordOid;
pEntity.Latitute = pDataContract.Latitute;
pEntity.Longitute = pDataContract.Longitute;
pEntity.DataBild = pDataContract.DataBild;
pEntity.Zeitstempel = pDataContract.Zeitstempel;
pEntity.Oid = pDataContract.SignatureOid;
pEntity.Version = pDataContract.SignatureVersion;
pEntity.BargeldtransaktionsOid = pDataContract.BargeldtransaktionsOid;
return pEntity;
}

View File

@@ -376,6 +376,7 @@ namespace BeWo.Service.Plugins
//t = "1733934665"; // Auf eigenen Füßen stehen (Birgit Apel de Santos & Stefan Haefs)
//t = "9814444882"; // PSM gGmbH (Paritätische Sozialdienste in Meerbusch)
//t = "2839619357"; // SKFM Düsseldorf
//t = "3936475760"; // PROgynmnasium Bensberg e.V. (PRO Train - Betreutes Wohnen)
return t;

View File

@@ -221,6 +221,7 @@
<Compile Include="Core\Utils.cs" />
<Compile Include="DCEntityMapper\AbwesenheitsInformationPrintDC_AbwesenheitsInformationPrint.cs" />
<Compile Include="DCEntityMapper\AddressRouteDC_AddressRoute.cs" />
<Compile Include="DCEntityMapper\BargeldtransaktionshistoryDC_Bargeldtransaktionshistory.cs" />
<Compile Include="DCEntityMapper\ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.cs" />
<Compile Include="DCEntityMapper\DienstvertretungDC_Dienstvertretung.cs" />
<Compile Include="DCEntityMapper\DokumentvorlageDC_Dokumentvorlage.cs" />

View File

@@ -1347,5 +1347,13 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
IList<ServiceRecordDC> FindServiceRecordsForLastDaysPaginated(long? costbearer2SupportConceptOid, int days, long? employeeOid, int firstResult, int maxResults, out int rowCount);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<BargeldtransaktionshistoryDC> LoadBargeldtransaktionshistoryEntries(long transaktionsOid);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
void DeleteBargeldtransaktionSignature(long signatureOid);
}
}

View File

@@ -3510,8 +3510,15 @@ namespace BeWo.Service.ServiceImplementations
DAOFactory.GenericDAO.Insert(lSignature);
var updatedSignatureDC = MapperFactory.SignatureDC_Signature.MapToNewDC(lSignature);
if(!s.ServiceRecordOid.HasValue)
if(s.ServiceRecordOid is null)
{
if(s.BargeldtransaktionsOid.HasValue)
{
var transaction = DAOFactory.GenericDAO.LoadByID<Bargeldtransaktion>(s.BargeldtransaktionsOid.Value);
CreateTransactionHistoryObject(transaction, StatementType.Signature, SignatureStateType.Valid);
}
return updatedSignatureDC;
}
@@ -4037,9 +4044,113 @@ namespace BeWo.Service.ServiceImplementations
{
var lOriginal = DAOFactory.GenericDAO.LoadByID<Bargeldkasse>(pBargeldkasse.BargeldkassenOid.Value);
#region Transaktionshistorie
var changedTransactionOids = new List<long>();
var transactionHistoryEntries = new List<Bargeldtransaktionshistory>();
// Oid zu Änderungsart und Unterschriftenstatus zum Speichern nach dem Bargeldkassen-Update
var oids2ChangeTypes = new Dictionary<long, KeyValuePair<StatementType, SignatureStateType>>();
// Oids der Unterschriften, die durch die Änderung ungültig wurden
var signatureOids2Delete = new List<long>();
// Die unveränderten Transaktionen laden, um sie mit den geänderten zu vergleichen und herauszufinden, was geändert wurde.
var originalTransactions = MapperFactory.BargeldtransaktionDC_Bargeldtransaktion.MapToNewDCs(lOriginal.Bargeldtransaktionen);
// Die Oids der gelöschten Transaktionen, um die damit verbundenen Unterschriften zu löschen
var deletedOids = new List<long>();
foreach(var originalTransaction in originalTransactions)
{
var changedOrDeletedTransactionDC = pBargeldkasse.Bargeldtransaktionen.FirstOrDefault(transaction => transaction.BargeldtransaktionOid.HasValue && transaction.BargeldtransaktionOid.Value.Equals(originalTransaction.BargeldtransaktionOid.Value));
if(changedOrDeletedTransactionDC is null && originalTransaction.BargeldtransaktionOid.HasValue)
{
if(originalTransaction.SignatureOid.HasValue)
{
signatureOids2Delete.AddIfNotIn(originalTransaction.SignatureOid.Value);
}
deletedOids.AddIfNotIn(originalTransaction.BargeldtransaktionOid.Value);
}
// Die Transaktion ist nicht neu und wurde geändert
if((changedOrDeletedTransactionDC?.BargeldtransaktionOid.HasValue ?? false) && !originalTransaction.Equals(changedOrDeletedTransactionDC))
{
// Es wurde eine Transaktion unterschrieben.
if(originalTransaction.SignatureOid is null && changedOrDeletedTransactionDC.SignatureOid.HasValue)
{
oids2ChangeTypes.AddIfNotIn(
new KeyValuePair<long, KeyValuePair<StatementType, SignatureStateType>>(
changedOrDeletedTransactionDC.BargeldtransaktionOid.Value,
new KeyValuePair<StatementType, SignatureStateType>(StatementType.Signature, SignatureStateType.Valid)));
}
else // Es wurde eine andere Eigenschaft geändert als die Unterschrift
{
var newSignatureState = SignatureStateType.None;
// Wenn die Transaktion eine Unterschrift vor der Änderung hatte, wird diese als ungültig gespeichert
if(changedOrDeletedTransactionDC.SignatureOid.HasValue)
{
newSignatureState = SignatureStateType.Invalid;
}
oids2ChangeTypes.AddIfNotIn(new KeyValuePair<long, KeyValuePair<StatementType, SignatureStateType>>(
changedOrDeletedTransactionDC.BargeldtransaktionOid.Value,
new KeyValuePair<StatementType, SignatureStateType>(StatementType.Update, newSignatureState)));
}
changedTransactionOids.AddIfNotIn(changedOrDeletedTransactionDC.BargeldtransaktionOid.Value);
}
}
#endregion
var deletedTransactions = DAOFactory.GenericDAO.LoadByIDs<Bargeldtransaktion>(deletedOids);
var signatures2Delete = new List<Signature>();
foreach(var deletedTransaction in deletedTransactions)
{
var signatureStateType = SignatureStateType.None;
if(deletedTransaction.SignatureOid.HasValue)
{
var signature = DAOFactory.GenericDAO.LoadByID<Signature>(deletedTransaction.SignatureOid.Value);
signatures2Delete.Add(signature);
deletedTransaction.SignatureOid = null;
signatureStateType = SignatureStateType.ManuallyDeleted;
}
transactionHistoryEntries.Add(CreateTransactionHistoryObject(deletedTransaction, StatementType.Delete, signatureStateType));
}
DAOFactory.GenericDAO.Delete(signatures2Delete);
MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MergeWithEntity(pBargeldkasse, lOriginal);
var newTransactions = lOriginal.Bargeldtransaktionen.Where(transaction => transaction.Oid is null).ToList();
DAOFactory.GenericDAO.Update(lOriginal);
foreach(var newTransaction in newTransactions)
{
transactionHistoryEntries.Add(CreateTransactionHistoryObject(newTransaction, StatementType.Insert, SignatureStateType.None));
}
foreach(var oid2ChangeTypes in oids2ChangeTypes)
{
var editedTransaction = lOriginal.Bargeldtransaktionen.FirstOrDefault(transaction => transaction.Oid.HasValue && transaction.Oid.Value.Equals(oid2ChangeTypes.Key));
if(editedTransaction is null)
{
continue;
}
transactionHistoryEntries.Add(CreateTransactionHistoryObject(editedTransaction, oid2ChangeTypes.Value.Key, oid2ChangeTypes.Value.Value));
}
DAOFactory.GenericDAO.Insert(transactionHistoryEntries);
return MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MapToNewDC(lOriginal);
}
catch (Exception e)
@@ -4048,10 +4159,42 @@ namespace BeWo.Service.ServiceImplementations
}
}
public void DeleteBargeldtransaktionSignature(long signatureOid)
{
try
{
var signature2Delete = DAOFactory.GenericDAO.LoadByID<Signature>(signatureOid);
DAOFactory.GenericDAO.Delete(signature2Delete);
}
catch(Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateBargeldkasse(long pOid, long pVersion)
{
try
{
var bargeldkasse = DAOFactory.GenericDAO.LoadByID<Bargeldkasse>(pOid);
var signatureOids2Delete = bargeldkasse.Bargeldtransaktionen.Where(transaction => transaction.SignatureOid.HasValue).Select(transaction => transaction.SignatureOid.Value).ToList();
var signatures2Delete = DAOFactory.GenericDAO.LoadByIDs<Signature>(signatureOids2Delete);
var historyEntries = new List<Bargeldtransaktionshistory>();
foreach(var transaction in bargeldkasse.Bargeldtransaktionen)
{
var signatureState = transaction.SignatureOid is null ? SignatureStateType.None : SignatureStateType.AutomaticallyDeleted;
historyEntries.Add(CreateTransactionHistoryObject(transaction, StatementType.Delete, signatureState));
}
DAOFactory.GenericDAO.Delete(signatures2Delete);
DAOFactory.GenericDAO.Insert(historyEntries);
ServiceLogic.SetActivationType<Bargeldkasse>(new Dictionary<long, long> { { pOid, pVersion } }, ActivationTypeId.Deleted);
}
catch (Exception e)
@@ -4060,6 +4203,27 @@ namespace BeWo.Service.ServiceImplementations
}
}
private static Bargeldtransaktionshistory CreateTransactionHistoryObject(Bargeldtransaktion transaction, StatementType changeType, SignatureStateType signatureState)
{
return new Bargeldtransaktionshistory
{
Betrag = transaction.Betrag,
BargeldtransaktionOid = transaction.Oid,
BargeldtransaktionInsTs = transaction.InsTs,
BargeldtransaktionInsUser = transaction.InsUser,
BargeldtransaktionUdpUser = transaction.UdpUser,
BargeldtransaktionVersion = transaction.Version,
ChangeType = changeType,
Belegnummer = transaction.Belegnummer,
Notice = transaction.Notice,
IsActive = ActivationTypeId.Active,
SignatureOid = transaction.SignatureOid,
SignatureState = signatureState,
Zahlungstyp = transaction.Zahlungstyp,
Zahlungsdatum = transaction.Zahlungsdatum
};
}
public List<NotizenKategorieDC> LoadNotizenKategorienForObject(TableID objectTid, long objectOid)
{
try
@@ -8621,6 +8785,20 @@ namespace BeWo.Service.ServiceImplementations
throw Utils.CreateBeWoFaultException(e);
}
}
public List<BargeldtransaktionshistoryDC> LoadBargeldtransaktionshistoryEntries(long transaktionsOid)
{
try
{
var historyEntries = DAOFactory.SearchDAO.LoadBargeldtransaktionshistoryEntries(transaktionsOid);
return MapperFactory.BargeldtransaktionshistoryDC_Bargeldtransaktionshistory.MapToNewDCs(historyEntries);
}
catch(Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
}
public class ServiceRecord2SignatureStates

View File

@@ -42,6 +42,14 @@
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>

View File

@@ -169,7 +169,8 @@ namespace BS.Shared
AddressRoute = 162,
ValidationMessage = 163,
AdditionalServiceNotice = 164,
GkvAbrechnung = 165
GkvAbrechnung = 165,
Bargeldtransaktionshistory = 166
}
public enum SystemEntryID

View File

@@ -36,5 +36,27 @@ namespace BS.Shared.DataContracts
[DataMember]
public string InsUser { get; set; }
[DataMember]
public long? SignatureOid { get; set; }
public override bool Equals(object obj)
{
if(obj is BargeldtransaktionDC transaction)
{
return Zahlungstyp.Equals(transaction.Zahlungstyp) &&
Equals(Betrag, transaction.Betrag) &&
Equals(BargeldtransaktionOid, transaction.BargeldtransaktionOid) &&
Equals(BargeldtransaktionVersion, transaction.BargeldtransaktionVersion) &&
Equals(Zahlungsdatum, transaction.Zahlungsdatum) &&
Equals(Transaktionskassenbestand, transaction.Transaktionskassenbestand) &&
Equals(Notice, transaction.Notice) &&
Equals(Belegnummer, transaction.Belegnummer) &&
Equals(InsUser, transaction.InsUser) &&
Equals(SignatureOid, transaction.SignatureOid);
}
return false;
}
}
}

View File

@@ -0,0 +1,62 @@
using System;
using System.Runtime.Serialization;
namespace BS.Shared.DataContracts
{
public partial class BargeldtransaktionshistoryDC
{
[DataMember]
public Zahlungstyp Zahlungstyp { get; set; }
[DataMember]
public string InsUser { get; set; }
[DataMember]
public DateTime? InsertedOn { get; set; }
[DataMember]
public string Notice { get; set; }
[DataMember]
public SignatureStateType SignatureState { get; set; }
[DataMember]
public StatementType ChangeType { get; set; }
[DataMember]
public DateTime? Zahlungsdatum { get; set; }
[DataMember]
public decimal? Transaktionskassenbestand { get; set; }
[DataMember]
public decimal? Betrag { get; set; }
[DataMember]
public string Belegnummer { get; set; }
[DataMember]
public long? SignatureOid { get; set; }
[DataMember]
public DateTime? BargeldtransaktionInsTs { get; set; }
[DataMember]
public long? BargeldtransaktionshistoryOid { get; set; }
[DataMember]
public long? BargeldtransaktionshistoryVersion { get; set; }
[DataMember]
public long? BargeldtransaktionVersion { get; set; }
[DataMember]
public string BargeldtransaktionInsUser { get; set; }
[DataMember]
public string BargeldtransaktionUdpUser { get; set; }
[DataMember]
public long? BargeldtransaktionOid { get; set; }
}
}

View File

@@ -0,0 +1,47 @@
namespace BS.Shared.DataContracts
{
public partial class BargeldtransaktionshistoryDC
{
public string HistoryTypeString
{
get
{
switch(ChangeType)
{
case StatementType.Insert:
return "Neu angelegt";
case StatementType.Update:
return "Geändert";
case StatementType.Delete:
return "Gelöscht";
case StatementType.Signature:
return "Unterschrift";
default:
return null;
}
}
}
public string SignatureStateString
{
get
{
switch(SignatureState)
{
case SignatureStateType.None:
return "Keine";
case SignatureStateType.Invalid:
return "Ungültig";
case SignatureStateType.Valid:
return "Gültig";
case SignatureStateType.AutomaticallyDeleted:
return "Autmatisch gelöscht";
case SignatureStateType.ManuallyDeleted:
return "Manuell gelöscht";
default:
return null;
}
}
}
}
}

View File

@@ -26,5 +26,8 @@ namespace BS.Shared.DataContracts
[DataMember]
public long? SignatureVersion { get; set; }
[DataMember]
public long? BargeldtransaktionsOid { get; set; }
}
}

View File

@@ -8,6 +8,8 @@ namespace BS.Shared.Settings
public static int AnzTageZeiterfassErfolgt { get; set; }
public static int MaxDaysEditServiceRecordsAllowed { get; set; }
public static int ServiceRecordAllowChangeHours { get; set; }
public virtual string RssFeedUrl => null;
public static int TimeUntilUILock { get; set; }
}

View File

@@ -158,6 +158,8 @@
<Compile Include="DataContracts\AdditionalServiceGroupOfPeopleRelationDC.cs" />
<Compile Include="DataContracts\AdditionalServiceRegionDC.cs" />
<Compile Include="DataContracts\AddressRouteDC.cs" />
<Compile Include="DataContracts\BargeldtransaktionshistoryDC.cs" />
<Compile Include="DataContracts\ClientPartials\BargeldtransaktionshistoryDC.cs" />
<Compile Include="DataContracts\ClientPartials\ContactDC.cs" />
<Compile Include="DataContracts\BesetzungsstatusDC.cs" />
<Compile Include="DataContracts\ConfirmationReceiptSignatureDC.cs" />

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net45" />
</packages>