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

This commit is contained in:
2025-11-19 14:59:06 +01:00
98 changed files with 4164 additions and 923 deletions

View File

@@ -1140,7 +1140,7 @@ namespace BeWo
showStackTrace = false;
showSupportForm = false;
}
else if (stacktrace.IndexOf("GenericADOException") >= 0 && stacktrace.IndexOf("could not insert") >= 0 && stacktrace.IndexOf("Incorrect string value") >= 0)
else if (stacktrace.IndexOf("GenericADOException") >= 0 && (stacktrace.IndexOf("could not insert") >= 0 || stacktrace.IndexOf("could not update") >= 0) && stacktrace.IndexOf("Incorrect string value") >= 0)
{
displayMessage = "Ihre Eingabe enthält ungültige Zeichen. Wenn Sie einen Text aus einem anderen Programm kopiert haben, entfernen Sie bitte vor dem Speichern die ungültigen Zeichen oder geben Sie den Text manuell ein.";
showStackTrace = true;

View File

@@ -18,7 +18,7 @@ namespace BeWo.Converter
{
if(value is string val_str && parameter is ValidationType val_type)
{
return Validator.IsValid(val_type, val_str);
return GkvValidator.IsValid(val_type, val_str);
}
return null;

View File

@@ -22,7 +22,7 @@ namespace BeWo.Converter
if (value is bool val_bool && parameter is ValidationType val_type)
{
return val_bool ? null : Validator.InvalidTooltipTxt(val_type);
return val_bool ? null : GkvValidator.InvalidTooltipTxt(val_type);
}
return "xxx";

View File

@@ -133,10 +133,10 @@ namespace BeWo
new DebugConfig()
{
DebugConfigMode = DebugConfigMode.FeatureDakota,
AutoLogin = false,
SelectView = UIContext.Organisation,
SelectIndex = 8,
DefaultLoginUsername = "m1",
AutoLogin = true,
//SelectView = UIContext.Organisation,
//SelectIndex = 8,
DefaultLoginUsername = "admin",
DefaultLoginPassword = "bewobewo",
DefaultProfilename = "5000000000",
EnableAutoRemoteDebugging = true

View File

@@ -515,7 +515,7 @@ namespace BeWo.View.Master
if(!OpenViews.ContainsKey(tabitem_abwesenheitsTabelle))
{
OpenViews[tabitem_abwesenheitsTabelle] = new AbwesenheitstabelleView();
OpenViews[tabitem_abwesenheitsTabelle] = new AbwesenheitsView();
}
Show(tabitem_abwesenheitsTabelle);

View File

@@ -920,6 +920,7 @@ namespace BeWo.ViewModel
public StoredFileVM XRechnungStoredFileVM { get; set; }
public long? Oid => DataContract.InvoiceBaseOid;
public string InvoiceId => DataContract.InvoiceId;
public string SenderStreet => DataContract.SenderStreet;
public string SenderTown => DataContract.SenderTown;
public string SenderPostCode => DataContract.SenderPostCode;

View File

@@ -713,8 +713,8 @@ namespace BeWo.ViewModel
}
public bool IsIKNumberValid
=> Validator.IsIKNumberValid(IKKrankenkasse)
&& Validator.IsLeistungserbringergruppeValid(Leistungserbringergruppe);
=> GkvValidator.IsIKNumberValid(IKKrankenkasse)
&& GkvValidator.IsLeistungserbringergruppeValid(Leistungserbringergruppe);
public string IKKrankenkasse
{

View File

@@ -160,22 +160,22 @@
}
@{
var shouldShowSignaturePopup = TempData[TempDataConstants.ShowSignatureSuggestionPopup] is true;
var shouldShowSignaturePopup = TempData[TempDataConstants.ShowSignatureSuggestionPopup] is true;
if(TempData[TempDataConstants.AfterInsertKey] is true)
{
if(TempData[TempDataConstants.AfterInsertKey] is true)
{
<text>
window.clearLocalBeWoStorage("@Model.BookingModePrefix");
</text>
}
}
if(Model.LastCreatedServiceRecordOid > 0)
{
if(shouldShowSignaturePopup && Model.ShowSignature)
{
if(Model.LastCreatedServiceRecordOid > 0)
{
if(shouldShowSignaturePopup && Model.ShowSignature)
{
<text>
showMessagePopupWithCallback("Erfolgreich gespeichert", "Möchten Sie den Eintrag unterschreiben lassen?", function() {
initializeSignature(@Model.LastCreatedServiceRecordOid);
window.showNewSignaturePopup(@Model.LastCreatedServiceRecordOid);
}, false);
</text>
}
@@ -244,8 +244,8 @@
}
}(jQuery));
$(window).resize(function() {
@* Wird für die neue Unterschriftenle *@
$(window).resize(function() {
@* Wird für die neue Unterschriftenle *@
updateCanvasSize($("#sketch-pad"));
});
@@ -285,7 +285,7 @@
return @(Model is { IsServiceRecordNoticeMandatory: true } ? "true" : "false");
}
function getIsServiceRecordGoalMandatory() {
function getIsServiceRecordGoalMandatory() {
return @(Model is { IsServiceRecordGoalMandatory: true } ? "true" : "false");
}
@@ -325,107 +325,107 @@
function reloadServiceRecordsAfterValidation() {
}
function getSelectedScCbRelOids(prefix) {
const checkedCheckboxes = $(`#${prefix}-cb2sc-list input[type=checkbox]:checked`);
const oids = [];
checkedCheckboxes.each(
(index, item) => {
oids.push(parseInt($(item).val(), 10));
}
);
return oids;
}
function updateScCbRelOids(prefix, isGroupTabActive) {
const oids = getSelectedScCbRelOids(prefix);
const selectedGroups = [];
function getSelectedScCbRelOids(prefix) {
const checkedCheckboxes = $(`#${prefix}-cb2sc-list input[type=checkbox]:checked`);
const oids = [];
$(`#${prefix}-g-list input[type=hidden]`).each(
(index, item) => {
const memberOids = commaSeparatedOid2Array($(item).val());
checkedCheckboxes.each(
(index, item) => {
oids.push(parseInt($(item).val(), 10));
}
);
let isSelected = true;
for(let i = 0; i < memberOids.length; i++) {
if(false === oids.includes(memberOids[i])) {
isSelected = false;
break;
}
}
return oids;
}
const groupOid = $(item).attr("id").split("-")[2];
function updateScCbRelOids(prefix, isGroupTabActive) {
const oids = getSelectedScCbRelOids(prefix);
const selectedGroups = [];
if(isSelected) {
selectedGroups.push(groupOid);
}
$(`#${prefix}-g-list input[type=hidden]`).each(
(index, item) => {
const memberOids = commaSeparatedOid2Array($(item).val());
$(`#${prefix}-group-checkbox-${groupOid}`).prop("checked", isSelected);
}
);
let isSelected = true;
for(let i = 0; i < memberOids.length; i++) {
if(false === oids.includes(memberOids[i])) {
isSelected = false;
break;
}
}
if(prefix === "gb") {
window.updateLocallyStoredGroupBookingCb2ScRelOids();
} else if(prefix === "mb") {
window.updateLocallyStoredMultiBookingCb2ScRelOids();
}
const groupOid = $(item).attr("id").split("-")[2];
const addScCbRelOidsUrl = prefix === "gb" ? "@Url.Action("AddScCbRelsToGroupBooking")" : "@Url.Action("AddScCbRelsToMultiBooking")";
const reloadBookingFormUrl = prefix === "gb" ? "@Url.Action("ReloadGroupBookingForm")" : "@Url.Action("ReloadMultiBookingForm")";
if(isSelected) {
selectedGroups.push(groupOid);
}
$(`#${prefix}-sc-cb-rel-tab-content`).load(addScCbRelOidsUrl,
{
relOids: oids,
groupOids: selectedGroups,
isGroupTabActive: isGroupTabActive
},
() => {
$(`#${prefix}-selection-container`).load(reloadBookingFormUrl, () => {
if(prefix === "gb") {
window.updateCategory("@Model.BookingModePrefix", @Model.SelectedServiceCategoryOid);
window.updateServiceDescription("@Model.BookingModePrefix", @Model.SelectedServiceDescriptionOid);
window.updateEmployeeOids("@Model.BookingModePrefix", getGroupBookingEmployeeOids());
window.updateStartDate("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-start-date-input`).val());
window.updateStartTime("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-start-time-input`).val());
window.updateEndDate("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-end-date-input`).val());
window.updateEndTime("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-end-time-input`).val());
window.updateDurationUnit("gb", ($("#gb-hours-minutes-dropdown-btn").text().trim() === "Stunden" ? "h" : "m"));
toggleGroupBookingForm();
} else if(prefix === "mb") {
changeMultiBookingFormEnableState($(".mb-cb2sc-input:checkbox:checked").length > 0 ? false : true);
$(`#${prefix}-group-checkbox-${groupOid}`).prop("checked", isSelected);
}
);
window.updateCategory("@Model.BookingModePrefix", @Model.SelectedServiceCategoryOid);
window.updateServiceDescription("@Model.BookingModePrefix", @Model.SelectedServiceDescriptionOid);
window.updateEmployeeOids("@Model.BookingModePrefix", getMultiBookingEmployeeOids());
window.updateStartDate("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-start-date-input`).val());
window.updateStartTime("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-start-time-input`).val());
window.updateEndDate("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-end-date-input`).val());
window.updateEndTime("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-end-time-input`).val());
window.updateDurationUnit("mb", ($("#mb-hours-minutes-dropdown-btn").text().trim() === "Stunden" ? "h" : "m"));
}
if(prefix === "gb") {
window.updateLocallyStoredGroupBookingCb2ScRelOids();
} else if(prefix === "mb") {
window.updateLocallyStoredMultiBookingCb2ScRelOids();
}
$("#goals-tree").load("@Url.Action("ReloadGoals")", () => {
$("#tree").load("@Url.Action("LoadUpToDateTextModules")", () => { logDebug("Textbausteine geladen"); });
});
});
});
}
const addScCbRelOidsUrl = prefix === "gb" ? "@Url.Action("AddScCbRelsToGroupBooking")" : "@Url.Action("AddScCbRelsToMultiBooking")";
const reloadBookingFormUrl = prefix === "gb" ? "@Url.Action("ReloadGroupBookingForm")" : "@Url.Action("ReloadMultiBookingForm")";
function updateGroupOfPeople(element, prefix) {
const item = $(element);
const groupOid = item.attr("id").split("-")[3];
const isSelected = item.prop("checked");
$(`#${prefix}-sc-cb-rel-tab-content`).load(addScCbRelOidsUrl,
{
relOids: oids,
groupOids: selectedGroups,
isGroupTabActive: isGroupTabActive
},
() => {
$(`#${prefix}-selection-container`).load(reloadBookingFormUrl, () => {
if(prefix === "gb") {
window.updateCategory("@Model.BookingModePrefix", @Model.SelectedServiceCategoryOid);
window.updateServiceDescription("@Model.BookingModePrefix", @Model.SelectedServiceDescriptionOid);
window.updateEmployeeOids("@Model.BookingModePrefix", getGroupBookingEmployeeOids());
window.updateStartDate("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-start-date-input`).val());
window.updateStartTime("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-start-time-input`).val());
window.updateEndDate("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-end-date-input`).val());
window.updateEndTime("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-end-time-input`).val());
window.updateDurationUnit("gb", ($("#gb-hours-minutes-dropdown-btn").text().trim() === "Stunden" ? "h" : "m"));
toggleGroupBookingForm();
} else if(prefix === "mb") {
changeMultiBookingFormEnableState($(".mb-cb2sc-input:checkbox:checked").length > 0 ? false : true);
const memberOids = commaSeparatedOid2Array($(`#${prefix}-i-${groupOid}`).val());
window.updateCategory("@Model.BookingModePrefix", @Model.SelectedServiceCategoryOid);
window.updateServiceDescription("@Model.BookingModePrefix", @Model.SelectedServiceDescriptionOid);
window.updateEmployeeOids("@Model.BookingModePrefix", getMultiBookingEmployeeOids());
window.updateStartDate("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-start-date-input`).val());
window.updateStartTime("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-start-time-input`).val());
window.updateEndDate("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-end-date-input`).val());
window.updateEndTime("@Model.BookingModePrefix", $(`#@Model.BookingModePrefix-end-time-input`).val());
window.updateDurationUnit("mb", ($("#mb-hours-minutes-dropdown-btn").text().trim() === "Stunden" ? "h" : "m"));
}
for(let i = 0; i < memberOids.length; i++) {
$(`#${prefix}-cb2sc-checkbox-${memberOids[i]}`).prop("checked", isSelected);
}
$("#goals-tree").load("@Url.Action("ReloadGoals")", () => {
$("#tree").load("@Url.Action("LoadUpToDateTextModules")", () => { logDebug("Textbausteine geladen"); });
});
});
});
}
updateScCbRelOids(prefix, true);
}
function updateGroupOfPeople(element, prefix) {
const item = $(element);
const groupOid = item.attr("id").split("-")[3];
const isSelected = item.prop("checked");
const memberOids = commaSeparatedOid2Array($(`#${prefix}-i-${groupOid}`).val());
for(let i = 0; i < memberOids.length; i++) {
$(`#${prefix}-cb2sc-checkbox-${memberOids[i]}`).prop("checked", isSelected);
}
updateScCbRelOids(prefix, true);
}
</script>
<div class="container mt-3 lg-max-width" id="checkbox-container">

View File

@@ -1,8 +1,9 @@
@model BeWoPlanerMobil.Models.MainModel
@using BeWoPlanerMobil.Util
@model BeWoPlanerMobil.Models.MainModel
<script type="text/javascript">
$(document).ready(() => {
updateSingleSignatureCanvas("single-signature-canvas-row", "single-signature-sketch-pad");
updateSingleSignatureCanvas("single-signature-canvas-row", "single-signature-sketch-pad");
});
$(window).resize(() => {
@@ -10,13 +11,10 @@
});
function updateSingleSignatureCanvas(canvasContainerId, canvasId) {
logInfo3(`Berechne die Größe des Canvas neu (${canvasContainerId}; ${canvasId})`);
const containerWidth = $(`#${canvasContainerId}`).innerWidth();
const sourceCanvas = document.getElementById(canvasId);
if(sourceCanvas === null || sourceCanvas === undefined) {
alert(`updateSingleSignatureCanvas(${canvasContainerId}, ${canvasId}) -> sourceCanvas is null! (${$(`#${canvasId}`).length}`);
return;
}
@@ -26,7 +24,7 @@
const parsedNewWidth = parseInt(newWidth, 10);
const parsedCanvasWidth = parseInt(canvasWidth, 10);
const isMinDiffMet =
const isMinDiffMet =
parsedCanvasWidth > parsedNewWidth ?
parsedCanvasWidth - parsedNewWidth > 4 :
parsedNewWidth - parsedCanvasWidth > 4;
@@ -71,7 +69,7 @@
() => {
$("#single-signature-modal").modal("show");
updateSingleSignatureCanvas("single-signature-canvas-row", "single-signature-sketch-pad");
updateSingleSignatureCanvas("single-signature-canvas-row", "single-signature-sketch-pad");
const canvas = document.getElementById("single-signature-sketch-pad");
const signaturePad = new SignaturePad(canvas, {backgroundColor: "rgba(255, 255, 255, 0)"});
@@ -89,15 +87,15 @@
closeButton.parentNode.replaceChild(closeButtonClone, closeButton);
function saveBtnListener(event) {
saveButtonEvent(serviceRecordOid);
singleSignatureSaveButtonEvent(serviceRecordOid);
}
function clearBtnListener(event) {
clearButtonEvent(signaturePad);
singleSignatureClearButtonEvent(signaturePad);
}
function closeBtnListener(event) {
cancelButtonEvent(signaturePad);
singleSignatureCloseButtonEvent(signaturePad);
}
saveButtonClone.addEventListener("click", saveBtnListener);
@@ -106,14 +104,13 @@
});
}
// ToDo: Das Bild ist komplett schwarz. Irgendwas läuft schief
function saveButtonEvent(selectedServiceRecordOid) {
function singleSignatureSaveButtonEvent(selectedServiceRecordOid) {
const date = new Date();
const clonedCanvas = trimCanvas(cloneCanvas(document.getElementById("single-signature-sketch-pad")));
const context = clonedCanvas.getContext("2d", {willReadFrequently: true});
context.globalCompositeOperation = "destination-over";
const context = clonedCanvas.getContext("2d", {willReadFrequently: true});
context.globalCompositeOperation = "destination-over";
context.fillStyle = "white";
context.fillRect(0, 0, clonedCanvas.width, clonedCanvas.height);
@@ -121,32 +118,53 @@
const formattedDate = getDateAndTimeAsString(date, true);
const form = $("<form>",
{
method: "post",
action: "@Url.Action("SaveSignature", "Main")"
});
form.append(
$("<input>",
{
type: "hidden",
name: "@FormCollectionConstants.ServiceRecordSignatureBlobKey",
value: dataUrl
})
);
form.append($("<input>",
{
type: "hidden",
name: "@FormCollectionConstants.ServiceRecordSignatureDateKey",
value: formattedDate
}));
form.append($("<input>",
{
type: "hidden",
name: "@FormCollectionConstants.ServiceRecordSignatureRecordOidKey",
value: selectedServiceRecordOid
}));
showSpinner();
$(`#sr-sig-blob-${selectedServiceRecordOid}`).val(dataUrl);
$(`#sr-sig-date-${selectedServiceRecordOid}`).val(formattedDate);
$(`#save-signature-form-${selectedServiceRecordOid}`).submit();
$("#sr-sg-container").append(form);
$("#single-signature-modal").modal("hide");
form.submit();
$("#single-signature-modal").modal("hide");
}
function cancelButtonEvent(signaturePad) {
function singleSignatureCloseButtonEvent(signaturePad) {
$("#single-signature-modal").modal("hide");
signaturePad.clear();
return;
@* Es wird schon ein Popup angezeigt. Deswegen kann kein zweites angezeigt werden. Das läge nämlich unter dem ersten Popup! *@
showMessagePopupWithCallback("Unterschrift", "Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?",
() => {
$("#single-signature-modal").modal("hide");
signaturePad.clear();
}, false);
}
function clearButtonEvent(signaturePad) {
function singleSignatureClearButtonEvent(signaturePad) {
signaturePad.clear();
}
</script>
@@ -171,6 +189,8 @@ else
var info = $"{nameAndDateOfBirth} | {supportConceptTimeSpan}";
<div id="sr-sg-container"></div>
<div id="single-signature-modal" class="modal" tabindex="-1" role="dialog" data-backdrop="static">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">

View File

@@ -37,6 +37,21 @@
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.9.0.2\lib\net462\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -49,6 +64,7 @@
<Compile Include="DakotaUtils.cs" />
<Compile Include="Logic\DakotaKTDReader.cs" />
<Compile Include="Logic\DakotaManager.cs" />
<Compile Include="Logic\DakotaNumberManager.cs" />
<Compile Include="Models\Auftragsdatei\Auftragsdatei.cs" />
<Compile Include="Models\Auftragsdatei\AuftragssatzPart2.cs" />
<Compile Include="Models\Auftragsdatei\AuftragssatzPart3.cs" />
@@ -149,6 +165,7 @@
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="KTDatei\AO.txt">
@@ -171,10 +188,6 @@
</Content>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Data\Data.csproj">
<Project>{b0d73e3d-4ae7-4024-93a6-db1f46d7ccee}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\Shared\Shared.csproj">
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>

View File

@@ -1,5 +1,5 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts;
using BS.Shared.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -32,7 +32,7 @@ namespace Dakota
return false;
}
public static bool IsSozioTherapie(this InvoiceBase invoiceBase)
public static bool IsSozioTherapie(this IInvoiceBase invoiceBase)
{
try
{

View File

@@ -1,5 +1,4 @@
using BeWo.Data.Entities;
using BS.Shared.Core;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Exceptions;

View File

@@ -1,5 +1,4 @@
using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared;
using BS.Shared.DataContracts;
using Dakota.Models.Infos;
using Dakota.Models.Schlüssels;

View File

@@ -1,5 +1,5 @@
using BeWo.Data.Models;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts;
using BS.Shared.Models;
using Dakota.Models.Infos;
using System;
using System.Collections.Generic;

View File

@@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
namespace Dakota.Logic
{
public class DakotaNumberManager
{
private readonly string _Filepath;
private readonly static object _LockObj = new object();
private Dictionary<string, Tuple<int, int>> _Numbers;
public DakotaNumberManager(string filePath)
{
_Filepath = filePath;
_Numbers = LoadNumbers();
}
private Dictionary<string, Tuple<int, int>> LoadNumbers()
{
if (!File.Exists(_Filepath))
{
return new Dictionary<string, Tuple<int, int>>
{
};
}
var json = File.ReadAllText(_Filepath);
return JsonSerializer.Deserialize<Dictionary<string, Tuple<int, int>>>(json) ?? new Dictionary<string, Tuple<int, int>>
{
};
}
private void SafeNumbers()
{
var json = JsonSerializer.Serialize(_Numbers, new JsonSerializerOptions()
{
WriteIndented = true
});
File.WriteAllText(_Filepath, json);
}
public Tuple<int, int> GetNextNumber(string datenannahmestelle, bool newDatenaustauschreferenz)
{
lock (_LockObj)
{
if (_Numbers.ContainsKey(datenannahmestelle))
{
var (datenaustauschreferenz, transfernummer) = _Numbers[datenannahmestelle];
if (newDatenaustauschreferenz)
datenaustauschreferenz++;
transfernummer++;
_Numbers[datenannahmestelle] = new Tuple<int, int>(datenaustauschreferenz, transfernummer);
}
else
{
_Numbers.Add(datenannahmestelle, new Tuple<int, int>(1, 0));
}
SafeNumbers();
return _Numbers[datenannahmestelle];
}
}
}
}

View File

@@ -1,5 +1,4 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts;
using Dakota.Models;
using Dakota.Models.Auftragsdatei;
using Dakota.Models.Blocke;

View File

@@ -49,14 +49,7 @@ namespace Dakota.Models.Daten
if (!_IgnoreCheck)
{
if (_Value.Length < MinStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
}
else if (_Value.Length > MaxStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
CheckValue(_Value);
}
return _Value;
@@ -90,15 +83,7 @@ namespace Dakota.Models.Daten
value = value.Trim();
if (value.Length < MinStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
}
if (value.Length > MaxStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
CheckValue(value);
try
{
@@ -111,5 +96,23 @@ namespace Dakota.Models.Daten
throw new Exception($"Fehler bei Feld \'{Title}\' mit Wert \"{value}\"", e);
}
}
private void CheckValue(string value)
{
if (value.Length < MinStellen)
{
throw GetGkvException(value, true);
}
else if (value.Length > MaxStellen)
{
throw GetGkvException(value, false);
}
}
private GkvException GetGkvException(string value, bool isLess)
=> new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {value.Length} Stellen ergeben! Nach Vorgabe " +
$"{(isLess ? $"muss es jedoch mindestens {MinStellen}" : $"darf es jedoch maximal {MaxStellen}")}" +
" Stellen haben");
}
}

View File

@@ -1,6 +1,6 @@
using BeWo.Data.Models;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts;
using BS.Shared.Exceptions;
using BS.Shared.Models;
using Dakota.Models.Schlüssels;
using System;
using System.Collections.Generic;

View File

@@ -18,13 +18,9 @@
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.AttributedModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
@@ -52,7 +48,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -62,6 +58,10 @@
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

13
Dakota/packages.config Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl.AsyncInterfaces" version="9.0.11" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.IO.Pipelines" version="9.0.11" targetFramework="net472" />
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
<package id="System.Text.Encodings.Web" version="9.0.11" targetFramework="net472" />
<package id="System.Text.Json" version="9.0.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>

View File

@@ -103,14 +103,14 @@ namespace DakotaSender
}
internal static void PrintFileInfo(DakotaSystemFile file)
{
Print($"Verarbeite Datei: {file.SourceNutzdatendatei.Name}" );
Print($"Verarbeite Datei: {file.SourceNutzdatendatei.Name}");
PrintLine($"(T:{file.Tenant}, U:{file.ApplicationUserOid}, P:{file.ProtokollOid}, D:{file.Datenannahmestelle})");
}
internal static void HandleException(Exception e, string tenant)
internal static void HandleException(Exception e, string tenant)
{
MailUtils.SendGkvModuleErrorMail("GkvSender Exception", e, tenant);
PrintLine(e.ToString());
PrintLine(e.ToString());
}
static void CheckDakotaStatus(bool sub = false)
@@ -196,7 +196,7 @@ namespace DakotaSender
var test = DakotaSenderUtils.IsTenantTest(tenant);
var allow = DakotaSenderUtils.IsTenantAllowed(tenant);
if(!test && !allow)
if (!test && !allow)
{
PrintLine($"{auft.FullName} wird ignoriert. Tenant \'{tenant}\' ungültig.");
return null;
@@ -216,7 +216,7 @@ namespace DakotaSender
return file;
}
catch(Exception e)
catch (Exception e)
{
HandleException(e, tenant);
}
@@ -263,47 +263,32 @@ namespace DakotaSender
}
static void HandleQueueFiles(List<DakotaSystemFile> files)
{
bool error = false;
foreach (var file in files)
{
if (!error)
var msg = HandleQueueFile(file, out bool success);
if (success)
{
var msg = HandleQueueFile(file, out bool success);
PrintLine(msg);
if (success)
{
PrintLine(msg);
Add2Results(file, GkvTransferResultType.Success);
Add2Results(file, GkvTransferResultType.Success);
FileController.CopyFileToCopy(file);
FileController.CopyFileToCopy(file);
FileController.CopyFileToSuccesss(file);
}
else
{
error = true;
PrintLine("Fehler gefunden. " + msg);
Add2Results(file, GkvTransferResultType.FailSoft, msg, "DS:Fehler");
FileController.CopyFileToCopy(file);
FileController.CopyFileToFailed(file);
}
FileController.CopyFileToSuccesss(file);
}
else
{
PrintLine($"Folgefehler: {file.SourceNutzdatendatei.Name}");
PrintLine("Fehler gefunden. " + msg);
Add2Results(file, GkvTransferResultType.FailFollowUp, "Wird neu erstellt und übertragen.", "DS:Folgefehler");
Add2Results(file, GkvTransferResultType.FailSoft, msg, "DS:Fehler");
FileController.CopyFileToCopy(file);
FileController.CopyFileToFailed(file);
}
FileController.DeleteQueueFile(file);
}
}
/// <summary>

View File

@@ -53,11 +53,11 @@ namespace DakotaUnitTest
Assert.IsNotNull(test);
Assert.IsTrue(test.Item1 == "661430035");
Assert.IsTrue(test.IKKrankenkasse == "661430035");
Assert.IsTrue(test.Item2 == "106492406");
Assert.IsTrue(test.IKKostentrager == "106492406");
Assert.IsTrue(test.Item3 == "105328415");
Assert.IsTrue(test.IKDatenannahmestelle == "105328415");
}
[TestMethod]
@@ -67,11 +67,11 @@ namespace DakotaUnitTest
Assert.IsNotNull(test);
Assert.IsTrue(test.Item1 == "104212516");
Assert.IsTrue(test.IKKrankenkasse == "104212516");
Assert.IsTrue(test.Item2 == "104212505");
Assert.IsTrue(test.IKKostentrager == "104212505");
Assert.IsTrue(test.Item3 == "104212505");
Assert.IsTrue(test.IKDatenannahmestelle == "104212505");
}
[TestMethod]
@@ -89,11 +89,11 @@ namespace DakotaUnitTest
Assert.IsNotNull(test);
Assert.IsTrue(test.Item1 == "109905003");
Assert.IsTrue(test.IKKrankenkasse == "109905003");
Assert.IsTrue(test.Item2 == "109905003");
Assert.IsTrue(test.IKKostentrager == "109905003");
Assert.IsTrue(test.Item3 == "109905003");
Assert.IsTrue(test.IKDatenannahmestelle == "109905003");
}
}
}

View File

@@ -435,7 +435,6 @@
<Compile Include="ICF\ICFDAO.cs" />
<Compile Include="LoggedInUserOperationContextExt.cs" />
<EmbeddedResource Include="Mappings\Bargeldtransaktionshistory.hbm.xml" />
<Compile Include="Models\AddressInformation.cs" />
<Compile Include="Models\XRechnung\XRBuyerBankAccount.cs" />
<Compile Include="Models\XRechnung\XRechnung.cs" />
<Compile Include="Models\XRechnung\XRSellerBankAccount.cs" />

View File

@@ -36,7 +36,7 @@ namespace Host
private string ResultFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvAbrechnungResultFolderPath");
private string QueueFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvAbrechnungQueueFolderPath");
private string KostentragerdateiFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvKostentragerdateiFolderPath");
protected void Page_Load(object sender, EventArgs e)
{
try
@@ -67,6 +67,10 @@ namespace Host
GetStatus(GkvSender.DeserializeRequest<GkvServerGetStatusRequestDC>(str, SendInvalidInputResponse));
return;
case RequestType.GkvServerGetNumber:
GetNumber(GkvSender.DeserializeRequest<GkvServerGetNumberRequestDC>(str, SendInvalidInputResponse));
return;
default:
SendErrorResponse("RequestType unbekannt.");
return;
@@ -78,7 +82,18 @@ namespace Host
}
catch (Exception ex)
{
var ex_text = ex.Message + "\n" + ex.StackTrace;
var ex_text = ex.Message + "\n\n" + ex.StackTrace;
if(ex.InnerException != null)
{
ex_text += "\n\n" + ex.InnerException.Message + "\n\n" + ex.InnerException.StackTrace;
if (ex.InnerException.InnerException != null)
{
ex_text += "\n\n" + ex.InnerException.InnerException.Message + "\n\n" + ex.InnerException.InnerException.StackTrace;
}
}
SendErrorResponse("Exception: " + ex_text);
}
@@ -245,6 +260,23 @@ namespace Host
return;
}
private void GetNumber(GkvServerGetNumberRequestDC req)
{
var response = new GkvServerGetNumberResponseDC(false);
var path = ConfigurationManager.AppSettings.Get("GkvAbrechnungRootPath");
var filePath = Path.Combine(path, "numbers.json");
var manager = new DakotaNumberManager(filePath);
(response.Datenaustauschreferenz, response.Transfernummer)
= manager.GetNextNumber(req.IKDatenannahmestelle, req.NewDatenaustauschRef);
response.Success = true;
SendResponse(response);
return;
}
private string SaveFileInQueue(GkvServerSendNewRequestDC req)
{

View File

@@ -58,6 +58,18 @@
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="Castle.DynamicProxy, Version=1.1.5.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\Castle.DynamicProxy.dll</HintPath>
</Reference>
<Reference Include="Castle.DynamicProxy2, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\Castle.DynamicProxy2.dll</HintPath>
</Reference>
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Mvvm.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Private>False</Private>
@@ -86,8 +98,8 @@
<Reference Include="DevExpress.XtraScheduler.v23.2.Core.Desktop, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraScheduler.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraScheduler.v23.2.Reporting, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.2\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.11, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.11\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CodeAnalysis, Version=3.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.CodeAnalysis.Common.3.4.0\lib\netstandard2.0\Microsoft.CodeAnalysis.dll</HintPath>
@@ -110,6 +122,10 @@
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NHibernate.ByteCode.Castle, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\NHibernate.ByteCode.Castle.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
@@ -135,8 +151,12 @@
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.IO.Pipelines, Version=9.0.0.11, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.9.0.11\lib\net462\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
@@ -153,8 +173,14 @@
<Reference Include="System.Text.Encoding.CodePages, Version=9.0.0.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encoding.CodePages.9.0.2\lib\net462\System.Text.Encoding.CodePages.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
<Reference Include="System.Text.Encodings.Web, Version=9.0.0.11, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.9.0.11\lib\net462\System.Text.Encodings.Web.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=9.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.9.0.2\lib\net462\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.Web.DynamicData" />

View File

@@ -19,7 +19,7 @@
<WebProjectProperties>
<StartPageUrl>
</StartPageUrl>
<StartAction>NoStartPage</StartAction>
<StartAction>CurrentPage</StartAction>
<AspNetDebugging>True</AspNetDebugging>
<SilverlightDebugging>False</SilverlightDebugging>
<NativeDebugging>False</NativeDebugging>
@@ -33,7 +33,7 @@
<StartWorkingDirectory>
</StartWorkingDirectory>
<EnableENC>True</EnableENC>
<AlwaysStartWebServerOnDebug>True</AlwaysStartWebServerOnDebug>
<AlwaysStartWebServerOnDebug>False</AlwaysStartWebServerOnDebug>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>

View File

@@ -25,12 +25,64 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.AttributedModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.TypedParts" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.Hosting" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
</assemblyBinding>
</runtime>
@@ -324,6 +376,7 @@
<add key="GkvAbrechnungResultFolderPath" value="C:\GkvAbrechnung\Results\" />
<add key="GkvAbrechnungQueueFolderPath" value="C:\GkvAbrechnung\Data\Queue\" />
<add key="GkvKostentragerdateiFolderPath" value="C:\GkvAbrechnung\KTDatei\" />
<add key="GkvAbrechnungRootPath" value="C:\GkvAbrechnung" />
<add key="DakotaPath" value="C:\Program Files (x86)\ITSG\dakotale\dakota30.exe" />
<add key="App8IpAddress" value="88.198.50.220" />
<add key="GkvSumServerIPAdress" value="88.198.50.220" />

View File

@@ -25,11 +25,11 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.3.0" newVersion="4.1.3.0" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -41,7 +41,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -75,6 +75,14 @@
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.11" newVersion="9.0.0.11" />
</dependentAssembly>
</assemblyBinding>
</runtime>
@@ -287,7 +295,7 @@
</binding>
<binding name="webHttpStreamBindingConfig" transferMode="Streamed">
<!-- Optional: Maximale Nachrichten- und Puffergröße anpassen -->
<readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
<readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
<security mode="None" />
<!-- Für ungesicherte Verbindungen (HTTP) -->
</binding>
@@ -339,7 +347,7 @@
<add name="AdminSecurityExtension" type="BeWo.Service.ServiceBehavior.AdminSecurityBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
<add name="AdminHibernateSessionExtension" type="BeWo.Service.ServiceBehavior.AdminHibernateBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
<add name="JsonErrorExtension" type="BeWo.Service.ServiceBehavior.JsonError.JsonErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
<add name="WCFErrorExtension" type="BeWo.Service.ServiceBehavior.WCFError.WCFErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
<add name="WCFErrorExtension" type="BeWo.Service.ServiceBehavior.WCFError.WCFErrorBehaviorExtension, BeWo.Service, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
</system.serviceModel>
@@ -377,6 +385,7 @@
<add key="GkvAbrechnungResultFolderPath" value="C:\GkvAbrechnung\Results\" />
<add key="GkvAbrechnungQueueFolderPath" value="C:\GkvAbrechnung\Data\Queue\" />
<add key="GkvKostentragerdateiFolderPath" value="C:\GkvAbrechnung\KTDatei\" />
<add key="GkvAbrechnungRootPath" value="C:\GkvAbrechnung" />
<add key="DakotaPath" value="C:\Program Files (x86)\ITSG\dakotale\dakota30.exe" />
<add key="App8IpAddress" value="88.198.50.220" />
<add key="GkvSumServerIPAdress" value="88.198.50.220" />
@@ -388,7 +397,7 @@
<add key="SendMailModuleGkvSender" value="noreply@bewoplaner.de" />
<add key="SendMailModuleGkvReceiver" value="dakota.exchange@ownsoft.de" />
<add key="OpenWebUIUrl" value="https://owui1.ownsoft.de/"/>
<add key="OpenWebUIUrl" value="https://owui1.ownsoft.de/" />
<add key="XRechnungApiUrl" value="https://test2.evplaner.de/xrg/"/>
<add key="StoredFilesFolderPath" value="C:\BeWoPlaner\StoredFiles"/>

View File

@@ -3,7 +3,7 @@
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net472" />
<package id="jQuery" version="3.7.1" targetFramework="net472" />
<package id="jquery.mobile" version="1.3.0" targetFramework="net40" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="9.0.2" targetFramework="net472" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="9.0.11" targetFramework="net472" />
<package id="Microsoft.CodeAnalysis" version="3.4.0" targetFramework="net472" />
<package id="Microsoft.CodeAnalysis.Analyzers" version="2.9.6" targetFramework="net472" developmentDependency="true" />
<package id="Microsoft.CodeAnalysis.Common" version="3.4.0" targetFramework="net472" />
@@ -21,10 +21,14 @@
<package id="System.Composition.Hosting" version="9.0.2" targetFramework="net472" />
<package id="System.Composition.Runtime" version="9.0.2" targetFramework="net472" />
<package id="System.Composition.TypedParts" version="9.0.2" targetFramework="net472" />
<package id="System.IO.Pipelines" version="9.0.11" targetFramework="net472" />
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Reflection.Metadata" version="9.0.2" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
<package id="System.Text.Encoding.CodePages" version="9.0.2" targetFramework="net472" />
<package id="System.Text.Encodings.Web" version="9.0.11" targetFramework="net472" />
<package id="System.Text.Json" version="9.0.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>

BIN
Lib/System.Memory.dll Normal file

Binary file not shown.

View File

@@ -464,32 +464,7 @@ namespace BeWo.Report
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay, serviceCategoryOid, true, nurFehlende);
if (lROs.Count > 0)
{
String reportId = null;
if (orgaOid > 0)
{
var organisation = DAOFactory.GenericDAO.LoadByID<Organisation>(orgaOid);
if (organisation != null)
reportId = organisation.Name;
}
var lServiceOverviewAllCustomersReport = this.FindReportImp<ServicesOverviewRO>(reportId);
lServiceOverviewAllCustomersReport.SetReportDataSource(lROs[0]);
(lServiceOverviewAllCustomersReport as XtraReport).CreateDocument();
var Report = lServiceOverviewAllCustomersReport as XtraReport;
for (int i = 1; i < lROs.Count; i++)
{
var lNext = FindReportImp<ServicesOverviewRO>(reportId);
lNext.SetReportDataSource(lROs[i]);
(lNext as XtraReport).CreateDocument();
Report.Pages.AddRange((lNext as XtraReport).Pages);
}
return lServiceOverviewAllCustomersReport as XtraReport;
}
return new XtraReport();
return CreateServiceOverviewReportForROs(lROs, orgaOid);
}
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
@@ -502,26 +477,45 @@ namespace BeWo.Report
}
String reportId = null;
if (orgaOid > 0)
{
var organisation = DAOFactory.GenericDAO.LoadByID<Organisation>(orgaOid);
if (organisation != null)
reportId = organisation.Name;
}
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
var lServiceOverviewSingleCustomerReport = this.FindReportImp<ServicesOverviewRO>(reportId);
var roList = new List<ServicesOverviewRO>();
if (ro != null)
{
lServiceOverviewSingleCustomerReport.SetReportDataSource(ro);
roList.Add(ro);
}
return CreateServiceOverviewReportForROs(roList, orgaOid);
}
public virtual XtraReport CreateServiceOverviewReportForROs(List<ServicesOverviewRO> roList, long orgaOid)
{
if (roList.Count > 0)
{
String reportId = null;
if (orgaOid > 0)
{
var organisation = DAOFactory.GenericDAO.LoadByID<Organisation>(orgaOid);
if (organisation != null)
reportId = organisation.Name;
}
return lServiceOverviewSingleCustomerReport as XtraReport;
var lServiceOverviewAllCustomersReport = this.FindReportImp<ServicesOverviewRO>(reportId);
lServiceOverviewAllCustomersReport.SetReportDataSource(roList[0]);
(lServiceOverviewAllCustomersReport as XtraReport).CreateDocument();
var Report = lServiceOverviewAllCustomersReport as XtraReport;
for (int i = 1; i < roList.Count; i++)
{
var lNext = FindReportImp<ServicesOverviewRO>(reportId);
lNext.SetReportDataSource(roList[i]);
(lNext as XtraReport).CreateDocument();
Report.Pages.AddRange((lNext as XtraReport).Pages);
}
return lServiceOverviewAllCustomersReport as XtraReport;
}
return new XtraReport();
}
public override XtraReport CreateServiceOverviewReportNew(int month, int year, QBFilterEnum filterType, long? customerOid, long? teamOid, long? empOid, long? orgaOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende)

View File

@@ -1,11 +1,11 @@
using BeWo.Data.Entities;
using BeWo.Data.Models;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
using BS.Shared.Models;
using DevExpress.XtraPrinting.Drawing;
using System;
using System.Collections.Generic;

View File

@@ -70,6 +70,10 @@
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>

View File

@@ -0,0 +1,100 @@
<?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>{A6D3E7D4-3AE7-475E-A1FD-D816F0A88043}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BBIRheinSieg</RootNamespace>
<AssemblyName>6652760522_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>..\..\CustomerDlls\</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>..\..\CustomerDlls\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Drawing.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Office.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Export, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v23.2, Version=23.2.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="Calculations\DefaultCalculations.cs" />
<Compile Include="Calculations\CustomGroupDurationCalculator.cs" />
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Invoicing\CustomLWLDiggaBerechnung.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Reporting\CustomMitarbeiterstundenkontoBerechnung.cs" />
<Compile Include="Reporting\CustomReportCreator.cs" />
<Compile Include="Service\CustomHomeContentGenerator.cs" />
<Compile Include="Service\CustomVacationService.cs" />
<Compile Include="Service\CustomVertretungsManager.cs" />
<Compile Include="Service\DefaultSaveInterceptor.cs" />
<Compile Include="Statistics\CustomServiceRecordStatisticFactory.cs" />
<Compile Include="Validation\ServiceRecordValidator.cs" />
</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>
<Folder Include="Export\" />
<Folder Include="Import\" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Plugins;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Services;
namespace TemplateNeuKunde.Calculations
{
//public class CustomGroupDurationCalculator : GroupDurationCalculator
//{
// public override GroupDurationDC CalculateGroupDuration(int personCount, int employeeCount, decimal totalDuration)
// {
// return new GroupDurationDC()
// {
// SingleDuration = (totalDuration / personCount) * employeeCount,
// TotalDuration = totalDuration
// };
// }
//}
}

View File

@@ -0,0 +1,25 @@
using System;
namespace TemplateNeuKunde.Calculations
{
//public class DefaultCalculations : BS.Shared.Services.Calculations
//{
// public override int GetRoundedDuration(int minuteInterval, decimal durationInMinutes)
// {
// decimal lRoundedDuration = durationInMinutes;
// if (minuteInterval > 0 && durationInMinutes >= 5)
// {
// lRoundedDuration = durationInMinutes % minuteInterval != 0
// ? durationInMinutes + (minuteInterval - (durationInMinutes % minuteInterval))
// : durationInMinutes;
// }
// return (int)Math.Round(lRoundedDuration, 0, MidpointRounding.AwayFromZero);
// }
//}
}

View File

@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
using Service.Invoicing;
namespace TemplateNeuKunde.Invoicing
{
// public class CustomInvoiceCreation : InvoiceCreation
//{
// //public override void SetInvoiceId(ServiceInvoice invoice)
// //{
// // //invoice.InvoiceBase.InvoiceId = "SBD";
// // //invoice.InvoiceBase.InvoiceTypeText = "";
// //}
// // //Setze für Selbstzahler die Adresse des Klienten
// // public override void SetRecipientInformation(ServiceInvoice serviceInvoice, CostBearer costBearer)
// // {
// // if (costBearer.Organisation.Name == "Selbstzahler")
// // {
// // serviceInvoice.InvoiceBase.RecipientOrganisationOid = costBearer.Organisation.Oid;
// // if (serviceInvoice.InvoiceBase.CostBearer2SupportConcept != null)
// // {
// // var cust = serviceInvoice.InvoiceBase.CostBearer2SupportConcept.SupportConcept.Customer;
// // if (cust.Person.InvoiceAddress != null)
// // {
// // serviceInvoice.InvoiceBase.RecipientAddress = cust.Person.InvoiceAddress.CopyToNew();
// // }
// // else if (cust.Person.Address != null)
// // {
// // serviceInvoice.InvoiceBase.RecipientAddress = cust.Person.Address.CopyToNew();
// // }
// // serviceInvoice.InvoiceBase.RecipientPersonFirstName = cust.Person.FirstName;
// // serviceInvoice.InvoiceBase.RecipientPersonLastName = cust.Person.LastName;
// // serviceInvoice.InvoiceBase.RecipientCustomerOid = cust.Oid;
// // }
// // }
// // }
// }
}

View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Invoicing;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace TemplateNeuKunde.Invoicing
{
public class CustomInvoiceFactory : InvoiceFactory
{
// public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
// {
////Hier einkommentieren, wenn die Rechnungserstellung von einer bestimmten Kategorie einer Bewilligung abhängt
//foreach (var item in supportConcepts2ServiceRecords)
//{
// var csc = item.Key;
// var cb2sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(csc.CostBearerRelOids[0]);
// foreach (var scap in cb2sc.ApprovalPeriodList)
// {
// if (scap.ServiceCategory != null)
// {
// var ic = GetInvoiceCreatorForCategory(scap.ServiceCategory.Name);
// if (ic != null)
// return ic;
// }
// }
//}
////Hier einkommentieren, wenn die Rechnungserstellung von einer bestimmten Kategorie oder Organisation eines ServiceRecords abhängt
//foreach (var list in supportConcepts2ServiceRecords.Values)
// {
// foreach (var sr in list)
// {
// //Hier wird Kategorie geprüft
// var ic = GetInvoiceCreatorForCategory(sr.ServiceDescription.Category.Name);
// if (ic != null)
// return ic;
// //Hier wird Organisation geprüft
// if (sr.CostBearer.Name.ToLower().Contains("selbstzahler"))
// {
// return new CustomInvoiceCreation();
// }
// }
// }
// return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
// }
// private InvoiceCreation GetInvoiceCreatorForCategory(String catName)
// {
// if (!String.IsNullOrEmpty(catName))
// {
// String cat = catName.ToLower().Trim();
// if (cat.IndexOf("assistenz") >= 0)
// return new CustomInvoiceCreation();
// }
// return null;
// }
}
}

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace TemplateNeuKunde.Invoicing
{
public class CustomLWLDiggaBerechnung : LWLDiggaBerechnung
{
public override void InitBerechnung()
{
//this.Umstellungsdatum = new DateTime(2025, 1, 1);
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
[assembly: AssemblyTitle("KundeXyz")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("KundeXyz")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("c1fed668-adb9-47e0-b589-1389618e1b6e")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using BS.Shared.Extensions;
namespace TemplateNeuKunde.Reporting
{
public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
{
//Wenn halbe Feiertage konfiguriert werden sollen, muss diese Methode auch im VacationService einkommentiert werden
//public override decimal GetFeiertagsFaktor(DateTime start)
//{
// if (start.Month == 12)
// {
// if (start.Day == 24 || start.Day == 31)
// {
// return 0.5m;
// }
// }
// return base.GetFeiertagsFaktor(start);
//}
}
}

View File

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.DefaultReports;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using DevExpress.XtraReports.UI;
namespace BBIRheinSieg.Reporting
{
public class CustomReportCreator : DefaultReportCreator
{
public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende)
{
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay, serviceCategoryOid, true, nurFehlende);
return CreateServiceOverviewReportForROs(lROs, orgaOid);
}
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
return CreateServiceOverviewReportForROs(new List<ServicesOverviewRO> { ro }, orgaOid);
}
}
}

View File

@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;
namespace TemplateNeuKunde.Service
{
//public class CustomHomeContentGenerator : HomeContentGenerator
//{
//Einkommentieren um Geburtstage auszublenden
// public override List<CompactPersonDC> GetPersonsHavingBirthday(DateTime birthdayUntil)
// {
// return new List<CompactPersonDC>();
// List<CompactPersonDC> alle = base.GetPersonsHavingBirthday(birthdayUntil);
// List<CompactPersonDC> nurMitarbeiter = new List<CompactPersonDC>();
// foreach (var compactPersonDc in alle)
// {
// if (compactPersonDc.PersonType == PersonType.Employee)
// {
// nurMitarbeiter.Add(compactPersonDc);
// }
// }
// return nurMitarbeiter;
// }
//}
}

View File

@@ -0,0 +1,45 @@
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.DataContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace TemplateNeuKunde.Service
{
//public class CustomVacationService : VacationService
//{
// //public override string Bundesland { get => "Bayern"; }
// // public override List<FeiertagDC> GetFeiertage(int year, String bundesland)
// // {
// // List<FeiertagDC> list = base.GetFeiertage(year, bundesland);
// // list.Add(new FeiertagDC { Datum = new DateTime(year, 12, 31), Name = "Silvester" });
// // return list;
// // }
// //Wenn halbe Feiertage konfiguriert werden sollen, muss diese Methode auch in CustomMitarbeiterstundenkontoBerechnung einkommentiert werden
// //public override decimal GetFeiertagsFaktor(DateTime start)
// //{
// // if (start.Month == 12)
// // {
// // if (start.Day == 24 || start.Day == 31)
// // {
// // return 0.5m;
// // }
// // }
// // return base.GetFeiertagsFaktor(start);
// //}
//}
}

View File

@@ -0,0 +1,93 @@
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BeWo.Service.SBD;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace BBIRheinSieg.Service
{
public class CustomVertretungsManager : VertretungsManager
{
public override List<CompactVertreterEmployeeDC> SucheVertreter(VertreterSucheFilterDC filter)
{
var vertretungsListe = CreateVertretungsListe(filter.StartDate, filter.EndDate);
// EmployeeOids der Mitarbeiter, die einen abwesenden Mitarbeiter vertreten
var alleZugewiesenenVertreterEmpOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
vertretungsItem.Vertreter != null &&
vertretungsItem.Vertreter.ActivationType == ActivationTypeId.Active).Select(item => item.Vertreter.EmployeeOid).ToList();
// EmployeeOids von abwesenden Mitarbeitern
var abwesenendeEmployeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
vertretungsItem.Employee != null).Select(item => item.Employee.EmployeeOid);
var team = DAOFactory.GenericDAO.GetAllActive<Team>().Where(t => t.Name == "Vertretungsplanung").FirstOrDefault();
if (team != null)
{
var list = new List<CompactVertreterEmployeeDC>();
var allEmps = team.MemberList;
var empsInResult = new List<Employee>();
foreach (var emp in allEmps)
{
if (!alleZugewiesenenVertreterEmpOids.Contains(emp.Oid.Value) && !abwesenendeEmployeeOids.Contains(emp.Oid.Value) && !IsAbwesend(emp, filter.StartDate, filter.EndDate))
{
empsInResult.Add(emp);
var dc = MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDC(emp);
list.Add(dc);
}
}
//Füge alle Employees zu, deren Kind krank sind
var schonVorhandeneEmps = empsInResult.Select(e => e.Oid.Value).ToList();
var employeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.Employee != null &&
vertretungsItem.VertretungsStatus == VertretungsStatus.KlientKrank && !schonVorhandeneEmps.Contains(vertretungsItem.Employee.EmployeeOid)).Select(s => s.Employee.EmployeeOid).Distinct().ToList();
if (employeeOids.Count > 0)
{
var weitereEmps = DAOFactory.GenericDAO.LoadByIDs<Employee>(employeeOids);
list.AddRange(MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDCs(weitereEmps));
}
return list;
}
return base.SucheVertreter(filter);
}
private bool IsAbwesend(Employee emp, DateTime startDate, DateTime endDate)
{
foreach (var at in emp.AbsenceTimes)
{
if (at.Start <= startDate && (!at.End.HasValue || at.End >= endDate))
{
return true;
}
}
return false;
}
}
}

View File

@@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace TemplateNeuKunde.Validation
{
//public class DefaultSaveInterceptor : SaveInterceptor
// {
// public override string AllowSaveCustomer(CustomerDC c)
// {
// if (c.CustomerOid.HasValue)
// {
// return null;
// }
// if (!c.DateOfBirth.HasValue)
// {
// return "Bitte geben Sie ein Geburtsdatum an.";
// }
// if (!String.IsNullOrWhiteSpace(c.FirstName) && !String.IsNullOrWhiteSpace(c.LastName) && c.DateOfBirth.HasValue)
// {
// var duplicates = DAOFactory.SearchDAO.FindCustomer(c.FirstName, c.LastName, c.DateOfBirth.Value);
// if (duplicates != null && duplicates.Count > 0)
// {
// var dc = duplicates[0];
// String archiviert = "";
// if (dc.Person.Sex.HasValue && dc.Person.Sex.Value == Sex.Female)
// {
// if (dc.IsActive == ActivationTypeId.Archived)
// {
// archiviert = "archivierte ";
// }
// return String.Format(
// "Es gibt bereits eine {3}Klientin {0} {1}, geb. am {2:dd.MM.yyyy}.", dc.Person.FirstName, dc.Person.LastName, dc.Person.DateOfBirth, archiviert);
// }
// else
// {
// if (dc.IsActive == ActivationTypeId.Archived)
// {
// archiviert = "archivierten ";
// }
// return String.Format(
// "Es gibt bereits einen {3}Klienten {0} {1}, geb. am {2:dd.MM.yyyy}.", dc.Person.FirstName, dc.Person.LastName, dc.Person.DateOfBirth, archiviert);
// }
// }
// }
// return base.AllowSaveCustomer(c);
// }
// }
}

View File

@@ -0,0 +1,113 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.DataContracts;
namespace TemplateNeuKunde.Statistics
{
//public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory
// {
// public override ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate)
// {
// var stats = CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate);
// var dc = new ServiceRecordStatisticsInfoDC();
// dc.Header = new string[4];
// dc.Header[0] = "Bewilligungszeitraum:";
// dc.Header[1] = "Geleistet diesen Monat/Gesamt:";
// dc.Header[2] = "Bewilligt diesen Monat/Gesamt:";
// dc.Header[3] = "Frei diesen Monat/Gesamt:";
// dc.ForegroundColor = new string[4];
// dc.ForegroundColor[0] = "#FF2B508B";
// dc.ForegroundColor[1] = "#FF2B508B";
// dc.ForegroundColor[2] = "#FF2B508B";
// dc.ForegroundColor[3] = "#FF2B508B";
// dc.PeriodStatisticInfos = new List<ServiceRecordPeriodStatisticsInfoDC>();
// if (stats != null)
// {
// if (stats.PeriodStatistics.Count > 1 && !TimeSpanIsEqual(stats))
// dc.PeriodStatisticInfos.Add(CreateTotalStatistics(stats, statisticsDate));
// foreach (var pdc in stats.PeriodStatistics)
// {
// dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, pdc, statisticsDate));
// }
// }
// return dc;
// }
// public ServiceRecordPeriodStatisticsInfoDC CreateTotalStatistics(SupportConceptStatisticsDC stats, DateTime statisticsDate)
// {
// var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4);
// dc.LeftValues[0] = "Gesamt";
// dc.LeftValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedThisMonth / 60);
// dc.RightValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedTotalRounded / 60);
// dc.LeftValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedPerMonth / 60);
// dc.RightValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedTotal / 60);
// dc.LeftValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedPerMonth - stats.MinutesProvidedThisMonth) / 60);
// dc.RightValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedTotal - stats.MinutesProvidedTotalRounded) / 60);
// return dc;
// }
// public ServiceRecordPeriodStatisticsInfoDC CreateServiceRecordPeriodStatisticsInfo(SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate)
// {
// var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4);
// if (periodStats.SupportConceptApprovalPeriod != null)
// {
// if (periodStats.SupportConceptApprovalPeriod.ServiceCategory != null)
// {
// dc.LeftValues[0] = String.Format("{0}: {1:dd.MM.yy} - {2:dd.MM.yy}",
// periodStats.SupportConceptApprovalPeriod.ServiceCategory.Name,
// periodStats.SupportConceptApprovalPeriod.StartDate,
// periodStats.SupportConceptApprovalPeriod.EndDate);
// }
// else
// {
// dc.LeftValues[0] = String.Format("{0:dd.MM.yy} - {1:dd.MM.yy}",
// periodStats.SupportConceptApprovalPeriod.StartDate,
// periodStats.SupportConceptApprovalPeriod.EndDate);
// }
// }
// dc.LeftValues[1] = String.Format("{0:0.00}", periodStats.MinutesProvidedThisMonth / 60);
// dc.RightValues[1] = String.Format("{0:0.00}", periodStats.MinutesProvidedTotalRounded / 60);
// dc.LeftValues[2] = String.Format("{0:0.00}", periodStats.MinutesApprovedPerMonth / 60);
// dc.RightValues[2] = String.Format("{0:0.00}", periodStats.MinutesApprovedTotal / 60);
// dc.LeftValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedPerMonth - periodStats.MinutesProvidedThisMonth) / 60);
// dc.RightValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotalRounded) / 60);
// return dc;
// }
// public override decimal GetApprovedMinutesPerMonth(SupportConceptPeriodStatisticsDC periodStats)
// {
// if (periodStats.SupportConceptApprovalPeriod != null && periodStats.SupportConceptApprovalPeriod.StartDate.HasValue && periodStats.SupportConceptApprovalPeriod.EndDate.HasValue)
// {
// if (periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Monthly)
// {
// return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 60;
// }
// }
// return base.GetApprovedMinutesPerMonth(periodStats);
// }
// }
}

View File

@@ -0,0 +1,87 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
namespace TemplateNeuKunde.Validation
{
//public class CustomServiceRecordValidator : ServiceRecordValidator
//{
// public override string[] GetIgnoreCategoriesForOverlappingCheck()
// {
// return new[] { "Arbeitszeiterfassung" };
// }
// public override List<ServiceRecordValidationResultDC> ValidateServiceRecord(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics,
// int maxDaysEditServiceRecordsAllowed, IList<long> employeeOids, IList<long> cb2scOids)
// {
// var list = base.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids);
// if (newServiceRecord.ServiceDescription.Category.IsBillable && newServiceRecord.RoundedDuration == 0)
// {
// list.Add(new ServiceRecordValidationResultDC
// {
// ResultType = ServiceRecordValidationResult.Custom,
// Message = "Die Dauer muss größer als 0 sein."
// });
// }
// var sd = newServiceRecord.ServiceDescription.Name.ToLower();
// var cat = newServiceRecord.ServiceDescription.Category.Name.ToLower();
// if (cat.Contains("arztbesuch") ||
// cat.Contains("krank") ||
// cat.Contains("fortbildung") ||
// cat.Contains("urlaub") ||
// cat.Contains("indirekte zeiten") ||
// (cat.Contains("betrieb") && cat.Contains("zeiten")))
// {
// if (sd.Contains("abwesend"))
// {
// list.Add(new ServiceRecordValidationResultDC
// {
// ResultType = ServiceRecordValidationResult.Custom,
// Message = "Dieser Eintrag kann nur von Fachleitungen oder Bereichsleitungen angelegt werden."
// });
// }
// }
// bool hasZukunftResult = false;
// foreach (var r in list)
// {
// if (r.ResultType == ServiceRecordValidationResult.Custom && r.Message.Contains("Zukunft"))
// {
// hasZukunftResult = true;
// }
// }
// if (!hasZukunftResult)
// {
// if (newServiceRecord.End.Value > DateTime.Now.AddMinutes(20))
// {
// list.Add(new ServiceRecordValidationResultDC
// {
// ResultType = ServiceRecordValidationResult.Custom,
// Message = "Das gewählte Datum darf nicht in der Zukunft liegen."
// });
// }
// }
// return list;
// }
// }
}

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Iesi.Collections" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.4000" newVersion="4.0.0.4000" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.3.0" newVersion="4.1.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.1.0" newVersion="2.5.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.4000" newVersion="3.1.0.4000" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -144,6 +144,7 @@
<Compile Include="Teamstundenkonto.designer.cs">
<DependentUpon>Teamstundenkonto.cs</DependentUpon>
</Compile>
<Compile Include="Validation\ServiceRecordValidator.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Export\QueryListReport.resx">

View File

@@ -100,7 +100,7 @@ namespace BeWo.ChristopherusHaus.Export
}
if (span < spanOrg)
{
var betragTag = (double)row[1] / 7;
var betragTag = betrag / 7;
betrag = betragTag * span.TotalDays;
}
else
@@ -241,7 +241,7 @@ namespace BeWo.ChristopherusHaus.Export
INNER JOIN `customer` c ON sc.`CustomerOid` = c.`Oid`
INNER JOIN `person` p on c.`PersonOid` = p.`Oid`
WHERE c.`IsActive` = 1 AND sc.`IsActive` <> 0 and (org.Name = 'LVR' OR org.Name = 'LWL')
AND scap.Notice = 'Pooling' AND scap.EndDate >= ':Monat_Start' AND scap.Start <= ':Monat_End' and (org.Name = 'LVR' OR org.Name = 'LWL'))
AND scap.Notice = 'Pooling' AND scap.EndDate >= ':Monat_Start' AND scap.Start < ':Monat_End' and (org.Name = 'LVR' OR org.Name = 'LWL'))
)qry
GROUP BY qry.OID
ORDER BY qry.Verwendung

View File

@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Service.Plugins;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace ChristopherusHaus.Validation
{
public class CustomServiceRecordValidator : ServiceRecordValidator
{
public override List<ServiceRecordValidationResultDC> ValidateServiceRecord(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics, int maxDaysEditServiceRecordsAllowed, IList<long> employeeOids, IList<long> cb2scOids)
{
var validation = base.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids);
// Prüfen, ob beim Speichern der Doku das Dokufeld "Quittierungsbeleg" eingetragen ist, wenn Leistungskategorie "Direkte Betreuung" ist.
if (newServiceRecord.ServiceDescription.Category.Abbreviation.ToLower().Contains("fls")
&& (newServiceRecord.ServiceDescription.Name.ToLower().Contains("betreuung in der wohnung") ||
newServiceRecord.ServiceDescription.Name.ToLower().Contains("betreuung außerhalb der wohnung") ||
newServiceRecord.ServiceDescription.Name.ToLower().Contains("telefonkontakt")) &&
newServiceRecord.Notice4.IsNullOrEmpty())
{
validation.Add(new ServiceRecordValidationResultDC()
{
Allow = false,
EmployeeName = newServiceRecord.Employee.LastName + ", " + newServiceRecord.Employee.FirstName,
StartDate = newServiceRecord.Start.Value,
EndDate = newServiceRecord.End.Value,
ResultType = ServiceRecordValidationResult.Custom,
Message = "Bei der gewählten Leistung ist Quittierungsbeleg ein Pflichtfeld, bitte füllen Sie dieses aus."
});
}
return validation;
}
}
}

View File

@@ -1,125 +1,135 @@
<?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>{C6EB0254-6FCB-4143-BC33-73168E836FF8}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EndartFabrik</RootNamespace>
<AssemblyName>1654847818_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>..\..\CustomerDlls\</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>..\..\CustomerDlls\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Drawing.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Office.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Export, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Xpo.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v23.2, Version=23.2.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="InvoiceCustomerReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="InvoiceCustomerReport.Designer.cs">
<DependentUpon>InvoiceCustomerReport.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\SettlementInvoiceCreation.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</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="Translation\TranslationDictionary.cs" />
</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="InvoiceCustomerReport.resx">
<DependentUpon>InvoiceCustomerReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="ServiceInvoiceReport.resx">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport2.resx">
<DependentUpon>SettlementReport2.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</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>{C6EB0254-6FCB-4143-BC33-73168E836FF8}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EndartFabrik</RootNamespace>
<AssemblyName>1654847818_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>..\..\CustomerDlls\</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>..\..\CustomerDlls\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Drawing.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Office.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v23.2.Export, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Xpo.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v23.2, Version=23.2.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="InvoiceCustomerReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="InvoiceCustomerReport.Designer.cs">
<DependentUpon>InvoiceCustomerReport.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\SettlementInvoiceCreation.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<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="Translation\TranslationDictionary.cs" />
</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="InvoiceCustomerReport.resx">
<DependentUpon>InvoiceCustomerReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<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>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,135 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Text.RegularExpressions;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Core;
using DevExpress.XtraReports.UI;
namespace EndartFabrik
{
public partial class Quittierungsbeleg : XtraReport, IBeWoReport<ServicesOverviewRO>
{
public Quittierungsbeleg()
{
InitializeComponent();
}
public void SetReportDataSource(ServicesOverviewRO pRO)
{
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") || sd.ServiceCategory.ToLower().Contains("fehlkontakt"))
{
ServicesOverviewRO.CreateSignatureString(sd);
sd.Notice5 = "E";
if (sd.IsGroup)
{
sd.Notice5 = "GR";
hatGruppen = true;
}
if (sd.ServiceDescription.ToLower().Contains("fehlkontakt") || sd.ServiceCategory.ToLower().Contains("fehlkontakt") || (sd.ProzentAbrechenbar < 100))
{
sd.Notice5 = "F";
}
servicesBillable.Add(sd);
}
}
pRO.Services = servicesBillable;
}
if (String.IsNullOrWhiteSpace(pRO.AbsenceTimes))
{
lblHatAbwesenheiten.Text = "X";
}
if (!hatGruppen)
{
lblHatGruppen.Text = "X";
}
ErstelleAbwesenheitenTabelle(pRO);
bindingSource1.DataSource = pRO;
}
private void ErstelleAbwesenheitenTabelle(ServicesOverviewRO pRo)
{
if (pRo.Abwesenheiten != null)
{
int newRows = 0;
int index = 1;
foreach (var at in pRo.Abwesenheiten)
{
DevExpress.XtraReports.UI.XRTableRow row = null;
if (index < xrTableAbwesenheiten.Rows.Count)
{
row = xrTableAbwesenheiten.Rows[index];
}
else
{
row = xrTableAbwesenheiten.InsertRowBelow(xrTableAbwesenheiten.Rows[xrTableAbwesenheiten.Rows.Count - 1]);
newRows++;
}
row.Cells[0].Text = String.Format("{0:dd.MM.yyyy}", at.Start);
int? days = null;
if (at.End.HasValue)
{
row.Cells[1].Text = String.Format("{0:dd.MM.yyyy}", at.End);
days = (int)at.End.Value.Subtract(at.Start.Value).TotalDays + 1;
}
else
{
row.Cells[1].Text = "unbekannt";
}
row.Cells[2].Text = String.Format("{0:0}", days);
index++;
}
if (newRows > 0)
{
lblUnterschriftKlient.Top += newRows * 20;
lblUnterschriftMitarbeiter.Top += newRows * 20;
}
}
}
private void picSignature_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e)
{
XRPictureBox xrBox = sender as XRPictureBox;
string base64String = xrBox.Tag as string;
if (!String.IsNullOrWhiteSpace(base64String))
{
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binData = Convert.FromBase64String(base64Data);
Image img = ByteArrayToImage(binData);
xrBox.Image = Utils.CropImage(img);
}
else
{
xrBox.Image = null;
}
}
public Image ByteArrayToImage(byte[] byteArrayIn)
{
using(var memoryStream = new MemoryStream(byteArrayIn))
{
return Image.FromStream(memoryStream);
}
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,19 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared.DataContracts;
using DevExpress.XtraReports.UI;
namespace HshCologne
{
public class CustomReportCreator : DefaultReportCreator
{
using DevExpress.XtraReports.UI;
namespace HshCologne
{
public class CustomReportCreator : DefaultReportCreator
{
public override XtraReport CreateServiceInvoiceReport(string dcIds, long? invoiceBaseOid)
{
if (String.IsNullOrEmpty(dcIds) && invoiceBaseOid.HasValue)
@@ -91,173 +91,173 @@ namespace HshCologne
public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay);
if (lROs.Count > 0)
{
var rootReport = CreateServicesOverviewReportForRo(lROs[0], serviceCategoryOid);
rootReport.CreateDocument();
for (int i = 1; i < lROs.Count; i++)
{
var lNext = CreateServicesOverviewReportForRo(lROs[i], serviceCategoryOid);
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
return rootReport;
}
return new XtraReport();
}
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
return CreateServicesOverviewReportForRo(ro, serviceCategoryOid);
public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay);
if (lROs.Count > 0)
{
var rootReport = CreateServicesOverviewReportForRo(lROs[0], serviceCategoryOid);
rootReport.CreateDocument();
for (int i = 1; i < lROs.Count; i++)
{
var lNext = CreateServicesOverviewReportForRo(lROs[i], serviceCategoryOid);
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
return rootReport;
}
return new XtraReport();
}
public override XtraReport CreateServiceOverviewReportForCustomers(IList<long> customerOids, int month, int year, long? orgaOid, long? empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende)
{
var roList = new List<ServicesOverviewRO>();
foreach (var coid in customerOids)
{
var ro = ServicesOverviewRO.Create(coid, month, year, true, orgaOid ?? 0, empOid ?? 0, startDay, endDay, serviceCategoryOid);
if (ro != null)
{
roList.Add(ro);
}
}
if (roList.Count > 0)
{
var rootReport = CreateServicesOverviewReportForRo(roList[0], serviceCategoryOid);
rootReport.CreateDocument();
for (int i = 1; i < roList.Count; i++)
{
var lNext = CreateServicesOverviewReportForRo(roList[i], serviceCategoryOid);
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
return rootReport;
}
return new XtraReport();
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
return CreateServicesOverviewReportForRo(ro, serviceCategoryOid);
}
public override XtraReport CreateServiceOverviewReportForCustomers(IList<long> customerOids, int month, int year, long? orgaOid, long? empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende)
{
var roList = new List<ServicesOverviewRO>();
foreach (var coid in customerOids)
{
var ro = ServicesOverviewRO.Create(coid, month, year, true, orgaOid ?? 0, empOid ?? 0, startDay, endDay, serviceCategoryOid);
if (ro != null)
{
roList.Add(ro);
}
}
if (roList.Count > 0)
{
var rootReport = CreateServicesOverviewReportForRo(roList[0], serviceCategoryOid);
rootReport.CreateDocument();
for (int i = 1; i < roList.Count; i++)
{
var lNext = CreateServicesOverviewReportForRo(roList[i], serviceCategoryOid);
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
return rootReport;
}
return new XtraReport();
}
private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
XtraReport report = null;
ServicesOverviewRO bewoRo = CopyFromRO(ro);
ServicesOverviewRO spfhRo = CopyFromRO(ro);
ServicesOverviewRO sbdRo = CopyFromRO(ro);
if (ro.Services != null)
{
foreach (ServicesOverviewRO.ServiceDetail s in ro.Services)
{
if (s.ServiceCategory.ToLower().Contains("familien"))
{
spfhRo.Services.Add(s);
}
else if (s.ServiceCategory.ToLower().Contains("schulbegleitung"))
{
sbdRo.Services.Add(s);
}
else
{
bewoRo.Services.Add(s);
}
}
}
report = AddReportToReport(report, new Quittierungsbeleg2(), bewoRo);
report = AddReportToReport(report, new LeistungsnachweisFamilienhilfe(), spfhRo);
report = AddReportToReport(report, new LeistungsnachweisSchulbegleitung(), sbdRo);
//report = AddReportToReport(report, eingliederungshilfe);
if (report == null)
report = new XtraReport();
return report;
}
private XtraReport AddReportToReport(XtraReport masterReport, IBeWoReport<ServicesOverviewRO> newReport, ServicesOverviewRO ro)
{
if (ro.Services.Count > 0)
{
newReport.SetReportDataSource(ro);
((XtraReport)newReport).CreateDocument();
if (masterReport == null)
{
masterReport = newReport as XtraReport;
}
else
{
if (masterReport.Pages.Count == 0)
{
masterReport.CreateDocument();
}
masterReport.Pages.AddRange(((XtraReport)newReport).Pages);
}
}
return masterReport;
}
private ServicesOverviewRO CopyFromRO(ServicesOverviewRO ro)
{
ServicesOverviewRO newRo = new ServicesOverviewRO();
newRo.StartDate = ro.StartDate;
newRo.Abwesenheiten = ro.Abwesenheiten;
newRo.AbsenceTimes = ro.AbsenceTimes;
newRo.ApprovedEndDate = ro.ApprovedEndDate;
newRo.ApprovedFLSPerMonth = ro.ApprovedFLSPerMonth;
newRo.ApprovedFLSPerMonthTotal = ro.ApprovedFLSPerMonthTotal;
newRo.ApprovedFLSPerWeek = ro.ApprovedFLSPerWeek;
newRo.ApprovedFLSPerWeekTotal = ro.ApprovedFLSPerWeekTotal;
newRo.ApprovedFLSTotal = ro.ApprovedFLSTotal;
newRo.ApprovedStartDate = ro.ApprovedStartDate;
newRo.ContactEmployee = ro.ContactEmployee;
newRo.CostBearer2SupportConceptList = ro.CostBearer2SupportConceptList;
newRo.Costbearer = ro.Costbearer;
newRo.CustomerBirthday = ro.CustomerBirthday;
newRo.CustomerLastName = ro.CustomerLastName;
newRo.CustomerCity = ro.CustomerCity;
newRo.CustomerFirstName = ro.CustomerFirstName;
newRo.CustomerName = ro.CustomerName;
newRo.CustomerPostalCode = ro.CustomerPostalCode;
newRo.CustomerStreet = ro.CustomerStreet;
newRo.EndDate = ro.EndDate;
newRo.FreeMinutesThisMonth = ro.FreeMinutesThisMonth;
newRo.Month = ro.Month;
newRo.Year = ro.Year;
newRo.MainAttendant = ro.MainAttendant;
newRo.MainAttendantCommaSeperated = ro.MainAttendantCommaSeperated;
newRo.ReferenceNumber = ro.ReferenceNumber;
newRo.TotalFLMBillable = ro.TotalFLMBillable;
newRo.TotalFLM = ro.TotalFLM;
newRo.TotalFLMQualified = ro.TotalFLMQualified;
newRo.TotalFLMUnqualified = ro.TotalFLMUnqualified;
newRo.TotalFLS = ro.TotalFLS;
newRo.TotalFLSQualified = ro.TotalFLSQualified;
newRo.TotalFLSUnqualified = ro.TotalFLSUnqualified;
newRo.TotalFLSPerCostBearer = ro.TotalFLSPerCostBearer;
newRo.TotalGefahreneKilometer = ro.TotalGefahreneKilometer;
newRo.SupportConceptCostBearer = ro.SupportConceptCostBearer;
newRo.Mandator = ro.Mandator;
newRo.CustomerOid = ro.CustomerOid;
newRo.AllEmployees = ro.AllEmployees;
return newRo;
}
}
}
private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
XtraReport report = null;
ServicesOverviewRO bewoRo = CopyFromRO(ro);
ServicesOverviewRO spfhRo = CopyFromRO(ro);
ServicesOverviewRO sbdRo = CopyFromRO(ro);
if (ro.Services != null)
{
foreach (ServicesOverviewRO.ServiceDetail s in ro.Services)
{
if (s.ServiceCategory.ToLower().Contains("familien"))
{
spfhRo.Services.Add(s);
}
else if (s.ServiceCategory.ToLower().Contains("schulbegleitung"))
{
sbdRo.Services.Add(s);
}
else
{
bewoRo.Services.Add(s);
}
}
}
report = AddReportToReport(report, new Quittierungsbeleg2(), bewoRo);
report = AddReportToReport(report, new LeistungsnachweisFamilienhilfe(), spfhRo);
report = AddReportToReport(report, new LeistungsnachweisSchulbegleitung(), sbdRo);
//report = AddReportToReport(report, eingliederungshilfe);
if (report == null)
report = new XtraReport();
return report;
}
private XtraReport AddReportToReport(XtraReport masterReport, IBeWoReport<ServicesOverviewRO> newReport, ServicesOverviewRO ro)
{
if (ro.Services.Count > 0)
{
newReport.SetReportDataSource(ro);
((XtraReport)newReport).CreateDocument();
if (masterReport == null)
{
masterReport = newReport as XtraReport;
}
else
{
if (masterReport.Pages.Count == 0)
{
masterReport.CreateDocument();
}
masterReport.Pages.AddRange(((XtraReport)newReport).Pages);
}
}
return masterReport;
}
private ServicesOverviewRO CopyFromRO(ServicesOverviewRO ro)
{
ServicesOverviewRO newRo = new ServicesOverviewRO();
newRo.StartDate = ro.StartDate;
newRo.Abwesenheiten = ro.Abwesenheiten;
newRo.AbsenceTimes = ro.AbsenceTimes;
newRo.ApprovedEndDate = ro.ApprovedEndDate;
newRo.ApprovedFLSPerMonth = ro.ApprovedFLSPerMonth;
newRo.ApprovedFLSPerMonthTotal = ro.ApprovedFLSPerMonthTotal;
newRo.ApprovedFLSPerWeek = ro.ApprovedFLSPerWeek;
newRo.ApprovedFLSPerWeekTotal = ro.ApprovedFLSPerWeekTotal;
newRo.ApprovedFLSTotal = ro.ApprovedFLSTotal;
newRo.ApprovedStartDate = ro.ApprovedStartDate;
newRo.ContactEmployee = ro.ContactEmployee;
newRo.CostBearer2SupportConceptList = ro.CostBearer2SupportConceptList;
newRo.Costbearer = ro.Costbearer;
newRo.CustomerBirthday = ro.CustomerBirthday;
newRo.CustomerLastName = ro.CustomerLastName;
newRo.CustomerCity = ro.CustomerCity;
newRo.CustomerFirstName = ro.CustomerFirstName;
newRo.CustomerName = ro.CustomerName;
newRo.CustomerPostalCode = ro.CustomerPostalCode;
newRo.CustomerStreet = ro.CustomerStreet;
newRo.EndDate = ro.EndDate;
newRo.FreeMinutesThisMonth = ro.FreeMinutesThisMonth;
newRo.Month = ro.Month;
newRo.Year = ro.Year;
newRo.MainAttendant = ro.MainAttendant;
newRo.MainAttendantCommaSeperated = ro.MainAttendantCommaSeperated;
newRo.ReferenceNumber = ro.ReferenceNumber;
newRo.TotalFLMBillable = ro.TotalFLMBillable;
newRo.TotalFLM = ro.TotalFLM;
newRo.TotalFLMQualified = ro.TotalFLMQualified;
newRo.TotalFLMUnqualified = ro.TotalFLMUnqualified;
newRo.TotalFLS = ro.TotalFLS;
newRo.TotalFLSQualified = ro.TotalFLSQualified;
newRo.TotalFLSUnqualified = ro.TotalFLSUnqualified;
newRo.TotalFLSPerCostBearer = ro.TotalFLSPerCostBearer;
newRo.TotalGefahreneKilometer = ro.TotalGefahreneKilometer;
newRo.SupportConceptCostBearer = ro.SupportConceptCostBearer;
newRo.Mandator = ro.Mandator;
newRo.CustomerOid = ro.CustomerOid;
newRo.AllEmployees = ro.AllEmployees;
return newRo;
}
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Core;
using BeWo.Service.Plugins;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using Utils = BS.Shared.Core.Utils;
namespace HshCologne.Export
{
public class CustomDataExporter : DataExporter
{
public override QueryDC CreateQuery(QueryDC query)
{
return FibuExporter.CreateQuery(query);
}
}
}

View File

@@ -0,0 +1,135 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
namespace HshCologne.Export
{
public class FibuExporter
{
public static QueryDC CreateQuery(QueryDC query)
{
DateTime dt = DateTime.Now;
DateTime.TryParse(query.Parameter[0].Value.ToString(), out dt);
query.FileName = String.Format("Fibu Export {0:yyyyMM}.csv", dt);
query.QueryResult = GetAbrechnungenString(dt);
return query;
}
public static String GetAbrechnungenString(DateTime date)
{
//geklaut von SKFLeverkusen Jugendhilfe, sollte Sammelrechnung nötig sein, von da wiederholen
StringBuilder sb = new StringBuilder();
sb.AppendLine("Umsatz Euro;BU Gkto;Beleg1;Beleg2;Datum;Konto;Buchungstext");
var s = GetMonatlicheRechnungenString(date);
if (!String.IsNullOrWhiteSpace(s))
{
if (sb.Length > 0)
sb.AppendLine();
sb.Append(s);
}
return sb.ToString();
}
public static String GetMonatlicheRechnungenString(DateTime date)
{
/*
sip.Claim,
c.DebitorNumber,
ib.InvoiceDate,
ib.invoicenumber,
c.CostCenter,
c2s.Oid,
ib.InvoiceId
*/
//sb.AppendLine("Belegdatum;Belegnummer;Debitorennummer;Kontonummer;Betrag;Buchungstext;Kostenstelle");
//"Datum;Konto;Gegenkonto;Buchungstext;Belegfeld1;Umsatz Soll;Kostenstelle"
//sb.AppendLine("Umsatz Euro;BU Gkto;Beleg1;Beleg2;Datum;Konto;Buchungstext");
var sql = GetMonatlicheRechnungenSql(date);
var dt = ExecuteQuery(sql, date);
StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
if (sb.Length > 0)
{
sb.AppendLine();
}
DateTime lastDate = new DateTime(date.Year, date.Month, 1);
lastDate = lastDate.AddMonths(1).AddDays(-1);
sb.Append(String.Format("{0:0.00}", row[0]));
sb.Append(";");
sb.Append("4100"); // Erlöskonto
sb.Append(";");
sb.Append(String.Format("{0}", row[3])); // Belegfeld 1
sb.Append(";");
sb.Append(String.Format("{0}", row[4])); // Belegfeld 2
sb.Append(";");
sb.Append(String.Format("{0:dd.MM.yyyy}", lastDate));
sb.Append(";");
sb.Append(String.Format("{0}", row[1])); // Debitor Organisation
sb.Append(";");
sb.Append(String.Format("{0}", row[5])); // Buchungstext
}
return sb.ToString();
}
private static String GetMonatlicheRechnungenSql(DateTime date)
{
String sql = @"
select
sip.Claim,
org.DebitorNumber,
ib.InvoiceDate,
ib.invoicenumber,
org.Name,
CONCAT('Abrechnung ', p.`LastName`, ' ', p.`FirstName`),
ib.InvoiceId
from
person p
inner join customer c on c.personoid = p.oid
inner join supportconcept sc on sc.customeroid = c.oid
inner join costbearer2supportconcept c2s on c2s.supportconceptoid = sc.oid
inner join `costbearer` cb on c2s.`CostBearerOid` = cb.`Oid`
inner join `organisation` org on org.`CostBearerOid` = cb.`Oid`
inner join invoicebase ib on ib.costbearer2supportconceptoid = c2s.oid
inner join serviceinvoice si on si.invoicebaseoid = ib.oid
inner join serviceinvoiceperiod sip on sip.serviceinvoiceoid = si.oid
WHERE ib.`AccountingPeriodEnd` >= ':Monat_Start' AND ib.`AccountingPeriodEnd` < ':Monat_End' and ib.IsActive = 1 AND ib.`IsExported` = 0
order by ib.invoicenumber
";
return sql;
}
public static DataTable ExecuteQuery(String sql, DateTime dt)
{
var newsql = sql;
newsql = newsql.Replace(":Abrechnungsmonat", String.Format("{0:dd.MM.yyyy}", dt));
newsql = newsql.Replace(":Belegnr", String.Format("{0:yyMM}", dt));
newsql = newsql.Replace(":Monat_MM", String.Format("{0:MM}", dt));
newsql = newsql.Replace(":Monat_Start", String.Format("{0:yyyy-MM}-01", dt));
dt = dt.AddMonths(1);
newsql = newsql.Replace(":Monat_End", String.Format("{0:yyyy-MM}-01", dt));
return DAOFactory.AdoDAO.ExecuteQuery(newsql).Tables[0];
}
}
}

View File

@@ -56,6 +56,8 @@
</ItemGroup>
<ItemGroup>
<Compile Include="CustomReportCreator.cs" />
<Compile Include="Export\CustomDataExporter.cs" />
<Compile Include="Export\FibuExporter.cs" />
<Compile Include="InvoiceCustomerReport.cs">
<SubType>Component</SubType>
</Compile>

View File

@@ -26,6 +26,33 @@ namespace HshCologne.Invoicing
private decimal preisAK2Jahre = 43.45m;
private decimal preisAK = 36.80m;
public override ServiceInvoice CreateSingleInvoice(int invoiceCounter, CostBearer costBearer, DateTimeSpan invoicePeriod, CompactSupportConceptDC supportConcept, List<ServiceRecordDC> serviceRecords)
{
if (supportConcept.IsApproved || !supportConcept.IsDeleted && !supportConcept.IsArchived) // Standard, außer dass auch nicht bewilligte abgerechnet werden
{
var invoice = new ServiceInvoice();
var supportConceptList = new List<CompactSupportConceptDC> { supportConcept };
SetSenderInformation(invoice);
SetInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConceptList);
SetSingleInvoiceBaseData(invoiceCounter, invoice, costBearer, invoicePeriod, supportConcept);
SetRecipientInformation(invoice, costBearer);
SetServiceInvoicePeriods(invoice, invoice.InvoiceBase.CostBearer2SupportConcept, invoicePeriod,
serviceRecords);
SetServiceInvoicePeriodAmounts(invoice);
// Spitzabrechnung
if (invoicePeriod == null)
{
SetAmountAdvancePayments(invoice);
SetAmountEquityContribution(invoice);
}
return invoice;
}
return null;
}
public override void SetInvoiceBaseData(int invoiceCounter, ServiceInvoice invoice, CostBearer costBearer, DateTimeSpan invoicePeriod,
IList<CompactSupportConceptDC> supportConceptList)
@@ -60,42 +87,57 @@ namespace HshCologne.Invoicing
ii.Notice = "x";
}
// Grundsätzlich Unterscheidung nach Fachkraft nur in Schulbegleitung, da diverse Kostenträger
// daher liegen den Stundensätze unter Preise
if (iServiceRecord.ServiceDescription.Category.Abbreviation.ToLower().Contains("sb") || iServiceRecord.CostBearer.Name.Contains("Wesseling"))
// Da diverse Kostenträger liegen deren Stundensätze unter Preise
// Während Wesseling und Geilenkirchen für ALLES nur einen Stundensatz haben
// Und Erftstadt macht sowieso ALLES anders :D
//if ( iServiceRecord.CostBearer.Name.Contains("Wesseling") || iServiceRecord.CostBearer.Name.Contains("Geilenkirchen")
// || iServiceRecord.CostBearer.Name.Contains("Erftstadt") || iServiceRecord.ServiceDescription.Category.Abbreviation.ToLower().Contains("sb") )
//{
decimal stundensatz = 0;
if (iServiceRecord.CostBearer.Name.Contains("Wesseling") || iServiceRecord.CostBearer.Name.Contains("Geilenkirchen"))
{
decimal stundensatz = 0;
if (iServiceRecord.CostBearer.Name.Contains("Wesseling"))
stundensatz = GetStundensatz(scap.CostBearer2SupportConcept, null, iServiceRecord.Start);
}
else if (iServiceRecord.Employee.ValueListEntries != null)
{
var qOid = iServiceRecord.Employee.ValueListEntries
.Where(i => i.Value == ValueListEntryType.StaffQualificationsType).Select(i => i.Key).OrderByDescending(q => q).ToList();
if (qOid != null && qOid.Count > 0)
{
stundensatz = GetStundensatz(scap.CostBearer2SupportConcept, iServiceRecord.Start);
}
if (iServiceRecord.ServiceDescription.Category.Abbreviation.ToLower().Contains("sb"))
{
var qOid = iServiceRecord.Employee.ValueListEntries
.Where(i => i.Value == ValueListEntryType.StaffQualificationsType)
.Select(i => i.Key)
.ToList();
foreach (var qualiOid in qOid)
var qualiOid = qOid.FirstOrDefault();
if (qualiOid == 1461)
{
if (qualiOid == 1461)
if (iServiceRecord.CostBearer.Name.Contains("Erftstadt"))
{
stundensatz = GetStundensatz(scap.CostBearer2SupportConcept, qualiOid, iServiceRecord.Start);
}
else
{
stundensatz = preisFK;
}
else if (qualiOid == 1462)
}
else if (qualiOid == 1462)
{
stundensatz = preisAK2Jahre;
ii.UnitDescription = "Assistenzkraft mit 2 jähriger BE";
}
else if (qualiOid == 1463)
{
if (iServiceRecord.CostBearer.Name.Contains("Erftstadt"))
{
stundensatz = GetStundensatz(scap.CostBearer2SupportConcept, qualiOid, iServiceRecord.Start);
}
else
{
stundensatz = preisAK2Jahre;
ii.UnitDescription = "Assistenzkraft mit 2 jähriger BE";
}
else if (qualiOid == 1463)
{
stundensatz = preisAK2Jahre;
ii.UnitDescription = "Assistenzkraft UMA Erftstadt";
}
else if (qualiOid == 1460)
{
stundensatz = preisAK2Jahre;
ii.UnitDescription = "Assistenzkraft";
}
ii.UnitDescription = "Assistenzkraft UMA Erftstadt";
}
else if (qualiOid == 1460)
{
stundensatz = preisAK2Jahre;
ii.UnitDescription = "Assistenzkraft";
}
}
if (stundensatz != 0)
@@ -108,13 +150,16 @@ namespace HshCologne.Invoicing
return ii;
}
private decimal GetStundensatz(CostBearer2SupportConcept c2s, DateTime? date)
private decimal GetStundensatz(CostBearer2SupportConcept c2s, long? vleOid, DateTime? date)
{
if (c2s.CostBearer.CostRatePeriods != null)
{
var crpList = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(c2s.CostBearer.CostRatePeriods);
var cp = crpList.GetCostRatePeriodForDate(CostRatePeriodType.HourlyRate, (DateTime)date);
if (vleOid != null)
{
cp = crpList.GetCostRatePeriodForDate(CostRatePeriodType.HourlyRate, (DateTime)date, vleOid.Value);
}
if (cp != null && cp.CostRateValue.HasValue)
{
return cp.CostRateValue.Value;

View File

@@ -1,33 +1,33 @@
using BeWo.Report.ReportObjects;
namespace HshCologne
{
partial class ServiceInvoiceReport
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
using BeWo.Report.ReportObjects;
namespace HshCologne
{
partial class ServiceInvoiceReport
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServiceInvoiceReport));
DevExpress.XtraReports.UI.XRSummary xrSummary1 = new DevExpress.XtraReports.UI.XRSummary();
@@ -53,7 +53,7 @@ namespace HshCologne
this.xrTableRow11 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell34 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell38 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell39 = new DevExpress.XtraReports.UI.XRTableCell();
this.lblHauptbetreuung = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell41 = new DevExpress.XtraReports.UI.XRTableCell();
this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
@@ -88,8 +88,8 @@ namespace HshCologne
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell46 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.xrSubreport1 = new DevExpress.XtraReports.UI.XRSubreport();
((System.ComponentModel.ISupportInitialize)(this.xrTable8)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable9)).BeginInit();
@@ -159,7 +159,7 @@ namespace HshCologne
this.xrLabel7.SizeF = new System.Drawing.SizeF(317F, 17F);
this.xrLabel7.StylePriority.UseBorders = false;
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.Text = "IFH Cologne GmbH * Schanzenstr. 36 / Gebäude 234 * 51063 Köln";
this.xrLabel7.Text = "IFH Cologne GmbH * Clevischer Ring 127* 51063 K<EFBFBD>ln";
//
// xrTable8
//
@@ -279,7 +279,7 @@ namespace HshCologne
this.xrTableCell29.StylePriority.UseTextAlignment = false;
this.xrTableCell29.Text = "ASD Mitarbeiter";
this.xrTableCell29.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell29.Weight = 0.77905536313123069D;
this.xrTableCell29.Weight = 0.90754546949586345D;
//
// xrTableCell30
//
@@ -294,7 +294,7 @@ namespace HshCologne
this.xrTableCell30.StylePriority.UseTextAlignment = false;
this.xrTableCell30.Text = "Bezugsbetreuung";
this.xrTableCell30.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell30.Weight = 1.5034105427763769D;
this.xrTableCell30.Weight = 1.374920436411744D;
//
// xrTableCell31
//
@@ -317,7 +317,7 @@ namespace HshCologne
this.xrTableRow11.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell34,
this.xrTableCell38,
this.xrTableCell39,
this.lblHauptbetreuung,
this.xrTableCell41});
this.xrTableRow11.Name = "xrTableRow11";
this.xrTableRow11.Weight = 1D;
@@ -343,7 +343,7 @@ namespace HshCologne
this.xrTableCell38.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell38.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CustomerCostCenter")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "RecipientContactPerson")});
this.xrTableCell38.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrTableCell38.Multiline = true;
this.xrTableCell38.Name = "xrTableCell38";
@@ -351,23 +351,20 @@ namespace HshCologne
this.xrTableCell38.StylePriority.UseFont = false;
this.xrTableCell38.StylePriority.UseTextAlignment = false;
this.xrTableCell38.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell38.Weight = 0.77905536313123058D;
this.xrTableCell38.Weight = 0.90754546949586334D;
//
// xrTableCell39
// lblHauptbetreuung
//
this.xrTableCell39.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
this.lblHauptbetreuung.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell39.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.Customer.MainAttendant")});
this.xrTableCell39.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrTableCell39.Multiline = true;
this.xrTableCell39.Name = "xrTableCell39";
this.xrTableCell39.StylePriority.UseBorders = false;
this.xrTableCell39.StylePriority.UseFont = false;
this.xrTableCell39.StylePriority.UseTextAlignment = false;
this.xrTableCell39.Text = "xrTableCell11";
this.xrTableCell39.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell39.Weight = 1.5034105427763771D;
this.lblHauptbetreuung.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.lblHauptbetreuung.Multiline = true;
this.lblHauptbetreuung.Name = "lblHauptbetreuung";
this.lblHauptbetreuung.StylePriority.UseBorders = false;
this.lblHauptbetreuung.StylePriority.UseFont = false;
this.lblHauptbetreuung.StylePriority.UseTextAlignment = false;
this.lblHauptbetreuung.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.lblHauptbetreuung.Weight = 1.3749204364117442D;
//
// xrTableCell41
//
@@ -413,7 +410,7 @@ namespace HshCologne
//
this.bottomMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable1});
this.bottomMarginBand1.HeightF = 50F;
this.bottomMarginBand1.HeightF = 59.6667F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// xrTable1
@@ -424,7 +421,7 @@ namespace HshCologne
this.xrTable1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96F);
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow1});
this.xrTable1.SizeF = new System.Drawing.SizeF(650F, 50F);
this.xrTable1.SizeF = new System.Drawing.SizeF(650F, 57F);
this.xrTable1.StylePriority.UseFont = false;
//
// xrTableRow1
@@ -436,7 +433,7 @@ namespace HshCologne
this.xrTableRow1.Font = new DevExpress.Drawing.DXFont("Calibri", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.StylePriority.UseFont = false;
this.xrTableRow1.Weight = 2D;
this.xrTableRow1.Weight = 2.2800000000000002D;
//
// xrTableCell1
//
@@ -444,8 +441,9 @@ namespace HshCologne
this.xrTableCell1.Multiline = true;
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.StylePriority.UseFont = false;
this.xrTableCell1.Text = "IFH Cologne GmbH\r\nSchanzenstr. 36 / Gebäude 234\r\n51063 Köln";
this.xrTableCell1.Weight = 0.73790436937858606D;
this.xrTableCell1.Text = "IFH Cologne GmbH\r\nAmbulante Soziale Hilfen\r\nSchanzenstr. 36 / Geb. 234\r\n51063 K<EFBFBD>l" +
"n";
this.xrTableCell1.Weight = 0.69342548594262876D;
//
// xrTableCell2
//
@@ -454,10 +452,10 @@ namespace HshCologne
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.StylePriority.UseFont = false;
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.Text = "E-Mail: info@ifhcologne.de\r\nTel: 0221 715 982 0\r\nSt.-ID: 218/5720/3137 HRB" +
": 120480";
this.xrTableCell2.Text = "E-Mail: info@ifhcologne.de\r\nTel: 0221 715 982 - 0\r\nFax: 0221 715 982-66\r\nHRB: 120" +
"480";
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell2.Weight = 1.2432331023790115D;
this.xrTableCell2.Weight = 1.2877119858149688D;
//
// xrTableCell3
//
@@ -467,7 +465,7 @@ namespace HshCologne
this.xrTableCell3.StylePriority.UseFont = false;
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "VR Bank eG Bergisch Gladbach- Leverkusen\r\nBIC: GENODED1PAF\r\nIBAN: DE59 3706 2600 " +
"4055 1280 10";
"4055 1280 10\r\nSteuernr. 218/5720/3137";
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell3.Weight = 1.2164479947149065D;
//
@@ -495,7 +493,7 @@ namespace HshCologne
this.xrLabel15,
this.xrLabel14,
this.xrTable4});
this.ReportFooter.HeightF = 199.1666F;
this.ReportFooter.HeightF = 147.625F;
this.ReportFooter.Name = "ReportFooter";
//
// xrTable3
@@ -570,7 +568,7 @@ namespace HshCologne
this.xrTableCell6.StylePriority.UsePadding = false;
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell6.TextFormatString = "{0:0.00 }";
this.xrTableCell6.TextFormatString = "{0:0.00 <EFBFBD>}";
this.xrTableCell6.Weight = 0.37481519034214572D;
//
// xrTableCell7
@@ -598,29 +596,29 @@ namespace HshCologne
// xrLabel15
//
this.xrLabel15.Font = new DevExpress.Drawing.DXFont("calibri", 11F);
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 145.2083F);
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 108.75F);
this.xrLabel15.Multiline = true;
this.xrLabel15.Name = "xrLabel15";
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel15.SizeF = new System.Drawing.SizeF(175F, 38.87501F);
this.xrLabel15.StylePriority.UseFont = false;
this.xrLabel15.Text = "Mit freundlichen Grüßen\r\nim Auftrag";
this.xrLabel15.Text = "Mit freundlichen Gr<EFBFBD><EFBFBD>en\r\nim Auftrag";
//
// xrLabel14
//
this.xrLabel14.Font = new DevExpress.Drawing.DXFont("calibri", 11F);
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(0F, 82.25002F);
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(0F, 67.66669F);
this.xrLabel14.Name = "xrLabel14";
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel14.SizeF = new System.Drawing.SizeF(650F, 21.91664F);
this.xrLabel14.StylePriority.UseFont = false;
this.xrLabel14.Text = "Wir bitten den Rechnungsbetrag binnen 14 Tagen auf unser angegebenes Konto zu übe" +
this.xrLabel14.Text = "Wir bitten den Rechnungsbetrag binnen 14 Tagen auf unser angegebenes Konto zu <EFBFBD>be" +
"rweisen.";
//
// xrTable4
//
this.xrTable4.Font = new DevExpress.Drawing.DXFont("calibri", 11F);
this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 56.25F);
this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 41.66667F);
this.xrTable4.Name = "xrTable4";
this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow10,
@@ -747,7 +745,7 @@ namespace HshCologne
this.xrTableCell35.StylePriority.UsePadding = false;
this.xrTableCell35.StylePriority.UseTextAlignment = false;
this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell35.TextFormatString = "{0:0.00 }";
this.xrTableCell35.TextFormatString = "{0:0.00 <EFBFBD>}";
this.xrTableCell35.Weight = 0.37481546080815553D;
//
// xrTableCell46
@@ -770,10 +768,6 @@ namespace HshCologne
this.xrTableCell46.TextFormatString = "{0:C2}";
this.xrTableCell46.Weight = 0.57828633439123656D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
@@ -781,6 +775,10 @@ namespace HshCologne
this.GroupHeader1.HeightF = 90F;
this.GroupHeader1.Name = "GroupHeader1";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// xrSubreport1
//
this.xrSubreport1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
@@ -801,7 +799,7 @@ namespace HshCologne
this.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new DevExpress.Drawing.DXMargins(75F, 92F, 157.5F, 50F);
this.Margins = new DevExpress.Drawing.DXMargins(75F, 92F, 157.5F, 59.6667F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
@@ -817,67 +815,67 @@ namespace HshCologne
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
private DevExpress.XtraReports.UI.DetailBand Detail;
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport1;
private DevExpress.XtraReports.UI.DetailBand Detail2;
private DevExpress.XtraReports.UI.ReportFooterBand ReportFooter;
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
private DevExpress.XtraReports.UI.XRTable xrTable4;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
private DevExpress.XtraReports.UI.XRLabel lblAdresse;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.XRTable xrTable8;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell21;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell25;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell26;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell27;
private DevExpress.XtraReports.UI.XRTable xrTable9;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow9;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell28;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell29;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell30;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell31;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow11;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell34;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell38;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell39;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell41;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport3;
private DevExpress.XtraReports.UI.DetailBand Detail4;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell33;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell46;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader1;
private DevExpress.XtraReports.UI.XRSubreport xrSubreport1;
private DevExpress.XtraReports.UI.XRTable xrTable3;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
}
}
}
private DevExpress.XtraReports.UI.DetailBand Detail;
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport1;
private DevExpress.XtraReports.UI.DetailBand Detail2;
private DevExpress.XtraReports.UI.ReportFooterBand ReportFooter;
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
private DevExpress.XtraReports.UI.XRTable xrTable4;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
private DevExpress.XtraReports.UI.XRLabel lblAdresse;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.XRTable xrTable8;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell21;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell25;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell26;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell27;
private DevExpress.XtraReports.UI.XRTable xrTable9;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow9;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell28;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell29;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell30;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell31;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow11;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell34;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell38;
private DevExpress.XtraReports.UI.XRTableCell lblHauptbetreuung;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell41;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport3;
private DevExpress.XtraReports.UI.DetailBand Detail4;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell33;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell46;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader1;
private DevExpress.XtraReports.UI.XRSubreport xrSubreport1;
private DevExpress.XtraReports.UI.XRTable xrTable3;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
}
}

