Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo

This commit is contained in:
2023-06-01 16:58:31 +02:00
63 changed files with 7966 additions and 3176 deletions

View File

@@ -39,6 +39,19 @@
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
<TypeScriptTarget>ES2015</TypeScriptTarget>
<TypeScriptJSXEmit>React</TypeScriptJSXEmit>
<TypeScriptModuleKind>ES6</TypeScriptModuleKind>
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
<TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
<TypeScriptRemoveComments>False</TypeScriptRemoveComments>
<TypeScriptOutFile />
<TypeScriptOutDir />
<TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
<TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
<TypeScriptSourceMap>True</TypeScriptSourceMap>
<TypeScriptMapRoot />
<TypeScriptSourceRoot />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -5066,7 +5079,7 @@
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>False</UseIIS>
<UseIIS>True</UseIIS>
<AutoAssignPort>False</AutoAssignPort>
<DevelopmentServerPort>8808</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>

View File

@@ -28,7 +28,7 @@ namespace BeWoPlanerMobil.Controllers
return null;
}
if (((CustomerModel) Session[ModelSessionConstants.CustomerModelKey])?.Employee == null)
if (((CustomerModel) Session[ModelSessionConstants.CustomerModelKey])?.Employee is null)
{
_Model = new CustomerModel{Employee = MobileSessionFacade.LoggedInEmployee};
Session[ModelSessionConstants.CustomerModelKey] = _Model;
@@ -53,7 +53,7 @@ namespace BeWoPlanerMobil.Controllers
}
var customerFilter = MobileUserSettingsUtils.GetSettingValueAsEnum(AbstractModel.UserSettings, SettingsKeys.CustomerFilterCustomers, CustomerFilterEnum.MyCustomer);
Model.SelectedCustomerFilter = customerFilter;
InitViewModel();
@@ -74,9 +74,10 @@ namespace BeWoPlanerMobil.Controllers
private void InitViewModel()
{
if(Model == null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
Logout();
return;
}
if(Model.Employee?.EmployeeOid.HasValue ?? false)
@@ -88,26 +89,23 @@ namespace BeWoPlanerMobil.Controllers
Model.Customers = new List<CompactCustomerDC>();
}
// ReportTypes laden! Erstmal nur Medikamentenansicht
if(AbstractModel.IsAllowedToSeeMedikamentenliste)
{
Model.ReportTypes = new List<CustomerReportType> { CustomerReportType.Medikamentenliste, CustomerReportType.Test };
Model.ReportTypes = new List<CustomerReportType> { CustomerReportType.Medikamentenliste, CustomerReportType.Bedarfsmedikation, CustomerReportType.Historie };
}
}
[Authorize]
public ActionResult PreselectCustomer(long? customerOid)
{
if (Model == null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
if (Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
return Logout();
}
InitViewModel();
if (customerOid > 0 && Model.Customers.Any(customer => customer.CustomerOid.Equals(customerOid.Value)))
if(customerOid > 0 && Model.Customers.Any(customer => customer.CustomerOid.Equals(customerOid.Value)))
{
Model.SelectedCustomerOid = customerOid;
@@ -126,7 +124,7 @@ namespace BeWoPlanerMobil.Controllers
{
try
{
if (Model == null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
return Logout();
}
@@ -165,7 +163,7 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public ActionResult SetCustomerFilter(FormCollection formCollection)
{
if(Model == null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
return Logout();
}
@@ -185,7 +183,7 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public FileResult DownloadFile(long fileOid)
{
if (Model == null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
if (Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
Logout();
return null;
@@ -199,7 +197,7 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public string SaveEditedNotice(string newNotice)
{
if(Model == null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
Logout();
return LeerzeichenFuerGetMethoden;
@@ -222,43 +220,66 @@ namespace BeWoPlanerMobil.Controllers
[HttpPost]
public ActionResult SelectReport(FormCollection formCollection)
{
if(Model == null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || !AbstractModel.IsAllowedToSeeMedikamentenliste)
{
return Logout();
}
Model.Report = null;
var selectedReportType = formCollection[nameof(Model.SelectedReportType)];
if(int.TryParse(selectedReportType, out var reportTypeInt))
if(int.TryParse(formCollection["report-type-input"], out var selectedReportTypeInt))
{
if(AbstractModel.IsAllowedToSeeMedikamentenliste && reportTypeInt == (int) CustomerReportType.Medikamentenliste)
{
// MedListType = true => Bedarfsliste
GenerateMobileMedListForSelectedCustomer();
}
var selectedReportType = (CustomerReportType) selectedReportTypeInt;
SelectReport(selectedReportType);
}
return RedirectToActionPermanent("Customer");
}
public void GenerateMobileMedListForSelectedCustomer()
private void SelectReport(CustomerReportType selectedReportType)
{
// TODO: Die neueste MedVerListOid laden, sofern eine vorhanden ist.
var mvlOid = CustomerService.GetActiveMedVerListOidForCustomer(Model.SelectedCustomerOid.Value);
Model.SelectedReportType = selectedReportType;
var listen = Model.SelectedCustomer.Medikamentenverordnungslisten;
GenerateMobileMedListForSelectedCustomer();
}
var aktuelleListe = listen.FirstOrDefault(f => f.Gueltig && f.MedListType == false);
if (aktuelleListe?.MedikamentenverordnungslistenOid != null && Request?.Url != null)
public void GenerateMobileMedListForSelectedCustomer(long? selectedMedListOid = null)
{
if(Model.SelectedCustomerOid is null)
{
using (var memoryStream = ReportService.CreateMedikamentenlistenReport(aktuelleListe.MedikamentenverordnungslistenOid.Value, MobileSessionFacade.Tenant))
{
var report = new XtraReport();
report.PrintingSystem.LoadDocument(memoryStream);
return;
}
Model.Report = report;
}
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;
}
using (var memoryStream = ReportService.CreateMedikamentenlistenReport(medList.MedikamentenverordnungslistenOid.Value, MobileSessionFacade.Tenant))
{
var report = new XtraReport();
report.PrintingSystem.LoadDocument(memoryStream);
Model.Report = report;
}
}
@@ -361,11 +382,41 @@ namespace BeWoPlanerMobil.Controllers
return RedirectToActionPermanent("PreselectCustomer", new { customerOid = customer.CustomerOid });
}
[Authorize]
[HttpPost]
public ActionResult ViewMedListFromHistoryList(FormCollection formCollection)
{
if(long.TryParse(formCollection["med-list-oid"], out var medListOid))
{
Model.SelectedReportType = CustomerReportType.Historie;
GenerateMobileMedListForSelectedCustomer(medListOid);
}
return RedirectToActionPermanent("Customer");
}
[Authorize]
[HttpPost]
public ActionResult DeleteMedListFromHistoryList(FormCollection formCollection)
{
// ToDo: Nachfragen, ob gelöscht werden soll
if(long.TryParse(formCollection["med-list-oid"], out var medListOid))
{
Model.SelectedReportType = CustomerReportType.Historie;
CustomerService.DeleteMedikamentenverordnungsliste(medListOid);
}
return RedirectToActionPermanent("Customer");
}
}
public enum CustomerReportType
{
Medikamentenliste = 0,
Test = 1
Bedarfsmedikation = 1,
Historie = 2
}
}

View File

@@ -83,6 +83,8 @@ namespace BeWoPlanerMobil.Controllers
{
Log.Error("Fehler beim Speichern der BrowserInfo: " + exception);
}
// ToDo: Hier durch die Mandatorsettings den Timeout setzen!
AbstractModel.TimeOfLastAction = $"{DateTime.Now:yyyy-MM-dd}T{DateTime.Now:HH:mm:ss}";

View File

@@ -95,6 +95,10 @@ namespace BeWoPlanerMobil.Controllers
if(Model.Mandator is null)
{
Model.Mandator = GetMandator();
#if DEBUG
//var timeUntilUILock = BS.Shared.Settings.ApplicationSettings.TimeUntilUILock;
//Session.Timeout = timeUntilUILock > 0 ? timeUntilUILock : 20;
#endif
}
var mandatorSettings = Model.Mandator.Settings;
@@ -2498,7 +2502,7 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public ActionResult RedirectToReportView()
{
return AbstractModel.IsAllowedToSeeBills ? RedirectToActionPermanent("InitReports", "Report") : RedirectToMain();
return AbstractModel.HasRightToViewQuittierungsbelege ? RedirectToActionPermanent("InitReports", "Report") : RedirectToMain();
}
[Authorize]

View File

@@ -54,7 +54,7 @@ namespace BeWoPlanerMobil.Controllers
return Logout();
}
if(!AbstractModel.IsAllowedToSeeBills)
if(!AbstractModel.HasRightToViewQuittierungsbelege)
{
return RedirectToActionPermanent("Main", "Main");
}
@@ -75,7 +75,7 @@ namespace BeWoPlanerMobil.Controllers
return Logout();
}
if(!AbstractModel.IsAllowedToSeeBills)
if(!AbstractModel.HasRightToViewQuittierungsbelege)
{
return RedirectToActionPermanent("Main", "Main");
}

View File

@@ -110,6 +110,9 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public ActionResult LoadCustomReport(long? reportOid)
{
var logFileName = log4net.GlobalContext.Properties["LogFileName"];
Log.Info($"LoadCustomReport für ReportOid {reportOid}");
if(Model?.Employee?.EmployeeOid is null || reportOid is null)
{
return Logout();
@@ -119,6 +122,7 @@ namespace BeWoPlanerMobil.Controllers
if(selectedQuery is null)
{
Log.Info($"Query mit Oid {reportOid} nicht in der Datenbank gefunden!");
Model.Report = null;
return PartialView("DocumentWebViewerPartial", Model);
}
@@ -130,6 +134,7 @@ namespace BeWoPlanerMobil.Controllers
if(test is null)
{
Log.Info($"Query-Ergebnis für QueryOid {selectedQuery.Oid} ist null");
return PartialView("DocumentWebViewerPartial", Model);
}
@@ -153,6 +158,8 @@ namespace BeWoPlanerMobil.Controllers
Model.Report = report;
Log.Info($"Report wurde erstellt für Query-Oid {selectedQuery.Oid}");
return PartialView("DocumentWebViewerPartial", Model);
}

View File

@@ -18,11 +18,6 @@ namespace BeWoPlanerMobil
{
protected void Application_Start()
{
// Testweise hinzugefügt, weil die Suche und Download/Export nicht funktioniert. KGW
//DevExpress.XtraReports.Web.WebDocumentViewer.Native.WebDocumentViewerBootstrapper.SessionState = System.Web.SessionState.SessionStateBehavior.Required;
//DevExpress.XtraReports.Web.WebDocumentViewer.DefaultWebDocumentViewerContainer.RegisterWebDocumentViewerDrillThroughProcessor<WebDocumentViewerDrillThroughProcessor>();
//DevExpress.XtraReports.Web.WebDocumentViewer.DefaultWebDocumentViewerContainer.UseFileDocumentStorage(Server.MapPath("~/App_Data/WebDocumentViewerCache"));
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);

View File

@@ -40,7 +40,7 @@ namespace BeWoPlanerMobil.Models
public static bool HasRightToInsertRessourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAnlegen) || CheckRight(UserRightType.CreateAll);
public static bool IsAllowedToSeeBills
public static bool HasRightToViewQuittierungsbelege
{
get
{

View File

@@ -97,7 +97,28 @@ namespace BeWoPlanerMobil.Models
result.Add(new SelectListItem
{
Value = ((int) reportType).ToString(),
Text = reportType.ToString()
Text = reportType == CustomerReportType.Bedarfsmedikation ? "Bedarfsmedikation" : reportType == CustomerReportType.Medikamentenliste ? "Aktuelle Medikamentenverordnung" : "Historie"
});
}
return result;
}
}
public List<SelectListItem> OldMedLists
{
get
{
var result = new List<SelectListItem>();
var ungueltigeListen = SelectedCustomer.Medikamentenverordnungslisten.Where(w => !w.Gueltig).OrderBy(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}"
});
}

View File

@@ -58,7 +58,7 @@ namespace BeWoPlanerMobil.Service
}
SessionFactories[MobileSessionFacade.Tenant] = new Configuration().Configure(serverPath).SetInterceptor(new MobileUpdInsInterceptor()).BuildSessionFactory();
}
}
return SessionFactories[MobileSessionFacade.Tenant];
}

View File