View File

@@ -38,9 +38,18 @@ namespace HshCologne
if (pRO.ServiceInvoicePeriods != null && pRO.ServiceInvoicePeriods.Count > 0)
{
var c = DAOFactory.GenericDAO.LoadByID<Customer>(pRO.ServiceInvoicePeriods[0].Customer.Oid.Value);
GetBetreuungsart(pRO, c);
pRO.CustomerCostCenter = GetSozialarbeiter(pRO, c);
if (c != null)
{
pRO.CustomerCostCenter = GetSozialarbeiter(pRO, c);
var hauptbetreuer = c.Employee2CustomerList.FirstOrDefault(
e2c => e2c.ValueList.Any(ve => ve.Entry.SystemEntryID.HasValue
&& ve.Entry.SystemEntryID.Value == SystemEntryID.EmployeeRoleMainAttendant));
if (hauptbetreuer != null && hauptbetreuer.Employee.Person != null)
{
lblHauptbetreuung.Text = hauptbetreuer.Employee.Person.FirstNameLastName;
}
}
aggregiert = new List<ServiceInvoicePeriodRO>();
foreach (var sip in pRO.ServiceInvoicePeriods)
{
@@ -118,6 +127,7 @@ namespace HshCologne
copyItem.ServiceDescription = existingItem.ServiceDescription;
copyItem.Duration = existingItem.Duration;
copyItem.ServiceRecord = existingItem.ServiceRecord;
copyItem.Notice = existingItem.Notice;
}
public void GetBetreuungsart(ServiceInvoiceRO pRO, Customer c)
@@ -166,7 +176,7 @@ namespace HshCologne
//{
// sb.AppendLine(pRO.RecipientAddressLine1);
//}
if (!String.IsNullOrEmpty(pRO.RecipientContactPerson))
if (!String.IsNullOrEmpty(pRO.RecipientContactPerson) && !String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower().Contains("köln"))
{
sb.AppendLine(pRO.RecipientContactPerson);
}

View File

@@ -95,7 +95,7 @@ namespace HshCologne
this.xrTable5.ProcessHiddenCellMode = DevExpress.XtraReports.UI.ProcessHiddenCellMode.DecreaseTableWidth;
this.xrTable5.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow23});
this.xrTable5.SizeF = new System.Drawing.SizeF(670.004F, 25F);
this.xrTable5.SizeF = new System.Drawing.SizeF(660.125F, 25F);
//
// xrTableRow23
//
@@ -223,8 +223,8 @@ namespace HshCologne
this.xrTableCell36.StylePriority.UsePadding = false;
this.xrTableCell36.StylePriority.UseTextAlignment = false;
this.xrTableCell36.Text = "Beschreibung";
this.xrTableCell36.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell36.Weight = 1.2419122845358259D;
this.xrTableCell36.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell36.Weight = 1.1928290460764026D;
//
// ruleRateFactorNull
//
@@ -282,7 +282,7 @@ namespace HshCologne
this.xrTable6.ProcessHiddenCellMode = DevExpress.XtraReports.UI.ProcessHiddenCellMode.DecreaseTableWidth;
this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow25});
this.xrTable6.SizeF = new System.Drawing.SizeF(670.004F, 25F);
this.xrTable6.SizeF = new System.Drawing.SizeF(660.125F, 25F);
this.xrTable6.StylePriority.UseFont = false;
//
// xrTableRow25
@@ -403,8 +403,8 @@ namespace HshCologne
this.xrTableCell45.StylePriority.UsePadding = false;
this.xrTableCell45.StylePriority.UseTextAlignment = false;
this.xrTableCell45.Text = "xrTableCell45";
this.xrTableCell45.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell45.Weight = 1.24191265770481D;
this.xrTableCell45.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell45.Weight = 1.1928291123838068D;
//
// bindingSource1
//
@@ -424,7 +424,7 @@ namespace HshCologne
this.xrTable3.ProcessHiddenCellMode = DevExpress.XtraReports.UI.ProcessHiddenCellMode.DecreaseTableWidth;
this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow5});
this.xrTable3.SizeF = new System.Drawing.SizeF(670.004F, 25F);
this.xrTable3.SizeF = new System.Drawing.SizeF(660.125F, 25F);
//
// xrTableRow5
//
@@ -547,7 +547,7 @@ namespace HshCologne
this.xrTableCell19.StylePriority.UsePadding = false;
this.xrTableCell19.StylePriority.UseTextAlignment = false;
this.xrTableCell19.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell19.Weight = 1.2419123992814456D;
this.xrTableCell19.Weight = 1.1928289975354092D;
//
// ServiceInvoiceReportFLS
//
@@ -563,7 +563,7 @@ namespace HshCologne
this.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new DevExpress.Drawing.DXMargins(75F, 70F, 23.125F, 0F);
this.Margins = new DevExpress.Drawing.DXMargins(75F, 91.875F, 23.125F, 0F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;

View File

@@ -486,10 +486,6 @@ namespace PaSMoenchengladbach
this.picSignature.StylePriority.UseBorders = false;
this.picSignature.BeforePrint += new DevExpress.XtraReports.UI.BeforePrintEventHandler(this.picSignature_BeforePrint);
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// formattingRuleStartDate
//
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
@@ -693,6 +689,9 @@ namespace PaSMoenchengladbach
//
// xrLabel2
//
this.xrLabel2.CanShrink = true;
this.xrLabel2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CostBearer2SupportConceptList.CostBearer.Organisation.BusinessPartnerId")});
this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 50F);
this.xrLabel2.Multiline = true;
@@ -702,8 +701,8 @@ namespace PaSMoenchengladbach
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.StylePriority.UseForeColor = false;
this.xrLabel2.StylePriority.UseTextAlignment = false;
this.xrLabel2.Text = "GP-Nummer: 2000087017";
this.xrLabel2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrLabel2.TextFormatString = "GP-Nr.: {0}";
//
// xrLabel14
//
@@ -878,7 +877,7 @@ namespace PaSMoenchengladbach
this.xrLabel1.Multiline = true;
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(637.7086F, 25F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(670.0002F, 25F);
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.StylePriority.UseForeColor = false;
this.xrLabel1.StylePriority.UseTextAlignment = false;

View File

@@ -88,18 +88,17 @@ namespace SbbMainzReports.Invoicing
if (addRateFactorToUnitCount && invoiceItem.RateFactor.HasValue)
{
invoiceItem.UnitCount = (invoiceItem.UnitCount ?? 0) * ((invoiceItem.RateFactor + 100) / 100);
// der RateFaktor ist leider schon ein gerundeter Wert - Mainz Bingen -> 65 % und 35% Overhead
var overhead = Math.Round((invoiceItem.UnitCount.Value / 65 * 35), 3, MidpointRounding.AwayFromZero);
// var addOn = Math.Round(invoiceItem.UnitCount.Value * (invoiceItem.RateFactor.Value / 100), 3, MidpointRounding.AwayFromZero);
invoiceItem.UnitCount = Math.Round(invoiceItem.UnitCount.Value, 3, MidpointRounding.AwayFromZero) + overhead;
}
invoiceItem.UnitCount = Math.Round(invoiceItem.UnitCount.Value, 3, MidpointRounding.AwayFromZero);
invoiceItem.AmountTotal = invoiceItem.AmountPerUnit * invoiceItem.UnitCount;
invoiceItem.AmountTotal = Math.Round(invoiceItem.AmountTotal.Value, 2, MidpointRounding.AwayFromZero);
invoiceItem.GrossAmountTotal = invoiceItem.AmountTotal;
if (!addRateFactorToUnitCount && invoiceItem.RateFactor.HasValue)
{
invoiceItem.GrossAmountTotal *= ((invoiceItem.RateFactor + 100) / 100);

View File

@@ -34,7 +34,7 @@ namespace SBBMainzReports
decimal anteilOverheadProzent = 30;
double TotalMin = 0.00;
// AB, 17.11.2025: falls nötig auch in InvoiceCreation ändern, der eingetragene Faktor ist leider gerundet
if (pRO.StartDate >= new DateTime(2018, 8, 1))
{
anteilBetreuungsstundenProzent = 65;

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@@ -568,7 +568,7 @@ namespace SozialeDiensteNiederrhein
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(677F, 18.04168F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(671.4175F, 18.04168F);
this.xrLabel8.StylePriority.UseFont = false;
this.xrLabel8.Text = "[Notice]";
//
@@ -679,7 +679,7 @@ namespace SozialeDiensteNiederrhein
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new DevExpress.Drawing.DXMargins(49.08335F, 53F, 127.0833F, 167.0417F);
this.Margins = new DevExpress.Drawing.DXMargins(100.125F, 53F, 127.0833F, 167.0417F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;

File diff suppressed because one or more lines are too long

View File

@@ -47,7 +47,6 @@ namespace SozialeDiensteNiederrhein.Alt
this.rowErbrachteLeistung = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
this.lblAnrede = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.RecipientPostCodeAndTown = new DevExpress.XtraReports.UI.XRLabel();
@@ -83,7 +82,6 @@ namespace SozialeDiensteNiederrhein.Alt
this.xrTableRow15 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell23 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable4 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow30 = new DevExpress.XtraReports.UI.XRTableRow();
@@ -104,12 +102,15 @@ namespace SozialeDiensteNiederrhein.Alt
this.xrTableRow36 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell57 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell58 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
@@ -131,7 +132,7 @@ namespace SozialeDiensteNiederrhein.Alt
this.xrLabel8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceDate")});
this.xrLabel8.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(0F, 144F);
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(0F, 154.4167F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(283F, 31.33334F);
@@ -143,7 +144,7 @@ namespace SozialeDiensteNiederrhein.Alt
// xrTable1
//
this.xrTable1.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 372.2083F);
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 382.625F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow9,
@@ -278,41 +279,27 @@ namespace SozialeDiensteNiederrhein.Alt
// lblAnrede
//
this.lblAnrede.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.lblAnrede.LocationFloat = new DevExpress.Utils.PointFloat(0F, 250.6667F);
this.lblAnrede.LocationFloat = new DevExpress.Utils.PointFloat(0F, 261.0834F);
this.lblAnrede.Name = "lblAnrede";
this.lblAnrede.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAnrede.SizeF = new System.Drawing.SizeF(548.6666F, 16.99997F);
this.lblAnrede.StylePriority.UseFont = false;
this.lblAnrede.Text = "Sehr geehrte Damen und Herren,";
//
// xrLabel4
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 208.3333F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(650F, 17F);
this.xrLabel4.StylePriority.UseBackColor = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.Text = "GP-LVR: [CustomerReferenceNumber]";
this.xrLabel4.WordWrap = false;
//
// xrLabel3
//
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.CanShrink = true;
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Calibri", 11.25F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 192.3333F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 202.75F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(650F, 16F);
this.xrLabel3.StylePriority.UseBackColor = false;
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.Text = "Abrechnung Betreuungsleistungen für [Salutation2] [CustomerName]";
this.xrLabel3.Text = "Abrechnung Betreuungsleistungen für [Salutation2] [CustomerName], geb. [CustomerB" +
"irthdayString]";
this.xrLabel3.WordWrap = false;
//
// xrLabel2
@@ -320,7 +307,7 @@ namespace SozialeDiensteNiederrhein.Alt
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Calibri", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 175.3333F);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 185.75F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(650F, 17F);
@@ -333,7 +320,7 @@ namespace SozialeDiensteNiederrhein.Alt
//
this.RecipientPostCodeAndTown.CanShrink = true;
this.RecipientPostCodeAndTown.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.RecipientPostCodeAndTown.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 90.99998F);
this.RecipientPostCodeAndTown.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 101.4166F);
this.RecipientPostCodeAndTown.Name = "RecipientPostCodeAndTown";
this.RecipientPostCodeAndTown.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.RecipientPostCodeAndTown.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
@@ -345,7 +332,7 @@ namespace SozialeDiensteNiederrhein.Alt
//
this.xrLabel_RecipientStreet.CanShrink = true;
this.xrLabel_RecipientStreet.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel_RecipientStreet.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 74.00004F);
this.xrLabel_RecipientStreet.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 84.41671F);
this.xrLabel_RecipientStreet.Name = "xrLabel_RecipientStreet";
this.xrLabel_RecipientStreet.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel_RecipientStreet.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
@@ -357,7 +344,7 @@ namespace SozialeDiensteNiederrhein.Alt
//
this.xrLabel_RecipientContactPerson.CanShrink = true;
this.xrLabel_RecipientContactPerson.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel_RecipientContactPerson.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 56.99997F);
this.xrLabel_RecipientContactPerson.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 67.41663F);
this.xrLabel_RecipientContactPerson.Name = "xrLabel_RecipientContactPerson";
this.xrLabel_RecipientContactPerson.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel_RecipientContactPerson.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
@@ -369,7 +356,7 @@ namespace SozialeDiensteNiederrhein.Alt
//
this.xrLabel1.CanShrink = true;
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 39.99996F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 50.41663F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel1.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
@@ -589,6 +576,8 @@ namespace SozialeDiensteNiederrhein.Alt
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel4,
this.xrLabel5,
this.xrRichText1,
this.xrLabel1,
this.xrLabel_RecipientContactPerson,
@@ -596,12 +585,11 @@ namespace SozialeDiensteNiederrhein.Alt
this.RecipientPostCodeAndTown,
this.xrLabel2,
this.xrLabel3,
this.xrLabel4,
this.lblAnrede,
this.xrTable1,
this.xrLabel8});
this.GroupHeader1.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.GroupHeader1.HeightF = 440.2083F;
this.GroupHeader1.HeightF = 450.625F;
this.GroupHeader1.Name = "GroupHeader1";
this.GroupHeader1.StylePriority.UseFont = false;
//
@@ -609,7 +597,7 @@ namespace SozialeDiensteNiederrhein.Alt
//
this.xrRichText1.Font = new DevExpress.Drawing.DXFont("Calibri", 9F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrRichText1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 289.1666F);
this.xrRichText1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 299.5833F);
this.xrRichText1.Name = "xrRichText1";
this.xrRichText1.SerializableRtfString = resources.GetString("xrRichText1.SerializableRtfString");
this.xrRichText1.SizeF = new System.Drawing.SizeF(520.1251F, 61.79166F);
@@ -688,10 +676,6 @@ namespace SozialeDiensteNiederrhein.Alt
this.xrTableCell23.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell23.Weight = 0.27712895320012015D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.SettlementRO);
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
@@ -916,6 +900,41 @@ namespace SozialeDiensteNiederrhein.Alt
this.xrTableCell58.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell58.Weight = 0.30179487433493069D;
//
// xrLabel4
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 220.8333F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(335.4166F, 17F);
this.xrLabel4.StylePriority.UseBackColor = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.Text = "GP-LVR: [CustomerReferenceNumber]";
this.xrLabel4.WordWrap = false;
//
// xrLabel5
//
this.xrLabel5.BackColor = System.Drawing.Color.Transparent;
this.xrLabel5.CanShrink = true;
this.xrLabel5.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(335.4166F, 220.8333F);
this.xrLabel5.Multiline = true;
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel5.SizeF = new System.Drawing.SizeF(314.5834F, 17F);
this.xrLabel5.StylePriority.UseBackColor = false;
this.xrLabel5.StylePriority.UseFont = false;
this.xrLabel5.Text = "GP-Nr.: [BusinessPartnerId]";
this.xrLabel5.TextFormatString = "GP-Nr.: {0}";
this.xrLabel5.WordWrap = false;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.SettlementRO);
//
// Spitzabrechnung
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -931,7 +950,7 @@ namespace SozialeDiensteNiederrhein.Alt
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new DevExpress.Drawing.DXMargins(50.12502F, 74F, 130.2083F, 171.3335F);
this.Margins = new DevExpress.Drawing.DXMargins(89.70835F, 74F, 130.2083F, 171.3335F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
@@ -945,8 +964,8 @@ namespace SozialeDiensteNiederrhein.Alt
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
@@ -957,7 +976,6 @@ namespace SozialeDiensteNiederrhein.Alt
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.XRLabel lblAnrede;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRLabel RecipientPostCodeAndTown;
@@ -1026,5 +1044,7 @@ namespace SozialeDiensteNiederrhein.Alt
private DevExpress.XtraReports.UI.XRLabel lblGruppenJa;
private DevExpress.XtraReports.UI.XRLabel xrLabel16;
private DevExpress.XtraReports.UI.XRRichText xrRichText1;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
}
}

File diff suppressed because one or more lines are too long

View File

@@ -86,7 +86,6 @@ namespace SozialeDiensteNiederrhein
this.xrTableRow10 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable5 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow30 = new DevExpress.XtraReports.UI.XRTableRow();
@@ -107,13 +106,15 @@ namespace SozialeDiensteNiederrhein
this.xrTableRow37 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell59 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell60 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
@@ -135,7 +136,7 @@ namespace SozialeDiensteNiederrhein
this.xrLabel8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceDate", "{0:dd.MM.yyyy}")});
this.xrLabel8.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(0F, 154.4167F);
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(0F, 170.0417F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(283F, 23F);
@@ -147,7 +148,7 @@ namespace SozialeDiensteNiederrhein
// xrTable1
//
this.xrTable1.BorderColor = System.Drawing.SystemColors.ControlLight;
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 364.5001F);
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 380.1251F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.rowErbrachteLeistung});
@@ -185,7 +186,7 @@ namespace SozialeDiensteNiederrhein
// lblAnrede
//
this.lblAnrede.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.lblAnrede.LocationFloat = new DevExpress.Utils.PointFloat(0F, 252.75F);
this.lblAnrede.LocationFloat = new DevExpress.Utils.PointFloat(0F, 268.375F);
this.lblAnrede.Name = "lblAnrede";
this.lblAnrede.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAnrede.SizeF = new System.Drawing.SizeF(569.4999F, 16.99997F);
@@ -198,14 +199,14 @@ namespace SozialeDiensteNiederrhein
this.xrLabel3.CanShrink = true;
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Calibri", 11.25F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 194.4167F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 210.0417F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(650F, 16F);
this.xrLabel3.StylePriority.UseBackColor = false;
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.Text = "Abrechnung Betreuungsleistungen für [Salutation2] [CustomerFirstName] [CustomerLa" +
"stName]";
"stName], geb. [CustomerBirthday!dd.MM.yyyy]";
this.xrLabel3.WordWrap = false;
//
// xrLabel2
@@ -213,7 +214,7 @@ namespace SozialeDiensteNiederrhein
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Calibri", 11F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 177.4166F);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 193.0416F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(650F, 17F);
@@ -226,7 +227,7 @@ namespace SozialeDiensteNiederrhein
//
this.RecipientPostCodeAndTown.CanShrink = true;
this.RecipientPostCodeAndTown.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.RecipientPostCodeAndTown.LocationFloat = new DevExpress.Utils.PointFloat(0F, 88.83337F);
this.RecipientPostCodeAndTown.LocationFloat = new DevExpress.Utils.PointFloat(0F, 104.4584F);
this.RecipientPostCodeAndTown.Name = "RecipientPostCodeAndTown";
this.RecipientPostCodeAndTown.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.RecipientPostCodeAndTown.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
@@ -238,7 +239,7 @@ namespace SozialeDiensteNiederrhein
//
this.xrLabel_RecipientStreet.CanShrink = true;
this.xrLabel_RecipientStreet.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel_RecipientStreet.LocationFloat = new DevExpress.Utils.PointFloat(0F, 71.83336F);
this.xrLabel_RecipientStreet.LocationFloat = new DevExpress.Utils.PointFloat(0F, 87.45836F);
this.xrLabel_RecipientStreet.Name = "xrLabel_RecipientStreet";
this.xrLabel_RecipientStreet.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel_RecipientStreet.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
@@ -250,7 +251,7 @@ namespace SozialeDiensteNiederrhein
//
this.xrLabel_RecipientContactPerson.CanShrink = true;
this.xrLabel_RecipientContactPerson.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel_RecipientContactPerson.LocationFloat = new DevExpress.Utils.PointFloat(0F, 54.83335F);
this.xrLabel_RecipientContactPerson.LocationFloat = new DevExpress.Utils.PointFloat(0F, 70.45835F);
this.xrLabel_RecipientContactPerson.Name = "xrLabel_RecipientContactPerson";
this.xrLabel_RecipientContactPerson.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel_RecipientContactPerson.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
@@ -262,7 +263,7 @@ namespace SozialeDiensteNiederrhein
//
this.xrLabel1.CanShrink = true;
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 37.83334F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 53.45834F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel1.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
@@ -484,6 +485,7 @@ namespace SozialeDiensteNiederrhein
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel4,
this.xrRichText1,
this.xrLabel7,
this.xrLabel1,
@@ -496,7 +498,7 @@ namespace SozialeDiensteNiederrhein
this.xrTable1,
this.xrLabel8});
this.GroupHeader1.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.GroupHeader1.HeightF = 381.5001F;
this.GroupHeader1.HeightF = 397.1251F;
this.GroupHeader1.Name = "GroupHeader1";
this.GroupHeader1.StylePriority.UseFont = false;
//
@@ -504,7 +506,7 @@ namespace SozialeDiensteNiederrhein
//
this.xrRichText1.Font = new DevExpress.Drawing.DXFont("Calibri", 9F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrRichText1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 292.2083F);
this.xrRichText1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 307.8333F);
this.xrRichText1.Name = "xrRichText1";
this.xrRichText1.SerializableRtfString = resources.GetString("xrRichText1.SerializableRtfString");
this.xrRichText1.SizeF = new System.Drawing.SizeF(509.0417F, 61.79169F);
@@ -516,11 +518,11 @@ namespace SozialeDiensteNiederrhein
this.xrLabel7.BackColor = System.Drawing.Color.Transparent;
this.xrLabel7.CanShrink = true;
this.xrLabel7.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0F, 210.4167F);
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0F, 226.0417F);
this.xrLabel7.Multiline = true;
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(650F, 17F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(335.4166F, 17F);
this.xrLabel7.StylePriority.UseBackColor = false;
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.Text = "GP-LVR: [CustomerReferenceNumber]";
@@ -694,10 +696,6 @@ namespace SozialeDiensteNiederrhein
this.GroupHeader2.HeightF = 0F;
this.GroupHeader2.Name = "GroupHeader2";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.Settlement2RO);
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
@@ -926,6 +924,27 @@ namespace SozialeDiensteNiederrhein
this.xrTableCell60.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell60.Weight = 0.25702143742487982D;
//
// xrLabel4
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "BusinessPartnerId")});
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Calibri", 11F);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(335.4166F, 226.0417F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(314.5834F, 17F);
this.xrLabel4.StylePriority.UseBackColor = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.TextFormatString = "GP-Nr.: {0}";
this.xrLabel4.WordWrap = false;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.Settlement2RO);
//
// Spitzabrechnung
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -943,7 +962,7 @@ namespace SozialeDiensteNiederrhein
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new DevExpress.Drawing.DXMargins(50.12502F, 74F, 128.125F, 170.0835F);
this.Margins = new DevExpress.Drawing.DXMargins(89.70835F, 74F, 128.125F, 170.0835F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
@@ -958,8 +977,8 @@ namespace SozialeDiensteNiederrhein
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
@@ -1040,5 +1059,6 @@ namespace SozialeDiensteNiederrhein
private DevExpress.XtraReports.UI.XRTableRow xrTableRow10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
}
}