@@ -75,6 +75,7 @@ namespace BeWoPlanerMobil.Util
public string SchwebiGradDerBehinderung { get; }
public string SchwebiPflegegrad { get; }
public string SchwebiAktenzeichen { get; }
public bool HasSchwebi { get; }
public JsonCustomer(CustomerDC customer, List<BeWoFolderDC> folderTree, Dictionary<string, string> icd10Diagnosen)
{
@@ -102,6 +103,17 @@ namespace BeWoPlanerMobil.Util
SchwebiBeiblattGueltigBis = customer.BeiblattGueltigBis?.ToString("dd.MM.yyyy") ?? string.Empty;
SchwebiAusstAmt = customer.AusstVersAmt;
HasSchwebi = SchwebiIsUnlimited == "JA" ||
!string.IsNullOrWhiteSpace(SchwebiGradDerBehinderung) ||
!string.IsNullOrWhiteSpace(SchwebiPflegegrad) ||
!string.IsNullOrWhiteSpace(SchwebiAktenzeichen) ||
!string.IsNullOrWhiteSpace(SchwebiMerkzeichen) ||
!string.IsNullOrWhiteSpace(SchwebiBehinderungsart) ||
!string.IsNullOrWhiteSpace(SchwebiGueltigVon) ||
!string.IsNullOrWhiteSpace(SchwebiGueltigBis) ||
!string.IsNullOrWhiteSpace(SchwebiBeiblattGueltigBis) ||
!string.IsNullOrWhiteSpace(SchwebiAusstAmt);
ICD10Diagnosen = icd10Diagnosen;
Vorname = customer.FirstName;
Nachname = customer.LastName;

View File

@@ -440,6 +440,11 @@ namespace BeWoPlanerMobil.Util
public static string ToHtml(string s, bool nofollow)
{
if(s is null)
{
return Empty;
}
s = HttpUtility.HtmlEncode(s);
var paragraphs = s.Split(new[] { "\r\n\r\n" }, StringSplitOptions.None);
var stringBuilder = new StringBuilder();

View File

@@ -8,31 +8,31 @@
}
<script>
$(function() {
$(function () {
$("#date-of-birth-picker").datetimepicker({
locale: "de",
format: "L"
});
});
$("#stammdaten-container").ready(function() {
$("#stammdaten-container").ready(function () {
var width = getMaxWidth("customer-prepend-text-eigenschaften");
if(width > 0) {
if (width > 0) {
$(".customer-prepend-text-eigenschaften").width(width);
}
width = getMaxWidth("customer-prepend-text-adresse");
if(width > 0) {
if (width > 0) {
$(".customer-prepend-text-adresse").width(width);
}
width = getMaxWidth("customer-prepend-text-rechnungsadresse");
if(width > 0) {
if (width > 0) {
$(".customer-prepend-text-rechnungsadresse").width(width);
}
width = getMaxWidth("customer-prepend-text-kontakt");
if(width > 0) {
if (width > 0) {
$(".customer-prepend-text-kontakt").width(width);
}
});
@@ -41,18 +41,18 @@
try {
showSpinner();
$("#stammdaten-form").submit();
} catch(error) {
} catch (error) {
showErrorPopup(error);
}
}
(function() {
(function () {
'use strict';
window.addEventListener('load', function() {
window.addEventListener('load', function () {
var forms = document.getElementsByClassName("needs-validation");
var validation = Array.prototype.filter.call(forms, function(form) {
var validation = Array.prototype.filter.call(forms, function (form) {
form.addEventListener('submit', function (event) {
if(form.checkValidity() === false) {
if (form.checkValidity() === false) {
hideSpinner();
event.preventDefault();
event.stopPropagation();
@@ -67,39 +67,94 @@
});
}, false);
})();
</script>
<div class="container-fluid mt-3">
@if(AbstractModel.IsAllowedToSeeCustomerFilter)
{
using(Html.BeginForm("SetCustomerFilter", "Customer", FormMethod.Post))
{
<div class="row mb-3 align-items-center">
<div class="col-sm-2 col-md-1">
@Html.LabelFor(m => m.SelectedCustomerFilter)
</div>
<div class="col-sm-10 col-md-11">
@Html.DropDownListFor(m => m.SelectedCustomerFilter, Model.CustomerFilter, new { onchange = "submitForm(this)", @class = "custom-select" })
</div>
</div>
function submitReportTypeSelectionForm() {
try {
var selectedReportType = $("#report-type-select").find(":selected").val();
$("#report-type-input").val(selectedReportType);
$("#medverordnungs-form").submit();
} catch (error) {
showErrorPopup(error);
}
}
@using(Html.BeginForm("SelectCustomer", "Customer", FormMethod.Post, new { id = "select-customer-form" }))
{
<div class="row align-items-center">
<div class="col-sm-2 col-md-1">
@Html.LabelFor(m => m.SelectedCustomerOid)
</div>
<div class="col-sm-10 col-md-11">
@Html.DropDownListFor(m => m.SelectedCustomerOid, Model.CustomerListItems, new { onchange = "submitCustomerSelectionForm();", @class = "custom-select" })
</div>
</div>
function changeReportTypeSelection() {
try {
var selectedReportType = $("#report-type-select").find(":selected").val();
var medListReportConteiner = $("#med-list-report-container");
var historyList = $("#med-list-history-list");
$("#show-med-list-btn").prop("disabled", selectedReportType === "2");
if (selectedReportType !== "2") {
historyList.hide();
//medListReportConteiner.show();
return;
}
historyList.removeClass("d-none");
//medListReportConteiner.hide();
historyList.show();
} catch (error) {
showErrorPopup(error);
}
}
function viewHistoryMedList(oid) {
try {
showSpinner();
$("#med-list-oid-view").val(oid);
$("#view-history-med-list").submit();
} catch (error) {
showErrorPopup(error);
}
}
function deleteHistoryMedList(oid) {
try {
showSpinner();
$("#med-list-oid-delete").val(oid);
$("#delete-history-med-list").submit();
} catch (error) {
showErrorPopup(error);
}
}
</script>
<div class="container mt-3">
<div class="row mb-3">
@if(AbstractModel.IsAllowedToSeeCustomerFilter)
{
<div class="col-md mb-2">
@using(Html.BeginForm("SetCustomerFilter", "Customer", FormMethod.Post))
{
@Html.DropDownListFor(m => m.SelectedCustomerFilter, Model.CustomerFilter, new { onchange = "submitForm(this)", @class = "custom-select" })
}
</div>
}
<div class="col-md">
@using(Html.BeginForm("SelectCustomer", "Customer", FormMethod.Post, new { id = "select-customer-form" }))
{
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Klient</span>
</div>
@Html.DropDownListFor(m => m.SelectedCustomerOid, Model.CustomerListItems, new { onchange = "submitCustomerSelectionForm();", @class = "custom-select" })
</div>
}
</div>
</div>
</div>
<div class="container-fluid mt-3">
@Html.Partial("CustomerReportPartial", Model)
@if(Model?.SelectedJsonCustomer != null)
{
using(Html.BeginForm("UpdateCustomer", "Customer", FormMethod.Post, new { id = "stammdaten-form", @class = "needs-validation", novalidate="novalidate" }))
using(Html.BeginForm("UpdateCustomer", "Customer", FormMethod.Post, new { id = "stammdaten-form", @class = "needs-validation", novalidate = "novalidate" }))
{
var inputDisabled = !AbstractModel.HasRightToEditCustomers ? "disabled" : string.Empty;
@@ -652,47 +707,77 @@
</div>
</div>
<!-- Medikamentenliste TODO: ÜBERARBEITEN -->
@*@if(Html.IsInDebugMode() && AbstractModel.IsAllowedToSeeMedikamentenliste)
<!-- Medikamentenliste -->
@if(Html.IsInDebugMode() && AbstractModel.IsAllowedToSeeMedikamentenliste)
{
<div class="col-12 my-3">
<div class="card w-100">
<div class="card-header">
<h5 class="text-bewo-customer-card-header">Berichte</h5>
<h5 class="text-bewo-customer-card-header">Medikamentenverordnungen</h5>
</div>
<div class="card-body">
<div class="container-fluid px-0">
@using(Html.BeginForm("SelectReport", "Customer", FormMethod.Post, new { }))
{
@Html.DropDownListFor(m => m.SelectedReportType, Model.ReportTypeItems, new { @class = "custom-select", name = "SelectedReportType" })
<button class="btn btn-primary my-3" type="submit" onclick="showSpinner()">Bericht anzeigen</button>
<div class="card w-100 h-100">
<div class="card-header" onclick="cardHeaderClick('#chevron-customer-report', '#collapse-customer-report')">
<div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-primary" id="chevron-customer-report"></i>
</div>
<div class="d-inline-flex text-primary h-100">
<button type="button" class="btn btn-link">
Medikamentenliste
</button>
</div>
</div>
<div class="collapse" id="collapse-customer-report">
<div class="card-body">
@Html.Partial("CustomerReportPartial", Model)
</div>
</div>
<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">
<button class="btn btn-primary" type="button" onclick="submitReportTypeSelectionForm();" id="show-med-list-btn">Bericht anzeigen</button>
</div>
<div class="col-sm-12 col-lg">
@if(!(Model.SelectedCustomer is null))
{
<table class="table d-none" 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))
{
var listName = $"{(list.MedListType ? "Medikamentenverordnungsliste" : "Bedarfsmedikamentenverordnungsliste")} vom {list.ErstellDatum}";
<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)">
<i class="fas fa-trash-alt"></i>
</button>
</td>
</tr>
}
</tbody>
</table>
}
@*@if(!(Model.Report is null))
{
// ToDo: Ist viel zu hoch auf kleinen Bildschirmen!*@
@Html.Partial("CustomerReportPartial", Model)
@*}*@
</div>
</div>
</div>
</div>
</div>
</div>
}*@
@if(Html.IsInDebugMode() && AbstractModel.HasRightToViewDiagnosen)
}
@if(Html.IsInDebugMode() && AbstractModel.HasRightToViewDiagnosen && (Model.SelectedJsonCustomer.HasDiagnosen || Model.SelectedJsonCustomer.HasDisabilities || Model.SelectedJsonCustomer.HasSchwebi))
{
<div class="col-12 my-3">
<div class="card w-100 h-100">
@@ -709,12 +794,6 @@
<div class="collapse" id="collapse-customer-diagnosen">
<div class="card-body">
@{
/*
* xs: 12
* sm: 12
* md: 12
* lg:
*/
var hasDiagnosen = Model.SelectedJsonCustomer.HasDiagnosen;
var hasDisabilities = Model.SelectedJsonCustomer.HasDisabilities;
var diagnosenCol = hasDiagnosen && hasDisabilities ? "col-lg-6" : "col-lg-12";
@@ -752,53 +831,56 @@
</table>
</div>
}
<div class="@schwebiCol">
<h6 class="text-primary">Schwerbehindertenausweis</h6>
<table class="table">
<tbody>
<tr>
<td>Aust. Vers. -amt</td>
<td>@Model.SelectedJsonCustomer.SchwebiAusstAmt</td>
</tr>
<tr>
<td>Ausweis unbefristet gültig</td>
<td>@Model.SelectedJsonCustomer.SchwebiIsUnlimited</td>
</tr>
<tr>
<td>Ausweis gültig von</td>
<td>@Model.SelectedJsonCustomer.SchwebiGueltigVon</td>
</tr>
<tr>
<td>Ausweis gültig bis</td>
<td>@Model.SelectedJsonCustomer.SchwebiGueltigBis</td>
</tr>
<tr>
<td>Beiblatt gültig bis</td>
<td>@Model.SelectedJsonCustomer.SchwebiBeiblattGueltigBis</td>
</tr>
<tr>
<td>Grad der Behinderung</td>
<td>@Model.SelectedJsonCustomer.SchwebiGradDerBehinderung</td>
</tr>
<tr>
<td>Merkzeichen</td>
<td>@Model.SelectedJsonCustomer.SchwebiMerkzeichen</td>
</tr>
<tr>
<td>Behinderungsart</td>
<td>@Model.SelectedJsonCustomer.SchwebiBehinderungsart</td>
</tr>
<tr>
<td>Pflegegrad</td>
<td>@Model.SelectedJsonCustomer.SchwebiPflegegrad</td>
</tr>
<tr>
<td>Aktenzeichen</td>
<td>@Model.SelectedJsonCustomer.SchwebiAktenzeichen</td>
</tr>
</tbody>
</table>
</div>
@if(Model.SelectedJsonCustomer.HasSchwebi)
{
<div class="@schwebiCol">
<h6 class="text-primary">Schwerbehindertenausweis</h6>
<table class="table">
<tbody>
<tr>
<td>Aust. Vers. -amt</td>
<td>@Model.SelectedJsonCustomer.SchwebiAusstAmt</td>
</tr>
<tr>
<td>Ausweis unbefristet gültig</td>
<td>@Model.SelectedJsonCustomer.SchwebiIsUnlimited</td>
</tr>
<tr>
<td>Ausweis gültig von</td>
<td>@Model.SelectedJsonCustomer.SchwebiGueltigVon</td>
</tr>
<tr>
<td>Ausweis gültig bis</td>
<td>@Model.SelectedJsonCustomer.SchwebiGueltigBis</td>
</tr>
<tr>
<td>Beiblatt gültig bis</td>
<td>@Model.SelectedJsonCustomer.SchwebiBeiblattGueltigBis</td>
</tr>
<tr>
<td>Grad der Behinderung</td>
<td>@Model.SelectedJsonCustomer.SchwebiGradDerBehinderung</td>
</tr>
<tr>
<td>Merkzeichen</td>
<td>@Model.SelectedJsonCustomer.SchwebiMerkzeichen</td>
</tr>
<tr>
<td>Behinderungsart</td>
<td>@Model.SelectedJsonCustomer.SchwebiBehinderungsart</td>
</tr>
<tr>
<td>Pflegegrad</td>
<td>@Model.SelectedJsonCustomer.SchwebiPflegegrad</td>
</tr>
<tr>
<td>Aktenzeichen</td>
<td>@Model.SelectedJsonCustomer.SchwebiAktenzeichen</td>
</tr>
</tbody>
</table>
</div>
}
</div>
@if(Model.SelectedJsonCustomer.HasDisabilities)
{
@@ -807,12 +889,12 @@
<h6 class="text-primary">Behinderungen</h6>
<table class="table">
<tbody>
@foreach(var behinderung in Model.SelectedCustomer.Disabilities)
{
<tr>
<td>@behinderung.DisplayName</td>
</tr>
}
@foreach(var behinderung in Model.SelectedCustomer.Disabilities)
{
<tr>
<td>@behinderung.DisplayName</td>
</tr>
}
</tbody>
</table>
</div>
@@ -823,7 +905,22 @@
</div>
</div>
}
</div>
</div>
}
}
</div>
</div>
@using(Html.BeginForm("SelectReport", "Customer", FormMethod.Post, new { id = "medverordnungs-form" }))
{
<input type="hidden" name="report-type-input" id="report-type-input" />
}
@using(Html.BeginForm("ViewMedListFromHistoryList", "Customer", FormMethod.Post, new { id = "view-history-med-list" }))
{
<input type="hidden" name="med-list-oid" id="med-list-oid-view" />
}
@using(Html.BeginForm("DeleteMedListFromHistoryList", "Customer", FormMethod.Post, new { id = "delete-history-med-list" }))
{
<input type="hidden" name="med-list-oid" id="med-list-oid-delete" />
}

View File

@@ -8,6 +8,8 @@
settings.Name = "webDocumentViewer2";
settings.MobileMode = true;
settings.SettingsMobile.ReaderMode = true;
settings.SettingsMobile.AnimationEnabled = false;
settings.Height= Unit.Percentage(100);
}).Bind(Model.Report).Render();
}

View File

@@ -87,96 +87,94 @@
}
</div>
</div>
<div id="qb-sig-container">
<div class="row justify-content-center">
@functions
<div id="qb-sig-container" class="row justify-content-center">
@functions
{
public string GetColumnClass()
{
public string GetColumnClass()
// md: 1 -> 12, ab 2 -> 6
// lg: 1 -> 12, 2 -> 6, ab 3 -> 4
// xl: 1 -> 12, 2 -> 6, 3 -> 4, ab 4 -> 3
var count = Model.SelectedConfirmationReceiptSignatures.Count;
var colMd = string.Empty;
var colLg = string.Empty;
var colXl = string.Empty;
if(count < 2)
{
// md: 1 -> 12, ab 2 -> 6
// lg: 1 -> 12, 2 -> 6, ab 3 -> 4
// xl: 1 -> 12, 2 -> 6, 3 -> 4, ab 4 -> 3
var count = Model.SelectedConfirmationReceiptSignatures.Count;
var colMd = string.Empty;
var colLg = string.Empty;
var colXl = string.Empty;
if(count < 2)
{
colMd += "12";
colLg += "3";
colXl += "4";
}
else
{
switch(count)
{
case 2:
colMd += "6";
colLg += "6";
colXl += "6";
break;
case 3:
colLg += "4";
colXl += "4";
break;
case 4:
colXl += "3";
break;
default:
colMd += "6";
colLg += "3";
colXl += "4";
break;
}
}
return $"col-sm-12 col-md-{colMd} col-lg-{colLg} col-xl-{colXl}";
colMd += "12";
colLg += "3";
colXl += "4";
}
else
{
switch(count)
{
case 2:
colMd += "6";
colLg += "6";
colXl += "6";
break;
case 3:
colLg += "4";
colXl += "4";
break;
case 4:
colXl += "3";
break;
default:
colMd += "6";
colLg += "3";
colXl += "4";
break;
}
}
return $"col-sm-12 col-md-{colMd} col-lg-{colLg} col-xl-{colXl}";
}
}
@foreach(var signature in Model.SelectedConfirmationReceiptSignatures)
{
var blubb = $"{(signature.NumberOfServiceRecords == 1 ? "eine" : signature.NumberOfServiceRecords.ToString())} erbrachte Leistung{(signature.NumberOfServiceRecords != 1 ? "en" : string.Empty)}";
@foreach(var signature in Model.SelectedConfirmationReceiptSignatures)
{
var blubb = $"{(signature.NumberOfServiceRecords == 1 ? "eine" : signature.NumberOfServiceRecords.ToString())} erbrachte Leistung{(signature.NumberOfServiceRecords != 1 ? "en" : string.Empty)}";
<div class="@GetColumnClass()">
<div class="card signature-card mt-4">
<div class="justify-content-center">
<img style="display: block; margin-left: auto; margin-right: auto; max-width: 100% !important;" src="@signature.ImageStr" alt="Unterschrift von @signature.PersonName geleistet am @signature.InsTsStr"/>
<div class="@GetColumnClass()">
<div class="card signature-card mt-4">
<div class="justify-content-center">
<img style="display: block; margin-left: auto; margin-right: auto; max-width: 100% !important;" src="@signature.ImageStr" alt="Unterschrift von @signature.PersonName geleistet am @signature.InsTsStr"/>
</div>
<div class="card-body m-0 p-0" style="height: 0px !important;"></div>
<div class="card-footer">
<div class="row">
<div class="col-auto left-col">
Unterschrift von:
</div>
<div class="col">
@signature.PersonName
</div>
</div>
<div class="card-body m-0 p-0" style="height: 0px !important;"></div>
<div class="card-footer">
<div class="row">
<div class="col-auto left-col">
Unterschrift von:
</div>
<div class="col">
@signature.PersonName
</div>
<div class="row">
<div class="col-auto left-col">
Geleistet am:
</div>
<div class="row">
<div class="col-auto left-col">
Geleistet am:
</div>
<div class="col">
@signature.InsTsStr
</div>
<div class="col">
@signature.InsTsStr
</div>
<div class="row">
<div class="col-auto left-col">
Geleistet für:
</div>
<div class="col">
@blubb
</div>
</div>
<div class="row">
<div class="col-auto left-col">
Geleistet für:
</div>
<div class="col">
@blubb
</div>
</div>
</div>
</div>
}
</div>
</div>
}
</div>
<div class="row mt-3 signingContent">
<div class="col">

View File

@@ -349,7 +349,7 @@
}
}
@if(AbstractModel.IsAllowedToSeeBills)
@if(AbstractModel.HasRightToViewQuittierungsbelege)
{
using(Html.BeginForm("RedirectToReportView", "Main", FormMethod.Post))
{

View File

@@ -25,13 +25,6 @@
<add namespace="DevExpress.Web" />
<add namespace="DevExpress.Web.Mvc" />
<add namespace="DevExpress.Web.Mvc.UI" />
<!--<add namespace="DevExpress.XtraReports" />
<add namespace="DevExpress.XtraReports.UI" />
<add namespace="DevExpress.XtraReports.Web" />
<add namespace="DevExpress.XtraScheduler" />
<add namespace="DevExpress.XtraScheduler.Native" />
<add namespace="DevExpress.Web.ASPxScheduler" />-->
<!--<add namespace="DevExtreme.AspNet.Mvc" />-->
</namespaces>
</pages>
</system.web.webPages.razor>

View File

@@ -28,29 +28,30 @@
</sources>
</system.diagnostics>
<log4net debug="true">
<!--<appender name="logFile" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="logs\mobilelog.txt" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="dd.MM.yyyy" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>-->
<!--<appender name="DebugSQL" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<logger name="NHibernnate.SQL" additivity="false">
<level value="DEBUG" />
<appender-ref ref="DebugSQL" />
</logger>
<root>
<priority value="INFO" />
<appender-ref ref="DebugSQL" />
</root>-->
<appender name="logFile" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="logs\mobilelog.txt" />
<param name="LogFileName" value="logs\mobilelog.txt" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="dd.MM.yyyy" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="DebugSQL" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<logger name="NHibernnate.SQL" additivity="false">
<level value="DEBUG" />
<appender-ref ref="DebugSQL" />
</logger>
<root>
<priority value="INFO" />
<appender-ref ref="DebugSQL" />
</root>
</log4net>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
@@ -68,8 +69,6 @@
<add type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" name="ASPxUploadProgressHandler" preCondition="integratedMode" />
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRD.axd" name="ASPxReportDesignerHandlerModule" preCondition="integratedMode" />
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRDV.axd" name="ASPxWebDocumentViewerHandlerModule" preCondition="integratedMode" />
<!--<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode" />-->
<!--<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXQB.axd" name="ASPxQueryBuilderDesignerHandlerModule" preCondition="integratedMode" />-->
</handlers>
</system.webServer>
<system.serviceModel>
@@ -214,22 +213,12 @@
<add namespace="DevExpress.Web" />
<add namespace="DevExpress.Web.Mvc" />
<add namespace="DevExpress.Web.Mvc.UI" />
<!--<add namespace="DevExpress.XtraReports" />
<add namespace="DevExpress.XtraReports.UI" />
<add namespace="DevExpress.XtraReports.Web" />
<add namespace="DevExpress.XtraScheduler" />
<add namespace="DevExpress.XtraScheduler.Native" />
<add namespace="DevExpress.Web.ASPxScheduler" />-->
</namespaces>
</pages>
<httpHandlers>
<add type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" validate="false" />
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRD.axd" validate="false" />
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DXXRDV.axd" validate="false" />
<!--<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
verb="GET,POST" path="DXQB.axd" validate="false" />
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
verb="GET" path="DX.ashx" validate="false" />-->
</httpHandlers>
<httpModules>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
@@ -286,16 +275,10 @@
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
</dependentAssembly>
<!-- ToDo: Am 12.05.2023 DevExtreme.AspNet.Data und DevExtreme.AspNet.Mvc aus den References gelöscht
<dependentAssembly>
<assemblyIdentity name="DevExtreme.AspNet.Data" publicKeyToken="982f5dab1439d0f7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.8.2.0" newVersion="2.8.2.0" />
</dependentAssembly>-->
</assemblyBinding>
</runtime>
<devExpress>
<compression enableHtmlCompression="false" enableCallbackCompression="true" enableResourceCompression="true" enableResourceMerging="true" />
<!--von themes: styleSheetTheme="" theme="DevEx" customThemeAssemblies="" -->
<themes enableThemesAssembly="true" />
<errors callbackErrorRedirectUrl="" />
<settings rightToLeft="false" doctypeMode="Html5" ieCompatibilityVersion="edge" />

View File

@@ -1,9 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Bezier = void 0;
var point_1 = require("./point");
var Bezier = /** @class */ (function () {
function Bezier(startPoint, control2, control1, endPoint, startWidth, endWidth) {
import { Point } from './point';
export class Bezier {
constructor(startPoint, control2, control1, endPoint, startWidth, endWidth) {
this.startPoint = startPoint;
this.control2 = control2;
this.control1 = control1;
@@ -11,60 +8,58 @@ var Bezier = /** @class */ (function () {
this.startWidth = startWidth;
this.endWidth = endWidth;
}
Bezier.fromPoints = function (points, widths) {
var c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;
var c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;
static fromPoints(points, widths) {
const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;
const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;
return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);
};
Bezier.calculateControlPoints = function (s1, s2, s3) {
var dx1 = s1.x - s2.x;
var dy1 = s1.y - s2.y;
var dx2 = s2.x - s3.x;
var dy2 = s2.y - s3.y;
var m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };
var m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };
var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);
var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);
var dxm = m1.x - m2.x;
var dym = m1.y - m2.y;
var k = l2 / (l1 + l2);
var cm = { x: m2.x + dxm * k, y: m2.y + dym * k };
var tx = s2.x - cm.x;
var ty = s2.y - cm.y;
}
static calculateControlPoints(s1, s2, s3) {
const dx1 = s1.x - s2.x;
const dy1 = s1.y - s2.y;
const dx2 = s2.x - s3.x;
const dy2 = s2.y - s3.y;
const m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };
const m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };
const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);
const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);
const dxm = m1.x - m2.x;
const dym = m1.y - m2.y;
const k = l2 / (l1 + l2);
const cm = { x: m2.x + dxm * k, y: m2.y + dym * k };
const tx = s2.x - cm.x;
const ty = s2.y - cm.y;
return {
c1: new point_1.Point(m1.x + tx, m1.y + ty),
c2: new point_1.Point(m2.x + tx, m2.y + ty),
c1: new Point(m1.x + tx, m1.y + ty),
c2: new Point(m2.x + tx, m2.y + ty),
};
};
}
// Returns approximated length. Code taken from https://www.lemoda.net/maths/bezier-length/index.html.
Bezier.prototype.length = function () {
var steps = 10;
var length = 0;
var px;
var py;
for (var i = 0; i <= steps; i += 1) {
var t = i / steps;
var cx = this.point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);
var cy = this.point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);
length() {
const steps = 10;
let length = 0;
let px;
let py;
for (let i = 0; i <= steps; i += 1) {
const t = i / steps;
const cx = this.point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);
const cy = this.point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);
if (i > 0) {
var xdiff = cx - px;
var ydiff = cy - py;
const xdiff = cx - px;
const ydiff = cy - py;
length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);
}
px = cx;
py = cy;
}
return length;
};
}
// Calculate parametric value of x or y given t and the four point coordinates of a cubic bezier curve.
Bezier.prototype.point = function (t, start, c1, c2, end) {
point(t, start, c1, c2, end) {
// prettier-ignore
return (start * (1.0 - t) * (1.0 - t) * (1.0 - t))
+ (3.0 * c1 * (1.0 - t) * (1.0 - t) * t)
+ (3.0 * c2 * (1.0 - t) * t * t)
+ (end * t * t * t);
};
return Bezier;
}());
exports.Bezier = Bezier;
}
}
//# sourceMappingURL=bezier.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"bezier.js","sourceRoot":"","sources":["bezier.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"bezier.js","sourceRoot":"","sources":["bezier.ts"],"names":[],"mappings":"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"}

View File

@@ -1,31 +1,26 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Point = void 0;
var Point = /** @class */ (function () {
function Point(x, y, pressure, time) {
export class Point {
constructor(x, y, pressure, time) {
if (isNaN(x) || isNaN(y)) {
throw new Error("Point is invalid: (" + x + ", " + y + ")");
throw new Error(`Point is invalid: (${x}, ${y})`);
}
this.x = +x;
this.y = +y;
this.pressure = pressure || 0;
this.time = time || Date.now();
}
Point.prototype.distanceTo = function (start) {
distanceTo(start) {
return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));
};
Point.prototype.equals = function (other) {
}
equals(other) {
return (this.x === other.x &&
this.y === other.y &&
this.pressure === other.pressure &&
this.time === other.time);
};
Point.prototype.velocityFrom = function (start) {
}
velocityFrom(start) {
return this.time !== start.time
? this.distanceTo(start) / (this.time - start.time)
: 0;
};
return Point;
}());
exports.Point = Point;
}
}
//# sourceMappingURL=point.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"point.js","sourceRoot":"","sources":["point.ts"],"names":[],"mappings":";;;AAQA;IAME,eAAY,CAAS,EAAE,CAAS,EAAE,QAAiB,EAAE,IAAa;QAChE,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,wBAAsB,CAAC,UAAK,CAAC,MAAG,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAEM,0BAAU,GAAjB,UAAkB,KAAiB;QACjC,OAAO,IAAI,CAAC,IAAI,CACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IAEM,sBAAM,GAAb,UAAc,KAAiB;QAC7B,OAAO,CACL,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;YAChC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CACzB,CAAC;IACJ,CAAC;IAEM,4BAAY,GAAnB,UAAoB,KAAiB;QACnC,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAC7B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACnD,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IACH,YAAC;AAAD,CAAC,AApCD,IAoCC;AApCY,sBAAK"}
{"version":3,"file":"point.js","sourceRoot":"","sources":["point.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,KAAK;IAMhB,YAAY,CAAS,EAAE,CAAS,EAAE,QAAiB,EAAE,IAAa;QAChE,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAEM,UAAU,CAAC,KAAiB;QACjC,OAAO,IAAI,CAAC,IAAI,CACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,KAAiB;QAC7B,OAAO,CACL,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;YAChC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CACzB,CAAC;IACJ,CAAC;IAEM,YAAY,CAAC,KAAiB;QACnC,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAC7B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACnD,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;CACF"}

View File

@@ -1,9 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SignatureEventTarget = void 0;
var SignatureEventTarget = /** @class */ (function () {
export class SignatureEventTarget {
/* tslint:enable: variable-name */
function SignatureEventTarget() {
constructor() {
try {
this._et = new EventTarget();
}
@@ -13,16 +10,14 @@ var SignatureEventTarget = /** @class */ (function () {
this._et = document;
}
}
SignatureEventTarget.prototype.addEventListener = function (type, listener, options) {
addEventListener(type, listener, options) {
this._et.addEventListener(type, listener, options);
};
SignatureEventTarget.prototype.dispatchEvent = function (event) {
}
dispatchEvent(event) {
return this._et.dispatchEvent(event);
};
SignatureEventTarget.prototype.removeEventListener = function (type, callback, options) {
}
removeEventListener(type, callback, options) {
this._et.removeEventListener(type, callback, options);
};
return SignatureEventTarget;
}());
exports.SignatureEventTarget = SignatureEventTarget;
}
}
//# sourceMappingURL=signature_event_target.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"signature_event_target.js","sourceRoot":"","sources":["signature_event_target.ts"],"names":[],"mappings":";;;AAAA;IAGE,kCAAkC;IAElC;QACE,IAAI;YACF,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;SAC9B;QAAC,OAAO,KAAK,EAAE;YACd,6DAA6D;YAC7D,mEAAmE;YACnE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;SACrB;IACH,CAAC;IAED,+CAAgB,GAAhB,UACE,IAAY,EACZ,QAAmD,EACnD,OAA2C;QAE3C,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,4CAAa,GAAb,UAAc,KAAY;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,kDAAmB,GAAnB,UACE,IAAY,EACZ,QAAmD,EACnD,OAAwC;QAExC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IACH,2BAAC;AAAD,CAAC,AAlCD,IAkCC;AAlCY,oDAAoB"}
{"version":3,"file":"signature_event_target.js","sourceRoot":"","sources":["signature_event_target.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;IAG/B,kCAAkC;IAElC;QACE,IAAI;YACF,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;SAC9B;QAAC,OAAO,KAAK,EAAE;YACd,6DAA6D;YAC7D,mEAAmE;YACnE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;SACrB;IACH,CAAC;IAED,gBAAgB,CACd,IAAY,EACZ,QAAmD,EACnD,OAA2C;QAE3C,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,aAAa,CAAC,KAAY;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,mBAAmB,CACjB,IAAY,EACZ,QAAmD,EACnD,OAAwC;QAExC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;CACF"}

View File

@@ -1,4 +1,3 @@
"use strict";
/**
* The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from:
* http://corner.squareup.com/2012/07/smoother-signatures.html
@@ -9,133 +8,103 @@
* Algorithm for approximated length of a Bézier curve is taken from:
* http://www.lemoda.net/maths/bezier-length/index.html
*/
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var bezier_1 = require("./bezier");
var point_1 = require("./point");
var signature_event_target_1 = require("./signature_event_target");
var throttle_1 = require("./throttle");
var SignaturePad = /** @class */ (function (_super) {
__extends(SignaturePad, _super);
import { Bezier } from './bezier';
import { Point } from './point';
import { SignatureEventTarget } from './signature_event_target';
import { throttle } from './throttle';
export default class SignaturePad extends SignatureEventTarget {
/* tslint:enable: variable-name */
function SignaturePad(canvas, options) {
if (options === void 0) { options = {}; }
var _this = _super.call(this) || this;
_this.canvas = canvas;
_this._drawningStroke = false;
_this._isEmpty = true;
_this._lastPoints = []; // Stores up to 4 most recent points; used to generate a new curve
_this._data = []; // Stores all points in groups (one group per line or dot)
_this._lastVelocity = 0;
_this._lastWidth = 0;
constructor(canvas, options = {}) {
super();
this.canvas = canvas;
this._drawningStroke = false;
this._isEmpty = true;
this._lastPoints = []; // Stores up to 4 most recent points; used to generate a new curve
this._data = []; // Stores all points in groups (one group per line or dot)
this._lastVelocity = 0;
this._lastWidth = 0;
// Event handlers
_this._handleMouseDown = function (event) {
this._handleMouseDown = (event) => {
if (event.buttons === 1) {
_this._drawningStroke = true;
_this._strokeBegin(event);
this._drawningStroke = true;
this._strokeBegin(event);
}
};
_this._handleMouseMove = function (event) {
if (_this._drawningStroke) {
_this._strokeMoveUpdate(event);
this._handleMouseMove = (event) => {
if (this._drawningStroke) {
this._strokeMoveUpdate(event);
}
};
_this._handleMouseUp = function (event) {
if (event.buttons === 1 && _this._drawningStroke) {
_this._drawningStroke = false;
_this._strokeEnd(event);
this._handleMouseUp = (event) => {
if (event.buttons === 1 && this._drawningStroke) {
this._drawningStroke = false;
this._strokeEnd(event);
}
};
_this._handleTouchStart = function (event) {
this._handleTouchStart = (event) => {
// Prevent scrolling.
if (event.cancelable) {
event.preventDefault();
}
if (event.targetTouches.length === 1) {
var touch = event.changedTouches[0];
_this._strokeBegin(touch);
const touch = event.changedTouches[0];
this._strokeBegin(touch);
}
};
_this._handleTouchMove = function (event) {
this._handleTouchMove = (event) => {
// Prevent scrolling.
if (event.cancelable) {
event.preventDefault();
}
var touch = event.targetTouches[0];
_this._strokeMoveUpdate(touch);
const touch = event.targetTouches[0];
this._strokeMoveUpdate(touch);
};
_this._handleTouchEnd = function (event) {
var wasCanvasTouched = event.target === _this.canvas;
this._handleTouchEnd = (event) => {
const wasCanvasTouched = event.target === this.canvas;
if (wasCanvasTouched) {
if (event.cancelable) {
event.preventDefault();
}
var touch = event.changedTouches[0];
_this._strokeEnd(touch);
const touch = event.changedTouches[0];
this._strokeEnd(touch);
}
};
_this._handlePointerStart = function (event) {
_this._drawningStroke = true;
this._handlePointerStart = (event) => {
this._drawningStroke = true;
event.preventDefault();
_this._strokeBegin(event);
this._strokeBegin(event);
};
_this._handlePointerMove = function (event) {
if (_this._drawningStroke) {
this._handlePointerMove = (event) => {
if (this._drawningStroke) {
event.preventDefault();
_this._strokeMoveUpdate(event);
this._strokeMoveUpdate(event);
}
};
_this._handlePointerEnd = function (event) {
if (_this._drawningStroke) {
this._handlePointerEnd = (event) => {
if (this._drawningStroke) {
event.preventDefault();
_this._drawningStroke = false;
_this._strokeEnd(event);
this._drawningStroke = false;
this._strokeEnd(event);
}
};
_this.velocityFilterWeight = options.velocityFilterWeight || 0.7;
_this.minWidth = options.minWidth || 0.5;
_this.maxWidth = options.maxWidth || 2.5;
_this.throttle = ('throttle' in options ? options.throttle : 16); // in milisecondss
_this.minDistance = ('minDistance' in options ? options.minDistance : 5); // in pixels
_this.dotSize = options.dotSize || 0;
_this.penColor = options.penColor || 'black';
_this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';
_this._strokeMoveUpdate = _this.throttle
? throttle_1.throttle(SignaturePad.prototype._strokeUpdate, _this.throttle)
this.velocityFilterWeight = options.velocityFilterWeight || 0.7;
this.minWidth = options.minWidth || 0.5;
this.maxWidth = options.maxWidth || 2.5;
this.throttle = ('throttle' in options ? options.throttle : 16); // in milisecondss
this.minDistance = ('minDistance' in options ? options.minDistance : 5); // in pixels
this.dotSize = options.dotSize || 0;
this.penColor = options.penColor || 'black';
this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';
this._strokeMoveUpdate = this.throttle
? throttle(SignaturePad.prototype._strokeUpdate, this.throttle)
: SignaturePad.prototype._strokeUpdate;
_this._ctx = canvas.getContext('2d');
_this.clear();
this._ctx = canvas.getContext('2d');
this.clear();
// Enable mouse and touch event handlers
_this.on();
return _this;
this.on();
}
SignaturePad.prototype.clear = function () {
var _a = this, ctx = _a._ctx, canvas = _a.canvas;
clear() {
const { _ctx: ctx, canvas } = this;
// Clear canvas using background color
ctx.fillStyle = this.backgroundColor;
ctx.clearRect(0, 0, canvas.width, canvas.height);
@@ -143,51 +112,48 @@ var SignaturePad = /** @class */ (function (_super) {
this._data = [];
this._reset(this._getPointGroupOptions());
this._isEmpty = true;
};
SignaturePad.prototype.fromDataURL = function (dataUrl, options) {
var _this = this;
if (options === void 0) { options = {}; }
return new Promise(function (resolve, reject) {
var image = new Image();
var ratio = options.ratio || window.devicePixelRatio || 1;
var width = options.width || _this.canvas.width / ratio;
var height = options.height || _this.canvas.height / ratio;
var xOffset = options.xOffset || 0;
var yOffset = options.yOffset || 0;
_this._reset(_this._getPointGroupOptions());
image.onload = function () {
_this._ctx.drawImage(image, xOffset, yOffset, width, height);
}
fromDataURL(dataUrl, options = {}) {
return new Promise((resolve, reject) => {
const image = new Image();
const ratio = options.ratio || window.devicePixelRatio || 1;
const width = options.width || this.canvas.width / ratio;
const height = options.height || this.canvas.height / ratio;
const xOffset = options.xOffset || 0;
const yOffset = options.yOffset || 0;
this._reset(this._getPointGroupOptions());
image.onload = () => {
this._ctx.drawImage(image, xOffset, yOffset, width, height);
resolve();
};
image.onerror = function (error) {
image.onerror = (error) => {
reject(error);
};
image.crossOrigin = 'anonymous';
image.src = dataUrl;
_this._isEmpty = false;
this._isEmpty = false;
});
};
SignaturePad.prototype.toDataURL = function (type, encoderOptions) {
if (type === void 0) { type = 'image/png'; }
}
toDataURL(type = 'image/png', encoderOptions) {
switch (type) {
case 'image/svg+xml':
if (typeof encoderOptions !== 'object') {
encoderOptions = undefined;
}
return "data:image/svg+xml;base64," + btoa(this.toSVG(encoderOptions));
return `data:image/svg+xml;base64,${btoa(this.toSVG(encoderOptions))}`;
default:
if (typeof encoderOptions !== 'number') {
encoderOptions = undefined;
}
return this.canvas.toDataURL(type, encoderOptions);
}
};
SignaturePad.prototype.on = function () {
}
on() {
// Disable panning/zooming when touching canvas element
this.canvas.style.touchAction = 'none';
this.canvas.style.msTouchAction = 'none';
this.canvas.style.userSelect = 'none';
var isIOS = /Macintosh/.test(navigator.userAgent) && 'ontouchstart' in document;
const isIOS = /Macintosh/.test(navigator.userAgent) && 'ontouchstart' in document;
// The "Scribble" feature of iOS intercepts point events. So that we can lose some of them when tapping rapidly.
// Use touch events for iOS platforms to prevent it. See https://developer.apple.com/forums/thread/664108 for more information.
if (window.PointerEvent && !isIOS) {
@@ -199,8 +165,8 @@ var SignaturePad = /** @class */ (function (_super) {
this._handleTouchEvents();
}
}
};
SignaturePad.prototype.off = function () {
}
off() {
// Enable panning/zooming when touching canvas element
this.canvas.style.touchAction = 'auto';
this.canvas.style.msTouchAction = 'auto';
@@ -214,22 +180,21 @@ var SignaturePad = /** @class */ (function (_super) {
this.canvas.removeEventListener('touchstart', this._handleTouchStart);
this.canvas.removeEventListener('touchmove', this._handleTouchMove);
this.canvas.removeEventListener('touchend', this._handleTouchEnd);
};
SignaturePad.prototype.isEmpty = function () {
}
isEmpty() {
return this._isEmpty;
};
SignaturePad.prototype.fromData = function (pointGroups, _a) {
var _b = _a === void 0 ? {} : _a, _c = _b.clear, clear = _c === void 0 ? true : _c;
}
fromData(pointGroups, { clear = true } = {}) {
if (clear) {
this.clear();
}
this._fromData(pointGroups, this._drawCurve.bind(this), this._drawDot.bind(this));
this._data = this._data.concat(pointGroups);
};
SignaturePad.prototype.toData = function () {
}
toData() {
return this._data;
};
SignaturePad.prototype._getPointGroupOptions = function (group) {
}
_getPointGroupOptions(group) {
return {
penColor: group && 'penColor' in group ? group.penColor : this.penColor,
dotSize: group && 'dotSize' in group ? group.dotSize : this.dotSize,
@@ -239,17 +204,17 @@ var SignaturePad = /** @class */ (function (_super) {
? group.velocityFilterWeight
: this.velocityFilterWeight,
};
};
}
// Private methods
SignaturePad.prototype._strokeBegin = function (event) {
_strokeBegin(event) {
this.dispatchEvent(new CustomEvent('beginStroke', { detail: event }));
var pointGroupOptions = this._getPointGroupOptions();
var newPointGroup = __assign(__assign({}, pointGroupOptions), { points: [] });
const pointGroupOptions = this._getPointGroupOptions();
const newPointGroup = Object.assign(Object.assign({}, pointGroupOptions), { points: [] });
this._data.push(newPointGroup);
this._reset(pointGroupOptions);
this._strokeUpdate(event);
};
SignaturePad.prototype._strokeUpdate = function (event) {
}
_strokeUpdate(event) {
if (this._data.length === 0) {
// This can happen if clear() was called while a signature is still in progress,
// or if there is a race condition between start/update events.
@@ -257,24 +222,24 @@ var SignaturePad = /** @class */ (function (_super) {
return;
}
this.dispatchEvent(new CustomEvent('beforeUpdateStroke', { detail: event }));
var x = event.clientX;
var y = event.clientY;
var pressure = event.pressure !== undefined
const x = event.clientX;
const y = event.clientY;
const pressure = event.pressure !== undefined
? event.pressure
: event.force !== undefined
? event.force
: 0;
var point = this._createPoint(x, y, pressure);
var lastPointGroup = this._data[this._data.length - 1];
var lastPoints = lastPointGroup.points;
var lastPoint = lastPoints.length > 0 && lastPoints[lastPoints.length - 1];
var isLastPointTooClose = lastPoint
const point = this._createPoint(x, y, pressure);
const lastPointGroup = this._data[this._data.length - 1];
const lastPoints = lastPointGroup.points;
const lastPoint = lastPoints.length > 0 && lastPoints[lastPoints.length - 1];
const isLastPointTooClose = lastPoint
? point.distanceTo(lastPoint) <= this.minDistance
: false;
var pointGroupOptions = this._getPointGroupOptions(lastPointGroup);
const pointGroupOptions = this._getPointGroupOptions(lastPointGroup);
// Skip this point if it's too close to the previous one
if (!lastPoint || !(lastPoint && isLastPointTooClose)) {
var curve = this._addPoint(point, pointGroupOptions);
const curve = this._addPoint(point, pointGroupOptions);
if (!lastPoint) {
this._drawDot(point, pointGroupOptions);
}
@@ -289,42 +254,42 @@ var SignaturePad = /** @class */ (function (_super) {
});
}
this.dispatchEvent(new CustomEvent('afterUpdateStroke', { detail: event }));
};
SignaturePad.prototype._strokeEnd = function (event) {
}
_strokeEnd(event) {
this._strokeUpdate(event);
this.dispatchEvent(new CustomEvent('endStroke', { detail: event }));
};
SignaturePad.prototype._handlePointerEvents = function () {
}
_handlePointerEvents() {
this._drawningStroke = false;
this.canvas.addEventListener('pointerdown', this._handlePointerStart);
this.canvas.addEventListener('pointermove', this._handlePointerMove);
this.canvas.ownerDocument.addEventListener('pointerup', this._handlePointerEnd);
};
SignaturePad.prototype._handleMouseEvents = function () {
}
_handleMouseEvents() {
this._drawningStroke = false;
this.canvas.addEventListener('mousedown', this._handleMouseDown);
this.canvas.addEventListener('mousemove', this._handleMouseMove);
this.canvas.ownerDocument.addEventListener('mouseup', this._handleMouseUp);
};
SignaturePad.prototype._handleTouchEvents = function () {
}
_handleTouchEvents() {
this.canvas.addEventListener('touchstart', this._handleTouchStart);
this.canvas.addEventListener('touchmove', this._handleTouchMove);
this.canvas.addEventListener('touchend', this._handleTouchEnd);
};
}
// Called when a new line is started
SignaturePad.prototype._reset = function (options) {
_reset(options) {
this._lastPoints = [];
this._lastVelocity = 0;
this._lastWidth = (options.minWidth + options.maxWidth) / 2;
this._ctx.fillStyle = options.penColor;
};
SignaturePad.prototype._createPoint = function (x, y, pressure) {
var rect = this.canvas.getBoundingClientRect();
return new point_1.Point(x - rect.left, y - rect.top, pressure, new Date().getTime());
};
}
_createPoint(x, y, pressure) {
const rect = this.canvas.getBoundingClientRect();
return new Point(x - rect.left, y - rect.top, pressure, new Date().getTime());
}
// Add point to _lastPoints array and generate a new curve if there are enough points (i.e. 3)
SignaturePad.prototype._addPoint = function (point, options) {
var _lastPoints = this._lastPoints;
_addPoint(point, options) {
const { _lastPoints } = this;
_lastPoints.push(point);
if (_lastPoints.length > 2) {
// To reduce the initial lag make it work with 3 points
@@ -333,68 +298,68 @@ var SignaturePad = /** @class */ (function (_super) {
_lastPoints.unshift(_lastPoints[0]);
}
// _points array will always have 4 points here.
var widths = this._calculateCurveWidths(_lastPoints[1], _lastPoints[2], options);
var curve = bezier_1.Bezier.fromPoints(_lastPoints, widths);
const widths = this._calculateCurveWidths(_lastPoints[1], _lastPoints[2], options);
const curve = Bezier.fromPoints(_lastPoints, widths);
// Remove the first element from the list, so that there are no more than 4 points at any time.
_lastPoints.shift();
return curve;
}
return null;
};
SignaturePad.prototype._calculateCurveWidths = function (startPoint, endPoint, options) {
var velocity = options.velocityFilterWeight * endPoint.velocityFrom(startPoint) +
}
_calculateCurveWidths(startPoint, endPoint, options) {
const velocity = options.velocityFilterWeight * endPoint.velocityFrom(startPoint) +
(1 - options.velocityFilterWeight) * this._lastVelocity;
var newWidth = this._strokeWidth(velocity, options);
var widths = {
const newWidth = this._strokeWidth(velocity, options);
const widths = {
end: newWidth,
start: this._lastWidth,
};
this._lastVelocity = velocity;
this._lastWidth = newWidth;
return widths;
};
SignaturePad.prototype._strokeWidth = function (velocity, options) {
}
_strokeWidth(velocity, options) {
return Math.max(options.maxWidth / (velocity + 1), options.minWidth);
};
SignaturePad.prototype._drawCurveSegment = function (x, y, width) {
var ctx = this._ctx;
}
_drawCurveSegment(x, y, width) {
const ctx = this._ctx;
ctx.moveTo(x, y);
ctx.arc(x, y, width, 0, 2 * Math.PI, false);
this._isEmpty = false;
};
SignaturePad.prototype._drawCurve = function (curve, options) {
var ctx = this._ctx;
var widthDelta = curve.endWidth - curve.startWidth;
}
_drawCurve(curve, options) {
const ctx = this._ctx;
const widthDelta = curve.endWidth - curve.startWidth;
// '2' is just an arbitrary number here. If only length is used, then
// there are gaps between curve segments :/
var drawSteps = Math.ceil(curve.length()) * 2;
const drawSteps = Math.ceil(curve.length()) * 2;
ctx.beginPath();
ctx.fillStyle = options.penColor;
for (var i = 0; i < drawSteps; i += 1) {
for (let i = 0; i < drawSteps; i += 1) {
// Calculate the Bezier (x, y) coordinate for this step.
var t = i / drawSteps;
var tt = t * t;
var ttt = tt * t;
var u = 1 - t;
var uu = u * u;
var uuu = uu * u;
var x = uuu * curve.startPoint.x;
const t = i / drawSteps;
const tt = t * t;
const ttt = tt * t;
const u = 1 - t;
const uu = u * u;
const uuu = uu * u;
let x = uuu * curve.startPoint.x;
x += 3 * uu * t * curve.control1.x;
x += 3 * u * tt * curve.control2.x;
x += ttt * curve.endPoint.x;
var y = uuu * curve.startPoint.y;
let y = uuu * curve.startPoint.y;
y += 3 * uu * t * curve.control1.y;
y += 3 * u * tt * curve.control2.y;
y += ttt * curve.endPoint.y;
var width = Math.min(curve.startWidth + ttt * widthDelta, options.maxWidth);
const width = Math.min(curve.startWidth + ttt * widthDelta, options.maxWidth);
this._drawCurveSegment(x, y, width);
}
ctx.closePath();
ctx.fill();
};
SignaturePad.prototype._drawDot = function (point, options) {
var ctx = this._ctx;
var width = options.dotSize > 0
}
_drawDot(point, options) {
const ctx = this._ctx;
const width = options.dotSize > 0
? options.dotSize
: (options.minWidth + options.maxWidth) / 2;
ctx.beginPath();
@@ -402,20 +367,19 @@ var SignaturePad = /** @class */ (function (_super) {
ctx.closePath();
ctx.fillStyle = options.penColor;
ctx.fill();
};
SignaturePad.prototype._fromData = function (pointGroups, drawCurve, drawDot) {
for (var _i = 0, pointGroups_1 = pointGroups; _i < pointGroups_1.length; _i++) {
var group = pointGroups_1[_i];
var points = group.points;
var pointGroupOptions = this._getPointGroupOptions(group);
}
_fromData(pointGroups, drawCurve, drawDot) {
for (const group of pointGroups) {
const { points } = group;
const pointGroupOptions = this._getPointGroupOptions(group);
if (points.length > 1) {
for (var j = 0; j < points.length; j += 1) {
var basicPoint = points[j];
var point = new point_1.Point(basicPoint.x, basicPoint.y, basicPoint.pressure, basicPoint.time);
for (let j = 0; j < points.length; j += 1) {
const basicPoint = points[j];
const point = new Point(basicPoint.x, basicPoint.y, basicPoint.pressure, basicPoint.time);
if (j === 0) {
this._reset(pointGroupOptions);
}
var curve = this._addPoint(point, pointGroupOptions);
const curve = this._addPoint(point, pointGroupOptions);
if (curve) {
drawCurve(curve, pointGroupOptions);
}
@@ -426,31 +390,29 @@ var SignaturePad = /** @class */ (function (_super) {
drawDot(points[0], pointGroupOptions);
}
}
};
SignaturePad.prototype.toSVG = function (_a) {
var _b = _a === void 0 ? {} : _a, _c = _b.includeBackgroundColor, includeBackgroundColor = _c === void 0 ? false : _c;
var pointGroups = this._data;
var ratio = Math.max(window.devicePixelRatio || 1, 1);
var minX = 0;
var minY = 0;
var maxX = this.canvas.width / ratio;
var maxY = this.canvas.height / ratio;
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
}
toSVG({ includeBackgroundColor = false } = {}) {
const pointGroups = this._data;
const ratio = Math.max(window.devicePixelRatio || 1, 1);
const minX = 0;
const minY = 0;
const maxX = this.canvas.width / ratio;
const maxY = this.canvas.height / ratio;
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
svg.setAttribute('viewBox', minX + " " + minY + " " + maxX + " " + maxY);
svg.setAttribute('viewBox', `${minX} ${minY} ${maxX} ${maxY}`);
svg.setAttribute('width', maxX.toString());
svg.setAttribute('height', maxY.toString());
if (includeBackgroundColor && this.backgroundColor) {
var rect = document.createElement('rect');
const rect = document.createElement('rect');
rect.setAttribute('width', '100%');
rect.setAttribute('height', '100%');
rect.setAttribute('fill', this.backgroundColor);
svg.appendChild(rect);
}
this._fromData(pointGroups, function (curve, _a) {
var penColor = _a.penColor;
var path = document.createElement('path');
this._fromData(pointGroups, (curve, { penColor }) => {
const path = document.createElement('path');
// Need to check curve for NaN values, these pop up when drawing
// lines on the canvas that are not continuous. E.g. Sharp corners
// or stopping mid-stroke and than continuing without lifting mouse.
@@ -459,10 +421,10 @@ var SignaturePad = /** @class */ (function (_super) {
!isNaN(curve.control1.y) &&
!isNaN(curve.control2.x) &&
!isNaN(curve.control2.y)) {
var attr = "M " + curve.startPoint.x.toFixed(3) + "," + curve.startPoint.y.toFixed(3) + " " +
("C " + curve.control1.x.toFixed(3) + "," + curve.control1.y.toFixed(3) + " ") +
(curve.control2.x.toFixed(3) + "," + curve.control2.y.toFixed(3) + " ") +
(curve.endPoint.x.toFixed(3) + "," + curve.endPoint.y.toFixed(3));
const attr = `M ${curve.startPoint.x.toFixed(3)},${curve.startPoint.y.toFixed(3)} ` +
`C ${curve.control1.x.toFixed(3)},${curve.control1.y.toFixed(3)} ` +
`${curve.control2.x.toFixed(3)},${curve.control2.y.toFixed(3)} ` +
`${curve.endPoint.x.toFixed(3)},${curve.endPoint.y.toFixed(3)}`;
path.setAttribute('d', attr);
path.setAttribute('stroke-width', (curve.endWidth * 2.25).toFixed(3));
path.setAttribute('stroke', penColor);
@@ -471,10 +433,9 @@ var SignaturePad = /** @class */ (function (_super) {
svg.appendChild(path);
}
/* eslint-enable no-restricted-globals */
}, function (point, _a) {
var penColor = _a.penColor, dotSize = _a.dotSize, minWidth = _a.minWidth, maxWidth = _a.maxWidth;
var circle = document.createElement('circle');
var size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;
}, (point, { penColor, dotSize, minWidth, maxWidth }) => {
const circle = document.createElement('circle');
const size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;
circle.setAttribute('r', size.toString());
circle.setAttribute('cx', point.x.toString());
circle.setAttribute('cy', point.y.toString());
@@ -482,8 +443,6 @@ var SignaturePad = /** @class */ (function (_super) {
svg.appendChild(circle);
});
return svg.outerHTML;
};
return SignaturePad;
}(signature_event_target_1.SignatureEventTarget));
exports.default = SignaturePad;
}
}
//# sourceMappingURL=signature_pad.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +1,12 @@
"use strict";
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias */
// Slightly simplified version of http://stackoverflow.com/a/27078401/815507
Object.defineProperty(exports, "__esModule", { value: true });
exports.throttle = void 0;
function throttle(fn, wait) {
if (wait === void 0) { wait = 250; }
var previous = 0;
var timeout = null;
var result;
var storedContext;
var storedArgs;
var later = function () {
export function throttle(fn, wait = 250) {
let previous = 0;
let timeout = null;
let result;
let storedContext;
let storedArgs;
const later = () => {
previous = Date.now();
timeout = null;
result = fn.apply(storedContext, storedArgs);
@@ -19,13 +15,9 @@ function throttle(fn, wait) {
storedArgs = [];
}
};
return function wrapper() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var now = Date.now();
var remaining = wait - (now - previous);
return function wrapper(...args) {
const now = Date.now();
const remaining = wait - (now - previous);
storedContext = this;
storedArgs = args;
if (remaining <= 0 || remaining > wait) {
@@ -46,5 +38,4 @@ function throttle(fn, wait) {
return result;
};
}
exports.throttle = throttle;
//# sourceMappingURL=throttle.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"throttle.js","sourceRoot":"","sources":["throttle.ts"],"names":[],"mappings":";AAAA,yFAAyF;AACzF,4EAA4E;;;AAE5E,SAAgB,QAAQ,CACtB,EAA2B,EAC3B,IAAU;IAAV,qBAAA,EAAA,UAAU;IAEV,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,MAAW,CAAC;IAChB,IAAI,aAAkB,CAAC;IACvB,IAAI,UAAiB,CAAC;IAEtB,IAAM,KAAK,GAAG;QACZ,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE;YACZ,aAAa,GAAG,IAAI,CAAC;YACrB,UAAU,GAAG,EAAE,CAAC;SACjB;IACH,CAAC,CAAC;IAEF,OAAO,SAAS,OAAO;QAAY,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC/C,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;QAE1C,aAAa,GAAG,IAAI,CAAC;QACrB,UAAU,GAAG,IAAI,CAAC;QAElB,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,IAAI,EAAE;YACtC,IAAI,OAAO,EAAE;gBACX,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC;aAChB;YAED,QAAQ,GAAG,GAAG,CAAC;YACf,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAE7C,IAAI,CAAC,OAAO,EAAE;gBACZ,aAAa,GAAG,IAAI,CAAC;gBACrB,UAAU,GAAG,EAAE,CAAC;aACjB;SACF;aAAM,IAAI,CAAC,OAAO,EAAE;YACnB,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SAC/C;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AA/CD,4BA+CC"}
{"version":3,"file":"throttle.js","sourceRoot":"","sources":["throttle.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,4EAA4E;AAE5E,MAAM,UAAU,QAAQ,CACtB,EAA2B,EAC3B,IAAI,GAAG,GAAG;IAEV,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,MAAW,CAAC;IAChB,IAAI,aAAkB,CAAC;IACvB,IAAI,UAAiB,CAAC;IAEtB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE;YACZ,aAAa,GAAG,IAAI,CAAC;YACrB,UAAU,GAAG,EAAE,CAAC;SACjB;IACH,CAAC,CAAC;IAEF,OAAO,SAAS,OAAO,CAAY,GAAG,IAAW;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;QAE1C,aAAa,GAAG,IAAI,CAAC;QACrB,UAAU,GAAG,IAAI,CAAC;QAElB,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,IAAI,EAAE;YACtC,IAAI,OAAO,EAAE;gBACX,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC;aAChB;YAED,QAAQ,GAAG,GAAG,CAAC;YACf,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAE7C,IAAI,CAAC,OAAO,EAAE;gBACZ,aAAa,GAAG,IAAI,CAAC;gBACrB,UAAU,GAAG,EAAE,CAAC;aACjB;SACF;aAAM,IAAI,CAAC,OAAO,EAAE;YACnB,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SAC/C;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}

View File

@@ -4735,11 +4735,15 @@ namespace BeWo.Data.Access
public long? GetActiveMedVerListOidForCustomer(long customerOid)
{
// Gültig und MedListType = 0
return GetActiveMedListByTypeForCustomer(customerOid, false);
}
public long? GetActiveMedListByTypeForCustomer(long customerOid, bool isBedarfsmedikation)
{
var criteria = CreateCriteria<Medikamentenverordnungsliste>()
.Add(Restrictions.Eq(nameof(Medikamentenverordnungsliste.Gueltig), true))
.Add(Restrictions.Eq(nameof(Medikamentenverordnungsliste.Customer) + ".Oid", customerOid))
.Add(Restrictions.Eq(nameof(Medikamentenverordnungsliste.MedListType), false));
.Add(Restrictions.Eq(nameof(Medikamentenverordnungsliste.MedListType), isBedarfsmedikation));
var list = criteria.UniqueResult<Medikamentenverordnungsliste>();

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,28 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using DevExpress.XtraReports.UI;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
namespace DiakonieMuelheim
{
public partial class Klientenstammblatt : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<CustomerDataRO>
{
public Klientenstammblatt()
{
InitializeComponent();
}
public void SetReportDataSource(CustomerDataRO pRO)
{
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(pRO.CustomerOid);
lblBeginn.Text = String.Format("{0:dd.MM.yyyy}", customer.AssistanceBegin);
this.bindingSource1.DataSource = pRO;
}
}
}

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -1,162 +1,172 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E33BBDC7-A5E3-4646-8790-717B0B2EFED5}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DiakonieMuelheim</RootNamespace>
<AssemblyName>2279593936_Reports</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CustomReportCreator.cs" />
<Compile Include="Jahresstatistik.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Jahresstatistik.designer.cs">
<DependentUpon>Jahresstatistik.cs</DependentUpon>
</Compile>
<Compile Include="Reports\CustomReportCreator.cs" />
<Compile Include="Synodenstatistik.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Synodenstatistik.Designer.cs">
<DependentUpon>Synodenstatistik.cs</DependentUpon>
</Compile>
<Compile Include="AuswertungNotschlafstellen.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="AuswertungNotschlafstellen.Designer.cs">
<DependentUpon>AuswertungNotschlafstellen.cs</DependentUpon>
</Compile>
<Compile Include="SynodenstatistikRO.cs" />
<Compile Include="Finanzauswertung.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Finanzauswertung.designer.cs">
<DependentUpon>Finanzauswertung.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Quittierungsbeleg.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Quittierungsbeleg.Designer.cs">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
</Compile>
<Compile Include="ServiceInvoiceReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ServiceInvoiceReport.Designer.cs">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
</Compile>
<Compile Include="SettlementReport2.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport2.Designer.cs">
<DependentUpon>SettlementReport2.cs</DependentUpon>
</Compile>
<Compile Include="SettlementReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport.Designer.cs">
<DependentUpon>SettlementReport.cs</DependentUpon>
</Compile>
<Compile Include="AuswertungNotschlafstellenRO.cs" />
<Compile Include="Validation\ServiceRecordValidator.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Jahresstatistik.resx">
<DependentUpon>Jahresstatistik.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Synodenstatistik.resx">
<DependentUpon>Synodenstatistik.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="AuswertungNotschlafstellen.resx">
<DependentUpon>AuswertungNotschlafstellen.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Finanzauswertung.resx">
<DependentUpon>Finanzauswertung.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Quittierungsbeleg.resx">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="ServiceInvoiceReport.resx">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport2.resx">
<DependentUpon>SettlementReport2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport.resx">
<DependentUpon>SettlementReport.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\..\Report\Report.csproj">
<Project>{40D8B312-EA64-49E3-A31A-5E57ED4D5654}</Project>
<Name>Report</Name>
</ProjectReference>
<ProjectReference Include="..\..\Service\Service.csproj">
<Project>{094331C3-ECEE-4C89-BBFD-4C9DED89F0EF}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\..\Shared\Shared.csproj">
<Project>{2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E33BBDC7-A5E3-4646-8790-717B0B2EFED5}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DiakonieMuelheim</RootNamespace>
<AssemblyName>2279593936_Reports</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CustomerDataReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="CustomerDataReport.Designer.cs">
<DependentUpon>CustomerDataReport.cs</DependentUpon>
</Compile>
<Compile Include="CustomReportCreator.cs" />
<Compile Include="Jahresstatistik.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Jahresstatistik.designer.cs">
<DependentUpon>Jahresstatistik.cs</DependentUpon>
</Compile>
<Compile Include="Reports\CustomReportCreator.cs" />
<Compile Include="Synodenstatistik.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Synodenstatistik.Designer.cs">
<DependentUpon>Synodenstatistik.cs</DependentUpon>
</Compile>
<Compile Include="AuswertungNotschlafstellen.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="AuswertungNotschlafstellen.Designer.cs">
<DependentUpon>AuswertungNotschlafstellen.cs</DependentUpon>
</Compile>
<Compile Include="SynodenstatistikRO.cs" />
<Compile Include="Finanzauswertung.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Finanzauswertung.designer.cs">
<DependentUpon>Finanzauswertung.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Quittierungsbeleg.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Quittierungsbeleg.Designer.cs">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
</Compile>
<Compile Include="ServiceInvoiceReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ServiceInvoiceReport.Designer.cs">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
</Compile>
<Compile Include="SettlementReport2.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport2.Designer.cs">
<DependentUpon>SettlementReport2.cs</DependentUpon>
</Compile>
<Compile Include="SettlementReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport.Designer.cs">
<DependentUpon>SettlementReport.cs</DependentUpon>
</Compile>
<Compile Include="AuswertungNotschlafstellenRO.cs" />
<Compile Include="Validation\ServiceRecordValidator.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="CustomerDataReport.resx">
<DependentUpon>CustomerDataReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Jahresstatistik.resx">
<DependentUpon>Jahresstatistik.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Synodenstatistik.resx">
<DependentUpon>Synodenstatistik.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="AuswertungNotschlafstellen.resx">
<DependentUpon>AuswertungNotschlafstellen.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Finanzauswertung.resx">
<DependentUpon>Finanzauswertung.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Quittierungsbeleg.resx">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="ServiceInvoiceReport.resx">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport2.resx">
<DependentUpon>SettlementReport2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport.resx">
<DependentUpon>SettlementReport.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\..\Report\Report.csproj">
<Project>{40D8B312-EA64-49E3-A31A-5E57ED4D5654}</Project>
<Name>Report</Name>
</ProjectReference>
<ProjectReference Include="..\..\Service\Service.csproj">
<Project>{094331C3-ECEE-4C89-BBFD-4C9DED89F0EF}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\..\Shared\Shared.csproj">
<Project>{2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

File diff suppressed because it is too large Load Diff

View File

@@ -1,195 +1,195 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>21, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="xrPictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
3vqt4Bqu4jqu5Fqu5nqu6JquNhEQADs=
</value>
</data>
<data name="xrRichText2.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAGwAYQBuAGcAMQAwADMAMQBcAGwAYQBuAGcAZgBlADEAMAAzADEAXAB1AGwAXABmADIAXABmAHMAMgAwAFwAYwBmADEAIABLAHIAYQBuAGsAZQBuAGgAYQB1AHMAYQB1AGYAZQBuAHQAaABhAGwAdABlAH0AXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAdQBsAFwAZgAyAFwAZgBzADIAMABcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBsAHsAXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAdQBsAFwAZgAyAFwAZgBzADIAMABcAGMAZgAxACAAYgBlAGsAYQBuAG4AdAAgAG8AZABlAHIAIAB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAbAB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAGEAYgByAGUAYwBoAG4AdQBuAGcAcwByAGUAbABlAHYAYQBuAHQAfQB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAaQBtACAAQQBiAHIAZQBjAGgAbgB1AG4AZwBzAHoAZQBpAHQAcgBhAHUAbQB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQBcAHAAYQByAH0A</value>
</data>
<data name="xrRichText1.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEcAcgB1AHAAcABlAG4AYQBuAGcAZQBiAG8AdABlAH0AewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAaQBtACAAQQBiAHIAZQBjAGgAbgB1AG4AZwBzAHoAZQBpAHQAcgBhAHUAbQB9AFwAZgAxAFwAZgBzADIANABcAGMAZgAxAFwAcABhAHIAfQA=</value>
</data>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>21, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="xrPictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
3vqt4Bqu4jqu5Fqu5nqu6JquNhEQADs=
</value>
</data>
<data name="xrRichText2.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAGwAYQBuAGcAMQAwADMAMQBcAGwAYQBuAGcAZgBlADEAMAAzADEAXAB1AGwAXABmADIAXABmAHMAMgAwAFwAYwBmADEAIABLAHIAYQBuAGsAZQBuAGgAYQB1AHMAYQB1AGYAZQBuAHQAaABhAGwAdABlAH0AXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAdQBsAFwAZgAyAFwAZgBzADIAMABcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBsAHsAXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAdQBsAFwAZgAyAFwAZgBzADIAMABcAGMAZgAxACAAYgBlAGsAYQBuAG4AdAAgAG8AZABlAHIAIAB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAbAB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAGEAYgByAGUAYwBoAG4AdQBuAGcAcwByAGUAbABlAHYAYQBuAHQAfQB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAaQBtACAAQQBiAHIAZQBjAGgAbgB1AG4AZwBzAHoAZQBpAHQAcgBhAHUAbQB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQBcAHAAYQByAH0A</value>
</data>
<data name="xrRichText1.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEcAcgB1AHAAcABlAG4AYQBuAGcAZQBiAG8AdABlAH0AewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAaQBtACAAQQBiAHIAZQBjAGgAbgB1AG4AZwBzAHoAZQBpAHQAcgBhAHUAbQB9AFwAZgAxAFwAZgBzADIANABcAGMAZgAxAFwAcABhAHIAfQA=</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
namespace BeWo.Report.DefaultReports
{
public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<Settlement2RO>
@@ -16,26 +18,27 @@ namespace BeWo.Report.DefaultReports
public void SetReportDataSource(Settlement2RO pRO)
{
bool hasRatefactor = false;
if (!String.IsNullOrWhiteSpace(pRO.RateFactorText2))
{
hasRatefactor = true;
if (pRO.RateFactorText2 == "1,2")
{
pRO.RateFactorText2 = "1,20";
}
}
if (pRO.InvoiceItems != null)
{
foreach (var ii in pRO.InvoiceItems)
{
ii.ItemDescription = String.Format("{0:c}{1}", ii.AmountPerUnit, !hasRatefactor ? "" : " x " + pRO.RateFactorText2);
}
}
{
decimal rateFactor = 1;
foreach (var ii in pRO.InvoiceItems)
{
if (ii.RateFactor.HasValue)
{
rateFactor = (100 + ii.RateFactor.Value) / 100;
}
ii.ItemDescription = String.Format("{0:c}{1}", ii.AmountPerUnit, rateFactor.Equals(1) ? "" : " x " + rateFactor.ToString("F2"));
ii.DetailDescription = "geleistete Fachleistungsstunden";
if (!pRO.FehlkontakteString.IsNullOrEmpty() && ii.RateFactor == 0)
{
Zwischensumme.Visible = true;
ii.DetailDescription = "Fehlkontakte";
}
}
}
SetzeWohnort(pRO);

View File

@@ -1,123 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -50,7 +50,6 @@ namespace GrundsteinEV
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel29 = new DevExpress.XtraReports.UI.XRLabel();
@@ -80,6 +79,8 @@ namespace GrundsteinEV
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
this.xrLabel17 = new DevExpress.XtraReports.UI.XRLabel();
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
this.totalFLMFKString = new DevExpress.XtraReports.UI.CalculatedField();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
@@ -155,7 +156,7 @@ namespace GrundsteinEV
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.Text = "xrTableCell13";
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell13.Weight = 0.057510067695487624D;
this.xrTableCell13.Weight = 0.075565867933025208D;
//
// xrTableCell14
//
@@ -169,7 +170,7 @@ namespace GrundsteinEV
this.xrTableCell14.StylePriority.UseTextAlignment = false;
this.xrTableCell14.Text = "xrTableCell14";
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell14.Weight = 0.075158467785317679D;
this.xrTableCell14.Weight = 0.12724251671347014D;
//
// xrTableCell10
//
@@ -183,7 +184,7 @@ namespace GrundsteinEV
this.xrTableCell10.StylePriority.UseTextAlignment = false;
this.xrTableCell10.Text = "xrTableCell10";
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell10.Weight = 0.053246959651236006D;
this.xrTableCell10.Weight = 0.036354057878009091D;
//
// xrTableCell2
//
@@ -195,7 +196,7 @@ namespace GrundsteinEV
this.xrTableCell2.StylePriority.UsePadding = false;
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell2.Weight = 0.061597183401748037D;
this.xrTableCell2.Weight = 0.061597178315415127D;
//
// xrTableCell5
//
@@ -207,7 +208,7 @@ namespace GrundsteinEV
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.Text = "xrTableCell5";
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell5.Weight = 0.061597183401748037D;
this.xrTableCell5.Weight = 0.06159718340174803D;
//
// xrTableCell12
//
@@ -220,7 +221,7 @@ namespace GrundsteinEV
this.xrTableCell12.StylePriority.UsePadding = false;
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell12.Weight = 0.41690011288376561D;
this.xrTableCell12.Weight = 0.36365317057763535D;
//
// GroupHeader1
//
@@ -274,7 +275,7 @@ namespace GrundsteinEV
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "Datum";
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell3.Weight = 0.16263184109199072D;
this.xrTableCell3.Weight = 0.21369159836338555D;
//
// xrTableCell4
//
@@ -291,7 +292,7 @@ namespace GrundsteinEV
this.xrTableCell4.StylePriority.UseTextAlignment = false;
this.xrTableCell4.Text = "Uhrzeit";
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell4.Weight = 0.21253946942858062D;
this.xrTableCell4.Weight = 0.35982714669983923D;
//
// xrTableCell11
//
@@ -307,7 +308,7 @@ namespace GrundsteinEV
this.xrTableCell11.StylePriority.UseTextAlignment = false;
this.xrTableCell11.Text = "Art";
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell11.Weight = 0.15057626816867969D;
this.xrTableCell11.Weight = 0.10280508290728305D;
//
// xrTableCell9
//
@@ -354,11 +355,7 @@ namespace GrundsteinEV
this.xrTableCell28.StylePriority.UseTextAlignment = false;
this.xrTableCell28.Text = "Inhalt der Betreuung (Stichworte)";
this.xrTableCell28.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell28.Weight = 1.1789457176312843D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
this.xrTableCell28.Weight = 1.0283694683500275D;
//
// formattingRuleStartDate
//
@@ -670,9 +667,9 @@ namespace GrundsteinEV
this.xrLabel4.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrLabel4.BorderWidth = 2F;
this.xrLabel4.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMFehlkontakte")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMUnqualifiedString")});
this.xrLabel4.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(371.2639F, 0F);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(451.1332F, 0F);
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(92.3945F, 42.79F);
@@ -689,7 +686,7 @@ namespace GrundsteinEV
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrLabel3.Font = new System.Drawing.Font("Arial", 10F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(199F, 0.003496806F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(278.8694F, 0F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(79.86934F, 42.78648F);
@@ -752,7 +749,7 @@ namespace GrundsteinEV
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMQualifiedString")});
this.xrLabel1.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(278.8694F, 0F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(358.7387F, 0F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(92.3945F, 42.79F);
@@ -792,6 +789,15 @@ namespace GrundsteinEV
this.fieldKontaktArt.FieldType = DevExpress.XtraReports.UI.FieldType.String;
this.fieldKontaktArt.Name = "fieldKontaktArt";
//
// totalFLMFKString
//
this.totalFLMFKString.FieldType = DevExpress.XtraReports.UI.FieldType.String;
this.totalFLMFKString.Name = "totalFLMFKString";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// Quittierungsbeleg
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -802,7 +808,8 @@ namespace GrundsteinEV
this.bottomMarginBand1,
this.GroupFooter1});
this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
this.fieldKontaktArt});
this.fieldKontaktArt,
this.totalFLMFKString});
this.DataSource = this.bindingSource1;
this.Font = new System.Drawing.Font("Arial", 10F);
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
@@ -874,5 +881,6 @@ namespace GrundsteinEV
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.CalculatedField totalFLMFKString;
}
}

View File

@@ -21,15 +21,17 @@ namespace GrundsteinEV
{
pRO.TotalFLMQualifiedString = "";
pRO.TotalFLMQualified = 0;
pRO.TotalFLMUnqualifiedString = "";
pRO.TotalFLMUnqualified = 0;
bool hatGruppen = false;
if (pRO.Services != null)
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
foreach (var sd in pRO.Services)
{
if (sd.IsBillable || sd.ServiceDescription.ToLower().Contains("fehlkontakt"))
if (sd.IsBillable || (sd.ServiceDescription != null && sd.ServiceDescription.ToLower().Contains("fehlkontakt")))
{
if (sd.IsGroup)
{
@@ -43,6 +45,7 @@ namespace GrundsteinEV
else if (sd.ServiceDescription.ToLower().Contains("fehlkontakt"))
{
sd.FLSUnqualifiedString = String.Format("{0:0.##}", sd.Minutes); ;
pRO.TotalFLMUnqualified += sd.Minutes;
sd.FLSQualifiedString = "0";
sd.ServiceCategoryAbbr = "FK";
}
@@ -57,6 +60,7 @@ namespace GrundsteinEV
{
sd.StartDateString = "";
sd.FLSQualifiedString = "";
sd.FLSUnqualifiedString = "";
servicesBillable.Add(sd);
}
}
@@ -66,6 +70,14 @@ namespace GrundsteinEV
else
pRO.TotalFLMQualifiedString = "";
if (pRO.TotalFLMUnqualified != 0)
pRO.TotalFLMUnqualifiedString = String.Format("{0:0.##}", pRO.TotalFLMUnqualified);
else
pRO.TotalFLMUnqualifiedString = "0";
if (pRO.TotalFLMUnqualified == 0 && pRO.TotalFLMQualified == 0)
pRO.TotalFLMUnqualifiedString = "";
pRO.Services = servicesBillable;
}

View File

@@ -53,7 +53,6 @@ namespace GrundsteinEV
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel29 = new DevExpress.XtraReports.UI.XRLabel();
@@ -81,6 +80,7 @@ namespace GrundsteinEV
this.lblSumme = new DevExpress.XtraReports.UI.XRLabel();
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
this.MinutesNullable = new DevExpress.XtraReports.UI.CalculatedField();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
@@ -157,7 +157,7 @@ namespace GrundsteinEV
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.Text = "xrTableCell13";
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell13.Weight = 0.057510067226537738D;
this.xrTableCell13.Weight = 0.083899328944585988D;
//
// xrTableCell14
//
@@ -171,7 +171,7 @@ namespace GrundsteinEV
this.xrTableCell14.StylePriority.UseTextAlignment = false;
this.xrTableCell14.Text = "xrTableCell14";
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell14.Weight = 0.07307510522674214D;
this.xrTableCell14.Weight = 0.12168687368121559D;
//
// xrTableCell10
//
@@ -185,7 +185,7 @@ namespace GrundsteinEV
this.xrTableCell10.StylePriority.UseTextAlignment = false;
this.xrTableCell10.Text = "xrTableCell10";
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell10.Weight = 0.051858044762827162D;
this.xrTableCell10.Weight = 0.02871507441222633D;
//
// xrTableCell2
//
@@ -197,7 +197,7 @@ namespace GrundsteinEV
this.xrTableCell2.StylePriority.UsePadding = false;
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell2.Weight = 0.058124926955163227D;
this.xrTableCell2.Weight = 0.058124906609828934D;
//
// xrTableCell7
//
@@ -209,7 +209,7 @@ namespace GrundsteinEV
this.xrTableCell7.StylePriority.UseTextAlignment = false;
this.xrTableCell7.Text = "xrTableCell7";
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell7.Weight = 0.058000805156962841D;
this.xrTableCell7.Weight = 0.058226821475646305D;
//
// xrTableCell12
//
@@ -222,7 +222,7 @@ namespace GrundsteinEV
this.xrTableCell12.StylePriority.UsePadding = false;
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell12.Weight = 0.31272430668379075D;
this.xrTableCell12.Weight = 0.26064025088852072D;
//
// xrTableCell5
//
@@ -299,7 +299,7 @@ namespace GrundsteinEV
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "Datum";
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell3.Weight = 0.16263185398445015D;
this.xrTableCell3.Weight = 0.23725762959562632D;
//
// xrTableCell4
//
@@ -316,7 +316,7 @@ namespace GrundsteinEV
this.xrTableCell4.StylePriority.UseTextAlignment = false;
this.xrTableCell4.Text = "Uhrzeit";
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell4.Weight = 0.2066479744096181D;
this.xrTableCell4.Weight = 0.34411646603654056D;
//
// xrTableCell11
//
@@ -332,7 +332,7 @@ namespace GrundsteinEV
this.xrTableCell11.StylePriority.UseTextAlignment = false;
this.xrTableCell11.Text = "Art";
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell11.Weight = 0.14664859128414623D;
this.xrTableCell11.Weight = 0.081202939045331213D;
//
// xrTableCell9
//
@@ -349,7 +349,7 @@ namespace GrundsteinEV
this.xrTableCell9.StylePriority.UseTextAlignment = false;
this.xrTableCell9.Text = "Anzahl Minuten direkter Kontakt";
this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell9.Weight = 0.16437060674143267D;
this.xrTableCell9.Weight = 0.16437054920717273D;
//
// xrTableCell6
//
@@ -365,7 +365,7 @@ namespace GrundsteinEV
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.Text = "Anzahl Minuten Fehlkontakt";
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell6.Weight = 0.16401959022126994D;
this.xrTableCell6.Weight = 0.16465850817839292D;
//
// xrTableCell28
//
@@ -379,7 +379,7 @@ namespace GrundsteinEV
this.xrTableCell28.StylePriority.UseTextAlignment = false;
this.xrTableCell28.Text = "Inhalt der Betreuung (Stichworte)";
this.xrTableCell28.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell28.Weight = 0.88434840942871029D;
this.xrTableCell28.Weight = 0.7370609340065637D;
//
// xrTableCell1
//
@@ -395,10 +395,6 @@ namespace GrundsteinEV
this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell1.Weight = 0.32440575926098558D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// formattingRuleStartDate
//
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
@@ -706,12 +702,12 @@ namespace GrundsteinEV
this.xrLabel1.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrLabel1.BorderWidth = 2F;
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMFehlkontakte")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMUnqualifiedString")});
this.xrLabel1.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(360.8472F, 0F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(438.6332F, 0F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(87F, 42.79F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(87.33902F, 42.79F);
this.xrLabel1.StylePriority.UseBackColor = false;
this.xrLabel1.StylePriority.UseBorders = false;
this.xrLabel1.StylePriority.UseBorderWidth = false;
@@ -725,7 +721,7 @@ namespace GrundsteinEV
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrLabel3.Font = new System.Drawing.Font("Arial", 10F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(195.875F, 0F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(273.661F, 0F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(77.786F, 42.78648F);
@@ -778,7 +774,7 @@ namespace GrundsteinEV
this.lblSumme.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMQualifiedString")});
this.lblSumme.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.lblSumme.LocationFloat = new DevExpress.Utils.PointFloat(273.661F, 0F);
this.lblSumme.LocationFloat = new DevExpress.Utils.PointFloat(351.4471F, 0F);
this.lblSumme.Name = "lblSumme";
this.lblSumme.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.lblSumme.SizeF = new System.Drawing.SizeF(87.18619F, 42.79F);
@@ -803,6 +799,10 @@ namespace GrundsteinEV
this.MinutesNullable.Expression = "Iif(IsNullOrEmpty([Minutes]),9,[Minutes])";
this.MinutesNullable.Name = "MinutesNullable";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// QuittierungsbelegMitHandzeichen
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {

View File

@@ -21,14 +21,17 @@ namespace GrundsteinEV
{
pRO.TotalFLMQualifiedString = "";
pRO.TotalFLMQualified = 0;
pRO.TotalFLMUnqualifiedString = "";
pRO.TotalFLMUnqualified = 0;
bool hatGruppen = false;
if (pRO.Services != null)
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
foreach (var sd in pRO.Services)
{
if (sd.IsBillable || sd.ServiceDescription.ToLower().Contains("fehlkontakt"))
if (sd.IsBillable || (sd.ServiceDescription != null && sd.ServiceDescription.ToLower().Contains("fehlkontakt")))
{
ServicesOverviewRO.CreateSignatureString(sd);
if (sd.IsGroup)
@@ -43,6 +46,7 @@ namespace GrundsteinEV
else if (sd.ServiceDescription.ToLower().Contains("fehlkontakt"))
{
sd.FLSUnqualifiedString = String.Format("{0:0.##}", sd.Minutes); ;
pRO.TotalFLMUnqualified += sd.Minutes;
sd.FLSQualifiedString = "0";
sd.ServiceCategoryAbbr = "FK";
}
@@ -67,6 +71,14 @@ namespace GrundsteinEV
else
pRO.TotalFLMQualifiedString = "";
if (pRO.TotalFLMUnqualified != 0)
pRO.TotalFLMUnqualifiedString = String.Format("{0:0.##}", pRO.TotalFLMUnqualified);
else
pRO.TotalFLMUnqualifiedString = "0";
if (pRO.TotalFLMUnqualified == 0 && pRO.TotalFLMQualified == 0)
pRO.TotalFLMUnqualifiedString = "";
pRO.Services = servicesBillable;
}

View File

@@ -1,6 +1,6 @@
namespace LebenshilfeDorsten
{
partial class Spitzabrechnung
partial class Budgetnachweis
{
/// <summary>
/// Required designer variable.
@@ -220,9 +220,7 @@ namespace LebenshilfeDorsten
this.xrLabel4.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrLabel4.SizeF = new System.Drawing.SizeF(663.5623F, 81.58331F);
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.Text = "Sollte sich bei der Abrechnung der FLS ein Auszahlungsbetrag zu unseren Gunsten e" +
"rgeben, bitten wir um Erstattung auf folgendes Konto: \n\nKreditinstitut: IBAN:" +
" DE\n";
this.xrLabel4.Text = resources.GetString("xrLabel4.Text");
//
// xrLine1
//

View File

@@ -11,9 +11,9 @@ using DevExpress.XtraReports.UI;
namespace LebenshilfeDorsten
{
public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<SettlementRO>
public partial class Budgetnachweis : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<SettlementRO>
{
public Spitzabrechnung()
public Budgetnachweis()
{
InitializeComponent();
}

View File

@@ -117,6 +117,12 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="xrLabel4.Text" xml:space="preserve">
<value>Sollte sich bei der Abrechnung der FLS ein Auszahlungsbetrag zu unseren Gunsten ergeben, bitten wir um Erstattung auf folgendes Konto:
Kreditinstitut: Sparkasse Vest Recklinghausen IBAN: DE55 4265 0150 0011 0645 32
</value>
</data>
<data name="xrLabel12.Text" xml:space="preserve">
<value>Hiermit wird erklärt, dass die Verpflichtungen aus den Vereinbarungen nach §§75 ff. SGB XII bzw. §§125 ff. SGB IX eingehalten wurden und alle hier gemachten Angaben je Betreuungskontakt anhand der Quittierungsbelege sowie der Betreuungsdokumentation jederzeit nachgewiesen werden können. Diese Unterlagen sind 5 Jahre aufzubewahren und auf Verlangen des Sozialhilfeträgers bzw. des Trägers der Eingliederungshilfe vorzulegen (§2 Abs.1 der Vergütungsvereinbarung).</value>
</data>

View File

@@ -72,6 +72,12 @@
<Compile Include="SettlementReport.Designer.cs">
<DependentUpon>SettlementReport.cs</DependentUpon>
</Compile>
<Compile Include="SettlementReport2.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport2.Designer.cs">
<DependentUpon>SettlementReport2.cs</DependentUpon>
</Compile>
<Compile Include="SupportConceptReport.cs">
<SubType>Component</SubType>
</Compile>
@@ -111,6 +117,10 @@
<DependentUpon>SettlementReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport2.resx">
<DependentUpon>SettlementReport2.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SupportConceptReport.resx">
<DependentUpon>SupportConceptReport.cs</DependentUpon>
<SubType>Designer</SubType>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using DevExpress.XtraReports.UI;
using BeWo.Report.ReportObjects;
using BeWo.Report;
using System.Text.RegularExpressions;
using BS.Shared.Extensions;
namespace LebenshilfeDorsten
{
public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<Settlement2RO>
{
public Spitzabrechnung()
{
InitializeComponent();
}
public void SetReportDataSource(Settlement2RO pRO)
{
if (String.IsNullOrEmpty(pRO.Notice))
{
lblNotice.Visible = false;
}
decimal rateFactor = 1;
foreach (var ii in pRO.InvoiceItems)
{
if (ii.RateFactor.HasValue)
{
rateFactor = (100 + ii.RateFactor.Value) / 100;
}
if (!pRO.FehlkontakteString.IsNullOrEmpty() && ii.RateFactor == 0)
{
Zwischensumme.Visible = true;
if (!ii.ItemDescription.IsNullOrEmpty())
{
ii.DetailDescription = Regex.Replace(ii.DetailDescription, ii.ItemDescription, "Fehlkontakte");
}
ii.ItemDescription = "Fehlkontakte";
}
}
pRO.RateFactor = (double)rateFactor;
this.bindingSource1.DataSource = pRO;
}
}
}

View File

@@ -0,0 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="xrLabel6.Text" xml:space="preserve">
<value>anbei sende ich Ihnen die unterschriebenen Nachweise über die im Rahmen des Betreuten Wohnens für [Salutation2] [CustomerFirstName] [CustomerLastName] erbrachten Leistungen zu. Nach unserer Berechnung ergeben sich für den Betreuungszeitraum [AccountingPeriod] hieraus:
</value>
</data>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -1,88 +1,98 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{0F14574F-9637-40FE-8FCE-E047EFA4EC0B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>KundeXyz</RootNamespace>
<AssemblyName>2535794597_Reports</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SettlementReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport.Designer.cs">
<DependentUpon>SettlementReport.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\..\Report\Report.csproj">
<Project>{40d8b312-ea64-49e3-a31a-5e57ed4d5654}</Project>
<Name>Report</Name>
</ProjectReference>
<ProjectReference Include="..\..\Service\Service.csproj">
<Project>{094331c3-ecee-4c89-bbfd-4c9ded89f0ef}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\..\Shared\Shared.csproj">
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="SettlementReport.resx">
<DependentUpon>SettlementReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{0F14574F-9637-40FE-8FCE-E047EFA4EC0B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>KundeXyz</RootNamespace>
<AssemblyName>2535794597_Reports</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Host\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SettlementReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport.Designer.cs">
<DependentUpon>SettlementReport.cs</DependentUpon>
</Compile>
<Compile Include="SettlementReport2.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport2.Designer.cs">
<DependentUpon>SettlementReport2.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\..\Report\Report.csproj">
<Project>{40d8b312-ea64-49e3-a31a-5e57ed4d5654}</Project>
<Name>Report</Name>
</ProjectReference>
<ProjectReference Include="..\..\Service\Service.csproj">
<Project>{094331c3-ecee-4c89-bbfd-4c9ded89f0ef}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\..\Shared\Shared.csproj">
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="SettlementReport.resx">
<DependentUpon>SettlementReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport2.resx">
<DependentUpon>SettlementReport2.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using DevExpress.XtraReports.UI;
using BeWo.Report.ReportObjects;
using BeWo.Report;
using System.Text.RegularExpressions;
using BS.Shared.Extensions;
namespace BeWo.Report.DefaultReports
{
public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<Settlement2RO>
{
public Spitzabrechnung()
{
InitializeComponent();
}
public void SetReportDataSource(Settlement2RO pRO)
{
if (String.IsNullOrEmpty(pRO.Notice))
{
lblNotice.Visible = false;
}
decimal rateFactor = 1;
foreach (var ii in pRO.InvoiceItems)
{
if (ii.RateFactor.HasValue)
{
rateFactor = (100 + ii.RateFactor.Value) / 100;
}
if (!pRO.FehlkontakteString.IsNullOrEmpty() && ii.RateFactor == 0)
{
Zwischensumme.Visible = true;
if (!ii.ItemDescription.IsNullOrEmpty())
{
ii.DetailDescription = Regex.Replace(ii.DetailDescription, ii.ItemDescription, "Fehlkontakte");
}
ii.ItemDescription = "Fehlkontakte";
}
}
pRO.RateFactor = (double)rateFactor;
this.bindingSource1.DataSource = pRO;
}
}
}

View File

@@ -0,0 +1,240 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="xrRichText2.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAFYAZQByAGQAYQBuAGEAOwB9AH0AewBcAGMAbwBsAG8AcgB0AGIAbAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADAAIAA7AFwAcgBlAGQAMABcAGcAcgBlAGUAbgAwAFwAYgBsAHUAZQAyADUANQAgADsAfQB7AFwAKgBcAGQAZQBmAGMAaABwACAAXABmADEAXABmAHMAMgA0AH0AewBcAHMAdAB5AGwAZQBzAGgAZQBlAHQAIAB7AFwAcQBsAFwAZgAxAFwAZgBzADIANAAgAE4AbwByAG0AYQBsADsAfQB7AFwAKgBcAGMAcwAxAFwAZgAxAFwAZgBzADIANABcAGMAZgAxACAARABlAGYAYQB1AGwAdAAgAFAAYQByAGEAZwByAGEAcABoACAARgBvAG4AdAA7AH0AewBcACoAXABjAHMAMgBcAHMAYgBhAHMAZQBkAG8AbgAxAFwAZgAxAFwAZgBzADIANABcAGMAZgAxACAATABpAG4AZQAgAE4AdQBtAGIAZQByADsAfQB7AFwAKgBcAGMAcwAzAFwAdQBsAFwAZgAxAFwAZgBzADIANABcAGMAZgAyACAASAB5AHAAZQByAGwAaQBuAGsAOwB9AHsAXAAqAFwAdABzADQAXAB0AHMAcgBvAHcAZABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgByADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAHIAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAdAAzAFwAdABzAHYAZQByAHQAYQBsAHQAXABjAGwAdAB4AGwAcgB0AGIAIABOAG8AcgBtAGEAbAAgAFQAYQBiAGwAZQA7AH0AewBcACoAXAB0AHMANQBcAHQAcwByAG8AdwBkAFwAcwBiAGEAcwBlAGQAbwBuADQAXABmADEAXABmAHMAMgA0AFwAcQBsAFwAdAByAGIAcgBkAHIAdABcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBsAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGIAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAcgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgBoAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAHYAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAGwAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAbAAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgByADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAHIAMQAwADgAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAFQAYQBiAGwAZQAgAFMAaQBtAHAAbABlACAAMQA7AH0AfQB7AFwAKgBcAGwAaQBzAHQAbwB2AGUAcgByAGkAZABlAHQAYQBiAGwAZQB9AFwAbgBvAHUAaQBjAG8AbQBwAGEAdABcAHMAcABsAHkAdAB3AG4AaQBuAGUAXABoAHQAbQBhAHUAdABzAHAAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBsAHsAXAAqAFwAYgBrAG0AawBzAHQAYQByAHQAIABfAGQAeABfAGYAcgBhAGcAXwBTAHQAYQByAHQARgByAGEAZwBtAGUAbgB0AH0AewBcACoAXABiAGsAbQBrAGUAbgBkACAAXwBkAHgAXwBmAHIAYQBnAF8AUwB0AGEAcgB0AEYAcgBhAGcAbQBlAG4AdAB9AHsAXABiAFwAdQBsAFwAZgAyAFwAZgBzADEANgBcAGMAZgAxACAATQBvAGIAaQBsAG8AfQB7AFwAdQBsAFwAZgAyAFwAZgBzADEANgBcAGMAZgAxACAALAAgAH0AewBcAGwAYQBuAGcAMQAwADMAMQBcAGwAYQBuAGcAZgBlADEAMAAzADEAXAB1AGwAXABmADIAXABmAHMAMQA2AFwAYwBmADEAIABCAHUAYwBoAGgAbwBsAHoAZQByACAAVwBlAGcAIAA4AH0AewBcAHUAbABcAGYAMgBcAGYAcwAxADYAXABjAGYAMQAgACwAIAB9AHsAXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAdQBsAFwAZgAyAFwAZgBzADEANgBcAGMAZgAxACAANAAxADEAOAA5ACAATQBcAHUAMgA0ADYAXAAnAGYANgBuAGMAaABlAG4AZwBsAGEAZABiAGEAYwBoAH0AXABmADEAXABmAHMAMgA0AFwAYwBmADEAXABwAGEAcgB9AA==</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="xrPictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAGoAAAA5CAIAAABRWSmZAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAd
hwAAHYcBj+XxZQAAGA9JREFUeF7N3MevXkWTBvCrEWnFH8GKDauRhiVrRDY5CpFEEpicZRBgcpDJmGiD
zZBzzhlswESTMdjYBAfABJvk+Z3znFtu3utvNJsZzbMoVdep7q56ujq8vnzf2LHHHnv11Vc/8sgjr7/+
+vLly3/++ec1E/D333+X/N/DX3/9FeXPP/+M8v8K60x/7IQTTjjuuOMmT5589NFHH3PMMaeeeur06dNn
zZr17rvvfvzxx6tWrRocexgio0i19P8h0qU6Bmnma9yAXogPQoHiayzR/89g0j/++GNo9EjYYyeffPKJ
J55IHn/88RRUHtHjyCOPxOl555138cUXP/7446+99trixYt//fXX9DRW8oHkU1m1zZJtszr2nAyFRvnk
k0+effbZZcuW/fbbbzwzUTzBjIM2jvZrUJYRpZUjTXKkWUZIbMHvv/8u/W+++ea99957//3377///sce
e2zstNNOC4Nw0kknqT5IE6HqUVWi8rDDDmOfMmXKzTffnJI0TfKPUrNWEPEp8AnpwCGyD2zNt99++9Zb
b7344ovWae7cuS+88ML8+fM//PDDFStWZMGgxoyevgbMmGSmgH62tcFwS7M1jiDdoR9+gOYPP/wgBrHN
mzfv4Ycfvv322++4446bbrrp1ltvtUFhLEydcsop2EEfHZuaQAFGkt02D5sLFiww6OrVq80qGjPV9JD4
SgZ0qwfJMDnraCVefvllpT1nzpy3337bwoqV4iBmfOmll8T95ptvLly48Mcff5TMK6+8gt/PP/8cv99/
/32f5sBsRhYVHWKMHGmSUfhHVjzGtJZvvPHGc88999RTT82cOfPOO+9UMTNmzPjPHui766678BjZ0ReC
IlviIJxGL4evvvrKFlu6dOmiRYvcNnRBJI1gJNA+x3VA0AJ9+umncUSJxA4qo+CRgko6WvGIvldffVUT
VCtPYaAsA2a6kEIpOdLkyacsaYIlwZfKuuWWW8jZs2cjCH0B4iIhdsoYUsILWVRCyrD/uBaM6EOZKVNx
P/VgkUaXwQSI75dfflm5cqXN+M4772Bc7VgAJYwvJcaYEkPN888/7/gjUQMKE1nADV+oRCJFM0bQizS4
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
qwAAAABJRU5ErkJggg==
</value>
</data>
<data name="xrLabel6.Text" xml:space="preserve">
<value>anbei sende ich Ihnen die unterschriebenen Nachweise über die im Rahmen des Betreuten Wohnens für [Salutation2] [CustomerFirstName] [CustomerLastName] erbrachten Leistungen zu. Nach unserer Berechnung ergeben sich für den Betreuungszeitraum [AccountingPeriod] hieraus:
</value>
</data>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -108,7 +108,8 @@ namespace Monvita
private bool IsGesetzlBetreuer(CustomerPersonRelationDC c2P)
{
if (c2P.RelationRole != null && c2P.RelationRole.TypeDescription.ToLower() == "gesetzlicher vertreter")
if (c2P.RelationRole != null && c2P.RelationRole.TypeDescription != null
&& c2P.RelationRole.TypeDescription.ToLower() == "gesetzlicher vertreter")
{
return true;
}
@@ -117,7 +118,7 @@ namespace Monvita
private bool IsBehandler(CustomerPersonRelationDC c2P)
{
if (c2P.RelationRole != null && (
if (c2P.RelationRole != null && c2P.RelationRole.TypeDescription != null && (
c2P.RelationRole.TypeDescription.ToLower().Contains("diabetholog") ||
c2P.RelationRole.TypeDescription.ToLower() == "hausarzt" ||
c2P.RelationRole.TypeDescription.ToLower().Contains("logopäd") ||

View File

@@ -142,16 +142,14 @@ namespace PraxisPusteblume
foreach (var i in p.ServiceInvoiceItems)
{
if (i.UnitCount.HasValue)
if (i.UnitCount != null && i.UnitCount.HasValue)
{
i.UnitCountString = InvoiceHelper.GetUnitString(i.UnitCount);
}
if (i.ServiceDescription.Contains("Gruppe"))
if (i.ServiceDescription != null && i.ServiceDescription.Contains("Gruppe"))
{
if (i.HourlyRate.HasValue && i.Hours.HasValue)
if (i.HourlyRate != null && i.HourlyRate.HasValue && i.HourlyRate != null && i.Hours.HasValue)
{
if (!gruppenHours.ContainsKey(i.ServiceDescription))
{
@@ -164,13 +162,12 @@ namespace PraxisPusteblume
gruppenClaim[i.ServiceDescription] += (i.Hours.Value * (i.HourlyRate ?? 0));
}
i.UnitDescription = i.ServiceDescription;
i.UnitDescription = i.UnitDescription.Replace("Gruppe mit", "").Replace("Kindern", "").Trim();
}
else
{
if (i.HourlyRate.HasValue)
if (i.HourlyRate != null && i.HourlyRate.HasValue)
{
hourlyRate = i.HourlyRate.Value;
@@ -184,7 +181,7 @@ namespace PraxisPusteblume
//}
}
if (i.Hours.HasValue)
if (i.Hours != null && i.Hours.HasValue)
{
hours += i.Hours.Value;

View File

@@ -97,9 +97,9 @@ namespace PraxisPusteblume
{
i.Notice = String.Format("{0:dd.MM.yyyy} / KW {1}", i.AccountingPeriodStart, InvoiceHelper.GetKW(i.AccountingPeriodStart.Value));
if (i.UnitCount.HasValue)
if (i.UnitCount != null && i.UnitCount.HasValue)
{
i.UnitCountString = String.Format("{0:0.##} Behandlungseinheit á {1:c}", i.UnitCount,
i.UnitCountString = String.Format("{0:0.##} Behandlungseinheit à {1:c}", i.UnitCount,
i.AmountPerUnit);
}
//i.ServiceDescription =

View File

@@ -81,6 +81,13 @@ namespace SPZRatingen
this.customerCountField = new DevExpress.XtraReports.UI.CalculatedField();
this.fieldBillableFLS = new DevExpress.XtraReports.UI.CalculatedField();
this.fieldAbrechenbareFLS = new DevExpress.XtraReports.UI.CalculatedField();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel13 = new DevExpress.XtraReports.UI.XRLabel();
this.lblFehlkontakt = new DevExpress.XtraReports.UI.XRLabel();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
@@ -107,7 +114,7 @@ namespace SPZRatingen
this.xrTableServiceRecords1.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTableServiceRecords1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2});
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(675F, 18.00003F);
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(674.9998F, 18.00003F);
this.xrTableServiceRecords1.StylePriority.UseBackColor = false;
this.xrTableServiceRecords1.StylePriority.UseFont = false;
this.xrTableServiceRecords1.StylePriority.UseTextAlignment = false;
@@ -118,6 +125,7 @@ namespace SPZRatingen
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell3,
this.xrTableCell5,
this.xrTableCell4,
this.xrTableCell9,
this.xrTableCell12,
this.xrTableCell1});
@@ -134,13 +142,13 @@ namespace SPZRatingen
this.xrTableCell3.StylePriority.UseFont = false;
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "Datum";
this.xrTableCell3.Weight = 0.24385918004234175D;
this.xrTableCell3.Weight = 0.2159169760370562D;
//
// xrTableCell5
//
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Text = "Uhrzeit";
this.xrTableCell5.Weight = 0.40236764521500384D;
this.xrTableCell5.Weight = 0.3109205237952678D;
//
// xrTableCell9
//
@@ -149,7 +157,7 @@ namespace SPZRatingen
this.xrTableCell9.StylePriority.UseFont = false;
this.xrTableCell9.StylePriority.UseTextAlignment = false;
this.xrTableCell9.Text = "Anzahl Minuten";
this.xrTableCell9.Weight = 0.32920989628762409D;
this.xrTableCell9.Weight = 0.3316486742075796D;
//
// xrTableCell12
//
@@ -161,13 +169,13 @@ namespace SPZRatingen
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.Text = "Gruppe";
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell12.Weight = 0.29263101788877588D;
this.xrTableCell12.Weight = 0.29263086904894009D;
//
// xrTableCell1
//
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Text = "Mitarbeiter(in)";
this.xrTableCell1.Weight = 0.37798173117985129D;
this.xrTableCell1.Weight = 0.37798128466034381D;
//
// DetailReport
//
@@ -200,7 +208,7 @@ namespace SPZRatingen
this.xrTable3.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow6});
this.xrTable3.SizeF = new System.Drawing.SizeF(675F, 18F);
this.xrTable3.SizeF = new System.Drawing.SizeF(674.9998F, 18F);
this.xrTable3.StylePriority.UseFont = false;
this.xrTable3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
@@ -209,6 +217,7 @@ namespace SPZRatingen
this.xrTableRow6.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell13,
this.xrTableCell6,
this.xrTableCell7,
this.xrTableCell16,
this.xrTableCell17,
this.xrTableCell2});
@@ -228,7 +237,7 @@ namespace SPZRatingen
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.Text = "xrTableCell13";
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell13.Weight = 0.12626259853214011D;
this.xrTableCell13.Weight = 0.11179500601693203D;
//
// xrTableCell6
//
@@ -238,7 +247,7 @@ namespace SPZRatingen
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.Text = "xrTableCell6";
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell6.Weight = 0.2083332888606978D;
this.xrTableCell6.Weight = 0.16098483404042027D;
//
// xrTableCell16
//
@@ -250,7 +259,7 @@ namespace SPZRatingen
this.xrTableCell16.StylePriority.UseTextAlignment = false;
this.xrTableCell16.Text = "xrTableCell16";
this.xrTableCell16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell16.Weight = 0.17045448578923902D;
this.xrTableCell16.Weight = 0.17171721640516249D;
//
// xrTableCell17
//
@@ -263,7 +272,7 @@ namespace SPZRatingen
this.xrTableCell17.StylePriority.UseTextAlignment = false;
this.xrTableCell17.Text = "xrTableCell17";
this.xrTableCell17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell17.Weight = 0.15151511598001524D;
this.xrTableCell17.Weight = 0.15151503891543985D;
//
// xrTableCell2
//
@@ -273,7 +282,7 @@ namespace SPZRatingen
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.Text = "xrTableCell2";
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell2.Weight = 0.19570704439348488D;
this.xrTableCell2.Weight = 0.19570681319975869D;
//
// bindingSource1
//
@@ -283,9 +292,6 @@ namespace SPZRatingen
//
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
this.formattingRuleStartDate.DataMember = "ServicesDouble";
//
//
//
this.formattingRuleStartDate.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.formattingRuleStartDate.Name = "formattingRuleStartDate";
//
@@ -491,9 +497,6 @@ namespace SPZRatingen
//
this.formattingRuleServiceDesc.Condition = "[StartDate2] < [StartDate]";
this.formattingRuleServiceDesc.DataMember = "ServicesDouble";
//
//
//
this.formattingRuleServiceDesc.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.formattingRuleServiceDesc.Name = "formattingRuleServiceDesc";
//
@@ -501,9 +504,6 @@ namespace SPZRatingen
//
this.formattingRuleCostBearer.Condition = "[StartDate2] < [StartDate]";
this.formattingRuleCostBearer.DataMember = "ServicesDouble";
//
//
//
this.formattingRuleCostBearer.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.formattingRuleCostBearer.Name = "formattingRuleCostBearer";
//
@@ -511,9 +511,6 @@ namespace SPZRatingen
//
this.formattingRuleEmployeeName.Condition = "[StartDate2] < [StartDate]";
this.formattingRuleEmployeeName.DataMember = "ServicesDouble";
//
//
//
this.formattingRuleEmployeeName.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.formattingRuleEmployeeName.Name = "formattingRuleEmployeeName";
//
@@ -532,6 +529,11 @@ namespace SPZRatingen
// ReportFooter
//
this.ReportFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel14,
this.xrLabel8,
this.xrLabel2,
this.xrLabel13,
this.lblFehlkontakt,
this.xrLabel7,
this.xrLabel6,
this.xrLabel3,
@@ -567,32 +569,33 @@ namespace SPZRatingen
// xrLabel3
//
this.xrLabel3.Font = new System.Drawing.Font("Arial", 9F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(37.99998F, 0F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(12.12489F, 0F);
this.xrLabel3.Multiline = true;
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(226F, 48.20836F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(251.875F, 40.00009F);
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.Text = "1. Summe der unmittelbaren \r\nBetreuungsleistungen („face-to-face“ \r\nBeziehungswei" +
"se „ear-to-ear):\r\n";
this.xrLabel3.StylePriority.UseTextAlignment = false;
this.xrLabel3.Text = "Summe unmittelbare Betreuungsleistungen:";
this.xrLabel3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrLabel4
//
this.xrLabel4.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrLabel4.BorderWidth = 2;
this.xrLabel4.BorderWidth = 2F;
this.xrLabel4.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(264F, 0F);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(263.9999F, 0F);
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(136F, 48.20836F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(136F, 40.00009F);
this.xrLabel4.StylePriority.UseBorders = false;
this.xrLabel4.StylePriority.UseBorderWidth = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.StylePriority.UsePadding = false;
this.xrLabel4.StylePriority.UseTextAlignment = false;
this.xrLabel4.Text = "[TotalFLMBillable] = [fieldBillableFLS!0.##] Std.";
this.xrLabel4.Text = "[TotalFLMoFehlkontakte] = [TotalFLSoFehlkontakte] Std.";
this.xrLabel4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// xrLabel5
@@ -644,6 +647,99 @@ namespace SPZRatingen
this.fieldAbrechenbareFLS.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldAbrechenbareFLS.Name = "fieldAbrechenbareFLS";
//
// xrLabel2
//
this.xrLabel2.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(507.4999F, 0F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(169.5F, 20F);
this.xrLabel2.StylePriority.UseBackColor = false;
this.xrLabel2.StylePriority.UseBorders = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.StylePriority.UsePadding = false;
this.xrLabel2.StylePriority.UseTextAlignment = false;
this.xrLabel2.Text = "E = ear to ear, face to face";
this.xrLabel2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrLabel13
//
this.xrLabel13.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(507.4999F, 20.00008F);
this.xrLabel13.Name = "xrLabel13";
this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel13.SizeF = new System.Drawing.SizeF(169.5F, 20F);
this.xrLabel13.StylePriority.UseBackColor = false;
this.xrLabel13.StylePriority.UseBorders = false;
this.xrLabel13.StylePriority.UseFont = false;
this.xrLabel13.StylePriority.UsePadding = false;
this.xrLabel13.StylePriority.UseTextAlignment = false;
this.xrLabel13.Text = "GR = Gruppenangebot";
this.xrLabel13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// lblFehlkontakt
//
this.lblFehlkontakt.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblFehlkontakt.LocationFloat = new DevExpress.Utils.PointFloat(507.4999F, 40.00003F);
this.lblFehlkontakt.Name = "lblFehlkontakt";
this.lblFehlkontakt.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.lblFehlkontakt.SizeF = new System.Drawing.SizeF(169.5F, 20F);
this.lblFehlkontakt.StylePriority.UseBackColor = false;
this.lblFehlkontakt.StylePriority.UseBorders = false;
this.lblFehlkontakt.StylePriority.UseFont = false;
this.lblFehlkontakt.StylePriority.UsePadding = false;
this.lblFehlkontakt.StylePriority.UseTextAlignment = false;
this.lblFehlkontakt.Text = "F = Fehlkontakt";
this.lblFehlkontakt.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrTableCell4
//
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Text = "Art";
this.xrTableCell4.Weight = 0.11695058924987734D;
//
// xrTableCell7
//
this.xrTableCell7.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Notice5")});
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.StylePriority.UseTextAlignment = false;
this.xrTableCell7.Text = "xrTableCell7";
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell7.Weight = 0.060553335347534223D;
//
// xrLabel8
//
this.xrLabel8.Font = new System.Drawing.Font("Arial", 9F);
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(12.12489F, 40.00003F);
this.xrLabel8.Multiline = true;
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(251.875F, 20.00001F);
this.xrLabel8.StylePriority.UseFont = false;
this.xrLabel8.StylePriority.UseTextAlignment = false;
this.xrLabel8.Text = "Summe Fehlkontakte:";
this.xrLabel8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrLabel14
//
this.xrLabel14.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrLabel14.BorderWidth = 1F;
this.xrLabel14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMFehlkontakte")});
this.xrLabel14.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(263.9999F, 40.00009F);
this.xrLabel14.Name = "xrLabel14";
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F);
this.xrLabel14.SizeF = new System.Drawing.SizeF(136F, 19.99995F);
this.xrLabel14.StylePriority.UseBorders = false;
this.xrLabel14.StylePriority.UseBorderWidth = false;
this.xrLabel14.StylePriority.UseFont = false;
this.xrLabel14.StylePriority.UsePadding = false;
this.xrLabel14.StylePriority.UseTextAlignment = false;
this.xrLabel14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
//
// Stundenzettel
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -671,7 +767,7 @@ namespace SPZRatingen
this.PageWidth = 827;
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
this.SnapGridSize = 9F;
this.Version = "13.1";
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
@@ -733,6 +829,12 @@ namespace SPZRatingen
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.CalculatedField fieldBillableFLS;
private DevExpress.XtraReports.UI.CalculatedField fieldAbrechenbareFLS;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRLabel xrLabel13;
private DevExpress.XtraReports.UI.XRLabel lblFehlkontakt;
}
}

View File

@@ -17,10 +17,21 @@ namespace SPZRatingen
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services)
foreach (ServicesOverviewRO.ServiceDetail sd in pRO.Services)
{
if (s.IsBillable)
servicesBillable.Add(s);
if (sd.IsBillable || sd.ServiceDescription.ToLower().Contains("fehlkontakt"))
{
sd.Notice5 = "E";
if (sd.IsGroup)
{
sd.Notice5 = "GR";
}
if (sd.ServiceDescription.ToLower().Contains("fehlkontakt"))
{
sd.Notice5 = "F";
}
servicesBillable.Add(sd);
}
}
pRO.Services = servicesBillable;

View File

@@ -45,7 +45,7 @@ namespace SPZRatingen.Alt
MittelbareLeistungStd1.Text = string.Format("{0:0.00}",
pRO.GeleisteteFLSMitStundensatz3*
((decimal) pRO.RateFactor - 1));
Stundensatz1Text.Text = string.Format("á {0:0.00}", pRO.HourlyRate3);
Stundensatz1Text.Text = string.Format("à {0:0.00}", pRO.HourlyRate3);
pRO.Betrag1 = String.Format("{0:c}",
pRO.GeleisteteFLSMitStundensatz3*(decimal) pRO.RateFactor*
@@ -66,7 +66,7 @@ namespace SPZRatingen.Alt
MittelbareLeistungStd2.Text = string.Format("{0:0.00}",
pRO.GeleisteteFLSMitStundensatzAlt*
((decimal) pRO.RateFactor - 1));
Stundensatz2Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateOld);
Stundensatz2Text.Text = string.Format("à {0:0.00}", pRO.HourlyRateOld);
pRO.Betrag2 = String.Format("{0:c}",
pRO.GeleisteteFLSMitStundensatzAlt*(decimal) pRO.RateFactor*
@@ -88,7 +88,7 @@ namespace SPZRatingen.Alt
MittelbareLeistungStd3.Text = string.Format("{0:0.00}",
pRO.GeleisteteFLSMitStundensatzAktuell*
((decimal) pRO.RateFactor - 1));
Stundensatz3Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateNew);
Stundensatz3Text.Text = string.Format("à {0:0.00}", pRO.HourlyRateNew);
pRO.Betrag3 = String.Format("{0:c}",
pRO.GeleisteteFLSMitStundensatzAktuell*(decimal) pRO.RateFactor*
@@ -123,7 +123,7 @@ namespace SPZRatingen.Alt
MittelbareLeistungStd2.Text = string.Format("{0:0.00}",
pRO.GeleisteteFLSMitStundensatzAlt*
((decimal) pRO.RateFactor - 1));
Stundensatz2Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateOld);
Stundensatz2Text.Text = string.Format("à {0:0.00}", pRO.HourlyRateOld);
pRO.Betrag2 = String.Format("{0:c}",
pRO.GeleisteteFLSMitStundensatzAlt*(decimal) pRO.RateFactor*
@@ -146,7 +146,7 @@ namespace SPZRatingen.Alt
MittelbareLeistungStd3.Text = string.Format("{0:0.00}",
pRO.GeleisteteFLSMitStundensatzAktuell*
((decimal) pRO.RateFactor - 1));
Stundensatz3Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateNew);
Stundensatz3Text.Text = string.Format("à {0:0.00}", pRO.HourlyRateNew);
pRO.Betrag3 = String.Format("{0:c}",
pRO.GeleisteteFLSMitStundensatzAktuell*(decimal) pRO.RateFactor*
@@ -172,7 +172,7 @@ namespace SPZRatingen.Alt
Zwischensumme3Text.Text = "Zwischensumme:";
gelStunden3.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell);
MittelbareLeistungStd3.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell* ((decimal) pRO.RateFactor - 1));
Stundensatz3Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateNew);
Stundensatz3Text.Text = string.Format("à {0:0.00}", pRO.HourlyRateNew);
pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell*(decimal) pRO.RateFactor* pRO.HourlyRateNew);
BetragZwischensumme3Text.Text = pRO.Betrag3;

View File

@@ -528,7 +528,7 @@ namespace SPZRatingen
this.Stundensatz1Text.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.Stundensatz1Text.CanShrink = true;
this.Stundensatz1Text.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceItems.AmountPerUnit", "á {0:c}")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceItems.AmountPerUnit", "à {0:c}")});
this.Stundensatz1Text.Font = new System.Drawing.Font("Arial", 11F);
this.Stundensatz1Text.LocationFloat = new DevExpress.Utils.PointFloat(428.75F, 46.00003F);
this.Stundensatz1Text.Name = "Stundensatz1Text";
@@ -612,7 +612,7 @@ namespace SPZRatingen
this.Zwischensumme1Text.StylePriority.UseBorders = false;
this.Zwischensumme1Text.StylePriority.UseFont = false;
this.Zwischensumme1Text.StylePriority.UseTextAlignment = false;
this.Zwischensumme1Text.Text = "Zwischensumme:";
this.Zwischensumme1Text.Text = "Zwischensumme [DetailDescription]:";
this.Zwischensumme1Text.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
//
// xrLabel11

View File

@@ -5,6 +5,8 @@ using System.ComponentModel;
using DevExpress.XtraReports.UI;
using BeWo.Report.ReportObjects;
using BeWo.Report;
using BS.Shared.Extensions;
using System.Text.RegularExpressions;
namespace SPZRatingen
{
@@ -28,8 +30,14 @@ namespace SPZRatingen
ii.ItemDescription = String.Format("{0:0.00}", mittelbarHours);
ii.UnitDescription = String.Format("{0:0.00}", hours + mittelbarHours);
}
}
ii.DetailDescription = "Fachleistungen";
if (!pRO.FehlkontakteString.IsNullOrEmpty() && ii.RateFactor == 0)
{
ii.DetailDescription = "Fehlkontakte";
}
}
}
this.bindingSource1.DataSource = pRO;
}
}

View File

@@ -748,5 +748,9 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<CompactPersonDC> GetAllAuthorizedCompactPersons();
[FaultContract(typeof(BeWoFault))]
[OperationContract]
long? GetActiveMedListByTypeForCustomer(long customerOid, bool isBedarfsmedikation);
}
}

View File

@@ -4540,6 +4540,18 @@ namespace BeWo.Service.ServiceImplementations
throw Utils.CreateBeWoFaultException(e);
}
}
public long? GetActiveMedListByTypeForCustomer(long customerOid, bool isBedarfsmedikation)
{
try
{
return DAOFactory.SearchDAO.GetActiveMedListByTypeForCustomer(customerOid, isBedarfsmedikation);
}
catch(Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
}
internal struct WohnheimbuchungsIntervallStruct