File diff suppressed because one or more lines are too long

View File

@@ -84,7 +84,7 @@ namespace TwgJonathan.Export
sb.Append(String.Format("{0}", row[2])); // FibuBelegNr
sb.Append(";");
sb.Append(String.Format("{0:dd.MM.yyyy}", row[3])); // Belegdatum
sb.Append(String.Format("{0:dd.MM.yyyy}", date.AddMonths(1).AddDays(-1))); // Belegdatum
sb.Append(";;;;;");
sb.Append(String.Format("{0}", row[4])); // FKontoNr (Debitor)
sb.Append(";;");
@@ -136,7 +136,7 @@ namespace TwgJonathan.Export
sb.Append(";");
sb.Append(String.Format("{0:0}", date.Month)); // Wirtschaftsmonat
sb.Append(";;;;;1;;"); //Buchungssatz
sb.Append(String.Format("{0:0}", idx)); //ErfaBuchhnr
sb.Append(String.Format("{0:0}", idx++)); //ErfaBuchhnr
sb.Append(";;");
if (row[7] != null && row[7].ToString().Trim() != "0" && row[0] != null) // Die Miete startet/endet innerhalb des laufenden Monats
{

View File

@@ -30,6 +30,7 @@ namespace TwgJonathan
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Rechnung));
DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
@@ -112,12 +113,12 @@ namespace TwgJonathan
//
// xrTable2
//
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0.0005245209F, 0F);
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0.0005086263F, 0F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow1,
this.xrTableRow2});
this.xrTable2.SizeF = new System.Drawing.SizeF(660F, 40F);
this.xrTable2.SizeF = new System.Drawing.SizeF(673.5417F, 40F);
this.xrTable2.StylePriority.UseBorderColor = false;
this.xrTable2.StylePriority.UseBorders = false;
this.xrTable2.StylePriority.UseFont = false;
@@ -144,7 +145,7 @@ namespace TwgJonathan
//
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Text = "Ihr Zeichen";
this.xrTableCell1.Weight = 0.13652272774333885D;
this.xrTableCell1.Weight = 0.18748169389727223D;
//
// xrTableCell2
//
@@ -155,7 +156,7 @@ namespace TwgJonathan
this.xrTableCell2.StylePriority.UseBorders = false;
this.xrTableCell2.StylePriority.UseFont = false;
this.xrTableCell2.Text = "Ihre Nachricht vom";
this.xrTableCell2.Weight = 0.1365227203249709D;
this.xrTableCell2.Weight = 0.12515430011164208D;
//
// xrTableCell4
//
@@ -163,13 +164,13 @@ namespace TwgJonathan
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.StylePriority.UseTextAlignment = false;
this.xrTableCell4.Text = "Unser Zeichen";
this.xrTableCell4.Weight = 0.12514583410477922D;
this.xrTableCell4.Weight = 0.10413556597885279D;
//
// xrTableCell6
//
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Text = "Durchwahl, Name";
this.xrTableCell6.Weight = 0.12514583353095182D;
this.xrTableCell6.Weight = 0.11771373941581999D;
//
// xrTableCell5
//
@@ -177,13 +178,13 @@ namespace TwgJonathan
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.StylePriority.UseTextAlignment = false;
this.xrTableCell5.Text = "Fax";
this.xrTableCell5.Weight = 0.11376893966674678D;
this.xrTableCell5.Weight = 0.10876088442371408D;
//
// xrTableCell7
//
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Text = "Datum";
this.xrTableCell7.Weight = 0.11376893966674676D;
this.xrTableCell7.Weight = 0.10762881121023317D;
//
// xrTableRow2
//
@@ -201,21 +202,23 @@ namespace TwgJonathan
//
this.xrTableCell8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CustomerReferenceNumber")});
this.xrTableCell8.Font = new DevExpress.Drawing.DXFont("Arial", 9F);
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.StylePriority.UseFont = false;
this.xrTableCell8.Text = "25/204-";
this.xrTableCell8.Weight = 0.13652272774333879D;
this.xrTableCell8.Weight = 0.18748175465644046D;
//
// xrTableCell9
//
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell9.StylePriority.UsePadding = false;
this.xrTableCell9.Weight = 0.1365227203249709D;
this.xrTableCell9.Weight = 0.12515424057405411D;
//
// xrTableCell10
//
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.Weight = 0.12514586882430395D;
this.xrTableCell10.Weight = 0.10413556545531835D;
//
// xrTableCell11
//
@@ -224,7 +227,7 @@ namespace TwgJonathan
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.StylePriority.UseFont = false;
this.xrTableCell11.Text = "08091 2734";
this.xrTableCell11.Weight = 0.1251457988114271D;
this.xrTableCell11.Weight = 0.11771373871777409D;
//
// xrTableCell13
//
@@ -233,15 +236,17 @@ namespace TwgJonathan
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.StylePriority.UseFont = false;
this.xrTableCell13.Text = "08091 538 144";
this.xrTableCell13.Weight = 0.11376893966674678D;
this.xrTableCell13.Weight = 0.10876088442371408D;
//
// xrTableCell20
//
this.xrTableCell20.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceDate")});
this.xrTableCell20.Font = new DevExpress.Drawing.DXFont("Arial", 9F);
this.xrTableCell20.Name = "xrTableCell20";
this.xrTableCell20.StylePriority.UseFont = false;
this.xrTableCell20.Text = "xrTableCell20";
this.xrTableCell20.Weight = 0.11376893966674676D;
this.xrTableCell20.Weight = 0.10762881121023317D;
//
// xrLabel17
//
@@ -471,7 +476,7 @@ namespace TwgJonathan
//
this.xrLabel19.Font = new DevExpress.Drawing.DXFont("Arial", 9F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrLabel19.LocationFloat = new DevExpress.Utils.PointFloat(544.71F, 0F);
this.xrLabel19.LocationFloat = new DevExpress.Utils.PointFloat(576.9982F, 0F);
this.xrLabel19.Name = "xrLabel19";
this.xrLabel19.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel19.SizeF = new System.Drawing.SizeF(150.0003F, 30F);
@@ -485,9 +490,9 @@ namespace TwgJonathan
this.xrLabel18.LocationFloat = new DevExpress.Utils.PointFloat(332.8124F, 0F);
this.xrLabel18.Name = "xrLabel18";
this.xrLabel18.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel18.SizeF = new System.Drawing.SizeF(211.8975F, 30F);
this.xrLabel18.SizeF = new System.Drawing.SizeF(244.1858F, 30F);
this.xrLabel18.StylePriority.UseFont = false;
this.xrLabel18.Text = "Aktenzeichen: [DebitorNumber]";
this.xrLabel18.Text = "Debitor: [DebitorNumber]";
//
// xrLabel9
//
@@ -511,10 +516,10 @@ namespace TwgJonathan
//
// xrLabel11
//
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(195.8333F, 59.99997F);
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(195.8333F, 59.99994F);
this.xrLabel11.Name = "xrLabel11";
this.xrLabel11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel11.SizeF = new System.Drawing.SizeF(525.1668F, 30F);
this.xrLabel11.SizeF = new System.Drawing.SizeF(531.1652F, 30F);
this.xrLabel11.StylePriority.UseFont = false;
this.xrLabel11.Text = "[AccountingPeriodStart!dd.MM.yyyy] - [AccountingPeriodEnd!dd.MM.yyyy]";
//
@@ -683,6 +688,8 @@ namespace TwgJonathan
this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
this.fieldEinzel,
this.fieldGruppe});
this.ComponentStorage.AddRange(new System.ComponentModel.IComponent[] {
this.bindingSource1});
this.DataSource = this.bindingSource1;
this.DisplayName = "Rechnung";
this.ExportOptions.PrintPreview.DefaultFileName = "Rechnung";
@@ -695,6 +702,8 @@ namespace TwgJonathan
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.Version = "23.2";
xrWatermark1.Id = "Watermark1";
this.Watermarks.Add(xrWatermark1);
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();

View File

@@ -62,6 +62,10 @@
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>

View File

@@ -34,10 +34,6 @@ namespace BeWo.Service.DCEntityMapper
isReady = false;
tooltip = "Fataler Fehler";
break;
case GkvState.ErrorFolgefehler:
isReady = false;
tooltip = "Folgefehler";
break;
case GkvState.Paid:
isReady = false;
tooltip = "Bereits bezahlt";
@@ -67,7 +63,7 @@ namespace BeWo.Service.DCEntityMapper
// Hole OrganisationLight
var orga = DAOFactory.GenericDAO.LoadByID<OrganisationLight>(orga_oid);
if (!Validator.IsOrganisationInformationValid(orga))
if (!GkvValidator.IsOrganisationInformationValid(orga))
{
isReady = false;
tooltip = "Organisation ist nicht Gkv Ready";

View File

@@ -146,8 +146,12 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.CustomerOid = customer.Oid.Value;
pDataContract.CustomerFirstName = customer.Person.FirstName;
pDataContract.CustomerLastName = customer.Person.LastName;
var error = Validator.ValidateCustomer(customer.InsuranceNumber, customer.VersichertenStatus);
pDataContract.IsGkvValidError = error;
var error = GkvValidator.ValidateCustomer(customer.InsuranceNumber, customer.VersichertenStatus);
if (error is null)
error = GkvValidator.ValidateInvoiceBase(pDataContract);
pDataContract.IsGkvValidError = error;
pDataContract.IsGkvValid = error is null;
}

View File

@@ -4,7 +4,6 @@ using System.Linq;
using System.ServiceModel;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Models;
using BeWo.Data.Security;
using BeWo.Service.Configuration;
using BeWo.Service.Core;
@@ -15,6 +14,7 @@ using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Models;
namespace BeWo.Service.Plugins
{

View File

@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.ServiceModel;
using BeWo.Data.Models.XRechnung;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;

View File

@@ -28,7 +28,6 @@ using BS.Shared.Extensions;
using BS.Shared.Exceptions;
using BS.Shared.AppSender;
using BeWo.Data.Security;
using BeWo.Data.Models.XRechnung;
using BS.Shared.DataContracts.Invoicing.XRechnung;
using System.IO;
using BeWo.Service.ServiceUtils;

View File

@@ -852,7 +852,7 @@ namespace BeWo.Service.ServiceImplementations
IList<Organisation> list = DAOFactory.GenericDAO.GetAllActiveAndArchived<Organisation>();
list = list.Where(x => !x.GkvAusblenden &&
Validator.IsOrganisationInformationValid(x.IKDatenannahmestelle, x.IKKostentrager, x.IKKrankenkasse, x.BezDatenannahmestelle)).ToList();
GkvValidator.IsOrganisationInformationValid(x.IKDatenannahmestelle, x.IKKostentrager, x.IKKrankenkasse, x.BezDatenannahmestelle)).ToList();
return CreateCompactOrganisations(list);
}

View File

@@ -1,7 +1,6 @@
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Models.XRechnung;
using BeWo.Data.Security;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;

View File

@@ -1,7 +1,6 @@
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Models.XRechnung;
using BeWo.Data.Security;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;

View File

@@ -329,11 +329,10 @@ namespace BeWo.Service.ServiceImplementations
Message = app8res.Message,
Success = app8res.Success,
Hausanschrift = app8res.Hausanschrift ?? new AddressDC(),
Postfachanschrift=app8res.Postfachanschrift ?? new AddressDC(),
Grosskundenanschrift =app8res.Grosskundenanschrift ?? new AddressDC()
Postfachanschrift = app8res.Postfachanschrift ?? new AddressDC(),
Grosskundenanschrift = app8res.Grosskundenanschrift ?? new AddressDC()
};
// Schaue, ob IK Krankenkassen bereits bei einer anderen Organisation hinterlegt ist
if (res.Gefunden)
{
@@ -378,12 +377,12 @@ namespace BeWo.Service.ServiceImplementations
var manager = new DakotaManager();
var mandatordc = new OperationsServiceImp().GetMandator();
Validator.ValidateMandator(mandatordc);
GkvValidator.ValidateMandator(mandatordc);
var gkvAbrechnungDC = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(gkvAbrechnung);
var orgadc = gkvAbrechnungDC.Organisation;
Validator.ValidateOrganisation(orgadc);
GkvValidator.ValidateOrganisation(orgadc);
var datenannahmestelle = orgadc.IKDatenannahmestelle;
var (datenaustauschreferenz, transfernummer) = GetNextDatenaustauschreferenzTransfernummer(gkvAbrechnung, datenannahmestelle);
@@ -417,7 +416,7 @@ namespace BeWo.Service.ServiceImplementations
var servicedc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(service);
var customerdc = MapperFactory.CustomerDC_Customer.MapToNewDC(customer);
Validator.ValidateCustomer(customerdc);
GkvValidator.ValidateCustomer(customerdc);
manager.Add(servicedc, orgadc, customerdc, addressInfo, dat_short, tra_short);
}
@@ -489,25 +488,23 @@ namespace BeWo.Service.ServiceImplementations
private Tuple<int, int> GetNextDatenaustauschreferenzTransfernummer(GkvAbrechnung gkvAbrechnung, string datenannahmestelle)
{
var datenaustauschref = DAOFactory.SearchDAO.GetNextDatenaustauschreferenz(datenannahmestelle);
int transfernummer;
bool newDatenaustauschref;
var state = gkvAbrechnung.GetState();
if (state == GkvState.NoSend)
{
transfernummer = DAOFactory.SearchDAO.GetNextTransfernummer(datenannahmestelle);
newDatenaustauschref = true;
}
else if (state == GkvState.ErrorSoft || state == GkvState.ErrorFatal || state == GkvState.ErrorFolgefehler)
else if (state == GkvState.ErrorSoft || state == GkvState.ErrorFatal)
{
transfernummer = gkvAbrechnung.GkvTransferProtokolle.Last().Transfernummer;
newDatenaustauschref = false;
}
else
{
throw new ArgumentException($"Versucht Transfernummer zu laden, invalid state: {state}", nameof(state));
}
return new Tuple<int, int>(datenaustauschref, transfernummer);
return SendApp8GetNumberRequest(datenannahmestelle, newDatenaustauschref, true);
}
private Tuple<int, int> ClearDatenaustauschreferenzTransfernummer(int datenaustauschreferenz, int transfernummer)
{
@@ -603,6 +600,37 @@ namespace BeWo.Service.ServiceImplementations
return false;
}
private Tuple<int, int> SendApp8GetNumberRequest(string ik_datenannahmestelle, bool newDatenaustauschref, bool newTransferNumber)
{
var request = new GkvServerGetNumberRequestDC();
request.IKDatenannahmestelle = ik_datenannahmestelle;
request.NewDatenaustauschRef = newDatenaustauschref;
request.NewTransferNumber = newTransferNumber;
GkvServerGetNumberResponseDC response_app8;
response_app8 = SendApp8Request<GkvServerGetNumberRequestDC, GkvServerGetNumberResponseDC>(request);
if (!response_app8.Success)
throw new GkvException("Success false - " + response_app8.Message);
return new Tuple<int, int>(response_app8.Datenaustauschreferenz, response_app8.Transfernummer);
// Kein Try-Catch, damit der Prozess oben abgebrochen wird
//try
//{
//}
//catch (Exception e)
//{
// MailUtils.SendGkvModuleErrorMail("GkvServerGetNumberRequest Error", e, Tenant);
//}
//return null;
}
public void HandleGkvServerResults(IEnumerable<GkvServerResultDC> results)
{
var protokolls = new List<GkvTransferProtokollLight>();
@@ -626,9 +654,6 @@ namespace BeWo.Service.ServiceImplementations
case GkvTransferResultType.FailFatal:
protokoll.SentApp8Success = false;
break;
case GkvTransferResultType.FailFollowUp:
protokoll.SentApp8Success = false;
break;
}
protokolls.Add(protokoll);
@@ -636,27 +661,6 @@ namespace BeWo.Service.ServiceImplementations
if (protokolls.Any())
DAOFactory.GenericDAO.Update(protokolls);
var follows = results.Where(x => x.ResultType == GkvTransferResultType.FailFollowUp);
if (follows.Any())
{
foreach (var follow in follows)
{
var protokoll_oid = follow.ProtokollOid;
var abrechnung_oid = DAOFactory.FinanceDAO.GetGkvParentByProtokollOid(protokoll_oid);
var new_req = new GkvAbrechnungSendRequestDC()
{
GkvAbrechnungOid = abrechnung_oid
};
var res = SendNewGkvAbrechnung(new_req);
if (!res.Success)
throw new GkvException("Success - " + res.Message);
}
}
}
private Res SendApp8Request<Req, Res>(Req request) where Req : GkvServerRequestDC where Res : GkvResponseDC

View File

@@ -74,6 +74,10 @@
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.2" newVersion="9.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>

View File

@@ -42,7 +42,7 @@ namespace BS.Shared.AppSender
string url = "https://app8.bewoplaner.de/service/GkvAbrechnungServer.aspx";
#if DEBUG
url = "http://localhost:3777/Host/GkvAbrechnungServer.aspx";
//url = "http://localhost:3777/Host/GkvAbrechnungServer.aspx";
#endif
Res app8_response;

View File

@@ -1300,8 +1300,9 @@ namespace BS.Shared
GkvServerGetIKNumber,
GkvServerGetStatus,
GkvClientResult,
GkvClientSum
}
GkvClientSum,
GkvServerGetNumber,
}
public enum GkvTransferResultType
{
@@ -1309,7 +1310,6 @@ namespace BS.Shared
Success = 0, // Kein Fehler
FailSoft = 1, // Kann erneut senden
FailFatal = 2, // Kann nicht erneut senden
FailFollowUp = 3, // Muss neu berechnet werden
}
public enum GkvState
@@ -1317,7 +1317,6 @@ namespace BS.Shared
NoSend,
ErrorSoft,
ErrorFatal,
ErrorFolgefehler,
Paid,
WaitingForDakota,
WaitingForKrankenkasse,

View File

@@ -6,11 +6,12 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace BS.Shared.Core
{
public static class Validator
public static class GkvValidator
{
public static bool? IsValid(ValidationType val_type, string val_str)
{
@@ -73,7 +74,7 @@ namespace BS.Shared.Core
if (mandatordc == null)
throw new GkvException("Mandator ist null");
if (!Validator.IsIKNumberValid(mandatordc.IKLeistungserbringer))
if (!IsIKNumberValid(mandatordc.IKLeistungserbringer))
throw new GkvException($"Die IK Nummer des Leistungserbringers \"{mandatordc.IKLeistungserbringer}\" ist ungültig.");
}
public static void ValidateCustomer(CustomerDC customerDC)
@@ -110,16 +111,35 @@ namespace BS.Shared.Core
if (error != null)
throw new GkvException(error);
}
public static bool IsOrganisationInformationValid(IOrganisation orga)
public static string ValidateInvoiceBases(IEnumerable<IInvoiceBase> invoices)
{
foreach (var invoice in invoices)
{
if (ValidateInvoiceBase(invoice) is string error)
return error;
}
return null;
}
public static string ValidateInvoiceBase(IInvoiceBase invoice)
{
if (!IsInvoiceNumberValid(invoice.InvoiceNumber))
return $"Rechnungsnummer \"{invoice.InvoiceNumber}\" ist ungültig";
return null;
}
public static bool IsOrganisationInformationValid(IOrganisation orga)
{
return IsOrganisationInformationValid(orga.IKDatenannahmestelle, orga.IKKostentrager, orga.IKKrankenkasse, orga.BezDatenannahmestelle);
}
public static bool IsOrganisationInformationValid(string ik_datenannahmestelle, string ik_kostentrager, string ik_krankenkasse, string bez_datenannahmestelle)
}
public static bool IsOrganisationInformationValid(string ik_datenannahmestelle, string ik_kostentrager, string ik_krankenkasse, string bez_datenannahmestelle)
=> IsIKNumberValid(ik_datenannahmestelle, ik_kostentrager, ik_krankenkasse) && IsBezDatenannahmestelleValid(bez_datenannahmestelle);
public static bool IsIKNumberValid(params string[] iks)
=> iks?.All(IsIKNumberValid) ?? false;
public static bool IsBezDatenannahmestelleValid(string bez_datenannahmestelle)
public static bool IsBezDatenannahmestelleValid(string bez_datenannahmestelle)
{
return !string.IsNullOrWhiteSpace(bez_datenannahmestelle);
}
@@ -180,5 +200,11 @@ namespace BS.Shared.Core
return true;
}
public static bool IsInvoiceNumberValid(string invoiceNumber)
{
var pattern = @"^(?!.*[-/]{2})(?![-/])(?!.*[-/]$)[A-Za-z0-9]+(?:[/-][A-Za-z0-9]+)*$";
return Regex.IsMatch(invoiceNumber, pattern);
}
}
}

View File

@@ -7,6 +7,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace BS.Shared.Core
@@ -23,6 +24,8 @@ namespace BS.Shared.Core
error = "Unterschiedliche Rechnungspositionen";
else if (GetInvalidUnitDescription(invoiceBases) is IInvoiceItem invalid)
error = $"Ungültige Rechnungsposition: {invalid.ItemDescription}:{invalid.UnitDescription}";
else if (GkvValidator.ValidateInvoiceBases(invoiceBases) is string rtn_error)
error = rtn_error;
if(error is string)
throw new GkvException(error, "Validierung");
@@ -71,5 +74,7 @@ namespace BS.Shared.Core
return null;
}
}
}

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
public class GkvServerGetNumberRequestDC : GkvServerRequestDC
{
public GkvServerGetNumberRequestDC()
: base(RequestType.GkvServerGetNumber) { }
public GkvServerGetNumberRequestDC(string tenant, string username, string password)
: base(RequestType.GkvServerGetNumber, tenant, username, password) { }
[DataMember] public string IKDatenannahmestelle { get; set; }
[DataMember] public bool NewDatenaustauschRef { get; set; }
[DataMember] public bool NewTransferNumber { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts.GkvAbrechnung
{
public class GkvServerGetNumberResponseDC : GkvResponseDC
{
public GkvServerGetNumberResponseDC() : base() { }
public GkvServerGetNumberResponseDC(bool success) : base(success) { }
public GkvServerGetNumberResponseDC(bool success, string message) : base(success, message) { }
[DataMember] public int Datenaustauschreferenz { get; set; }
[DataMember] public int Transfernummer { get; set; }
}
}

View File

@@ -24,9 +24,6 @@ namespace BS.Shared.Extensions
if (gkvAbrechnung.LastTransferProtokoll.ResultType == GkvTransferResultType.FailFatal)
return GkvState.ErrorFatal;
if (gkvAbrechnung.LastTransferProtokoll.ResultType == GkvTransferResultType.FailFollowUp)
return GkvState.ErrorFolgefehler;
if (gkvAbrechnung.LastTransferProtokoll.ResultType is null)
return GkvState.WaitingForDakota;

View File

@@ -9,6 +9,9 @@ namespace BS.Shared.Interface
public interface IInvoiceBase
{
long? Oid { get; }
string InvoiceNumber { get; }
string InvoiceTitle { get; }
string InvoiceId { get; }
string SenderStreet { get; }
string SenderTown { get; }
string SenderPostCode { get; }

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Data.Models
namespace BS.Shared.Models
{
public class AddressInformation
{

View File

@@ -151,7 +151,7 @@
<Compile Include="Core\SecurityUtils.cs" />
<Compile Include="Core\TokenUtils.cs" />
<Compile Include="Core\Utilities\WebUtils.cs" />
<Compile Include="Core\Validator.cs" />
<Compile Include="Core\GkvValidator.cs" />
<Compile Include="Core\DebugUtils.cs" />
<Compile Include="Core\ImageUtils.cs" />
<Compile Include="Core\PersonFilterEnum.cs" />
@@ -187,6 +187,8 @@
<Compile Include="DataContracts\AdminService\AdminServiceSumResponseDetailDC.cs" />
<Compile Include="DataContracts\AdminService\IAdminServiceDC.cs" />
<Compile Include="DataContracts\AdminService\AdminServiceSumReqDC.cs" />
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberRequestDC.cs" />
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberResponseDC.cs" />
<Compile Include="DataContracts\Person2TeamDC.cs" />
<Compile Include="DataContracts\Feature\AI\AiConfigDC.cs" />
<Compile Include="DataContracts\Feature\AI\AiConversationDC.cs" />
@@ -416,6 +418,7 @@
<Compile Include="Interface\IOrganisation.cs" />
<Compile Include="Interface\IInvoiceItem.cs" />
<Compile Include="Interface\IStoredFile.cs" />
<Compile Include="Models\AddressInformation.cs" />
<Compile Include="Packet.cs" />
<Compile Include="ReportRequests\AbstractReportRequest.cs" />
<Compile Include="ReportRequests\GkvAbrechnungReportRequest.cs" />