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

This commit is contained in:
2023-11-15 11:15:56 +01:00
67 changed files with 5880 additions and 698 deletions

View File

@@ -1688,7 +1688,10 @@ namespace BeWo.Core
{
dc.CostBearer2SupportConceptOid = relDc.CostBearer2SupportConceptOid;
}
else
{
dc.CostBearer2SupportConceptOid = null;
}
var validationResults = new List<ServiceRecordValidationResultDC>();
var maxdays = BeWoApp.AppSettings.MaxDaysEditServiceRecordsAllowed;

View File

@@ -806,6 +806,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArbeiterwohlfahrtWesel", "R
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KlinikumWerraMeissner", "ReportImp\KlinikumWerraMeissner\KlinikumWerraMeissner.csproj", "{E4ED67F9-7FCE-470E-B383-797A5D967A9C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiakonischesWerkDinslakenBeWo", "ReportImp\DiakonischesWerkDinslakenBeWo\DiakonischesWerkDinslakenBeWo.csproj", "{868AC89C-BC74-4615-9B09-853ADE03B967}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
@@ -9865,6 +9867,30 @@ Global
{E4ED67F9-7FCE-470E-B383-797A5D967A9C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{E4ED67F9-7FCE-470E-B383-797A5D967A9C}.Release|x86.ActiveCfg = Release|Any CPU
{E4ED67F9-7FCE-470E-B383-797A5D967A9C}.Release|x86.Build.0 = Release|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Debug|.NET.ActiveCfg = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Debug|.NET.Build.0 = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Debug|Any CPU.Build.0 = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Debug|x86.ActiveCfg = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Debug|x86.Build.0 = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.DebugRemote|x86.Build.0 = Debug|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Release|.NET.ActiveCfg = Release|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Release|.NET.Build.0 = Release|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Release|Any CPU.ActiveCfg = Release|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Release|Any CPU.Build.0 = Release|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Release|x86.ActiveCfg = Release|Any CPU
{868AC89C-BC74-4615-9B09-853ADE03B967}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -10266,6 +10292,7 @@ Global
{FB4D4938-A61A-412E-A495-7D7C00F33E73} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{F511664C-784C-4582-BDCE-0BEFED504CB4} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{E4ED67F9-7FCE-470E-B383-797A5D967A9C} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{868AC89C-BC74-4615-9B09-853ADE03B967} = {D8A691C5-146D-4613-86CC-438F02FE9106}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}

View File

@@ -4581,6 +4581,22 @@ namespace BeWo.Data.Access
return q.List<long>();
}
public IList FindCustomerOid2Persons(IList<long> personOids)
{
String oidList = "";
foreach (var oid in personOids)
{
if (oidList.Length > 0)
{
oidList += ",";
}
oidList += String.Format("{0}", oid);
}
return GetSqlResult("SELECT oid,personoid,customeroid,istfamilie FROM customer2person where personoid in (" + oidList + ")");
}
public List<SchedulerAppointment> FindActiveAppointmentsForCustomers(List<long> customerOids, DateTime startDate, DateTime endDate)
{
var customerOidSqlString = string.Empty;

View File

@@ -1,5 +1,7 @@
using BeWo.Data.Entities;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared.DataContracts;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -52,5 +54,98 @@ namespace BeWo.Data.Security
return rights;
}
public static String GetBeWoVersion()
{
return GetBeWoVersion(GetLoggedInUser().LoginName);
}
public static String GetBeWoVersion(String loginName)
{
var lastLogins = DAOFactory.SearchDAO.FindLastLogins(loginName, 1).ToList();
if (lastLogins != null && lastLogins.Count > 0)
{
var login = lastLogins[0];
if (!String.IsNullOrEmpty(login.Referrer))
{
//var test = "MobilClient, Version: Unbekannt";
//var test2 = "BeWoClient, Version: Microsoft Windows NT 6.2.9200.0;CLRVersion=4.0.30319.42000;BeWoVersion=Version 3.16;IsNet45OrNewer=True";
var str = login.Referrer;
var start = str.IndexOf("BeWoVersion=");
if (start > 0)
{
var stop = str.IndexOf(";", start);
if (stop > start)
{
var version = str.Substring(start + 12, stop - start - 12);
version = version.Replace("Version", "").Trim();
return version;
}
}
}
}
return "";
}
public static void CheckRightVersion(UserDC user)
{
var version = GetBeWoVersion(GetLoggedInUser().LoginName);
CheckRightVersion(version, user);
}
public static void CheckRightVersion(UserGroupDC groupDC)
{
var version = GetBeWoVersion(GetLoggedInUser().LoginName);
CheckRightVersion(version, groupDC);
}
public static void CheckRightVersion(String version, UserDC userDC)
{
foreach (var ug in userDC.UserGroups)
{
CheckRightVersion(version, ug);
}
}
public static void CheckRightVersion(String version, UserGroupDC ug)
{
var allrights = ug.Rights;
ug.Rights = new List<UserRightType>();
foreach (var r in allrights)
{
if (IsCorrectVersion(r, version))
{
ug.Rights.Add(r);
}
}
}
public static bool IsCorrectVersion(UserRightType r, string version)
{
var rightVersion = GetRightVersion(r);
if (!String.IsNullOrEmpty(version) && version.CompareTo(rightVersion) < 0)
{
return false;
}
return true;
}
public static String GetRightVersion(UserRightType r)
{
if (r == UserRightType.Customer_ViewBetreuung || r == UserRightType.Customer_ViewAbsenceTimes)
{
return "3.17";
}
return "1.0";
}
}
}

View File

@@ -939,6 +939,7 @@ namespace Host
return reportCreator.CreateVertretungsPlanungReport(start, ansicht);
}
private XtraReport CreateValidationMessageListReport()
{
DateTime start = DateTime.Now.Date;

View File

@@ -970,3 +970,9 @@ ALTER TABLE `AbsenceReason` ADD COLUMN `Sichtbarkeit` int NULL;
ALTER TABLE `feiertag`
ADD COLUMN `OrganisationOid` BIGINT NULL DEFAULT NULL;
ALTER TABLE servicerecordhistory ADD COLUMN `CustomerConfirmationReceiptSignatureStateType` int DEFAULT 0;
ALTER TABLE servicerecordhistory ADD COLUMN `EmployeeConfirmationReceiptSignatureStateType` int DEFAULT 0;
ALTER TABLE servicerecordhistory ADD COLUMN `ServiceRecordSignatureStateType` int DEFAULT 0;
ALTER TABLE servicerecordhistory ADD COLUMN `CustomerConfirmationReceiptSignatureOid` BIGINT(18) DEFAULT NULL, ADD COLUMN `EmployeeConfirmationReceiptSignatureOid` BIGINT(18) DEFAULT NULL;

View File

@@ -1230,17 +1230,40 @@ namespace BeWo.Report
}
if (report != null)
{
report.Watermark.PageRange = "1";
if (report.Pages.Count == 0)
{
report.CreateDocument();
}
if (master == null)
{
master = report;
}
else
{
master.Pages.AddRange(report.Pages);
//master.Pages.AddRange(report.Pages);
XRWatermark wm = new XRWatermark();
wm.CopyFrom(report.Watermark);
bool firstpage = true;
foreach (var item in report.Pages)
{
var page2add = item as DevExpress.XtraPrinting.Page;
if (page2add != null)
{
master.Pages.Add(page2add);
if (wm != null && firstpage)
{
var newpage = master.Pages[master.Pages.Count - 1];
newpage.AssignWatermark(wm);
//newpage.AssignWatermark(page2add.Watermark);
}
}
firstpage = false;
}
}
}

View File

@@ -1789,22 +1789,30 @@ namespace BeWo.Report.ReportObjects
}
else
{
var c = ed.Employee.GetValidContractForDate(dd.Date);
if (c != null)
var ssa = GetSollStundenForAbsenceTime(ed, absenceTime, dd.Date);
if (ssa.HasValue)
{
sollDiesenTag = ssa.Value;
}
else
{
decimal wth = 0;
int apw = ANZ_WOCHENTAGE;
if (c.WeeklyTotalHours.HasValue)
var c = ed.Employee.GetValidContractForDate(dd.Date);
if (c != null)
{
wth = c.WeeklyTotalHours.Value;
}
if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
{
apw = c.WeeklyDays.Value;
}
decimal wth = 0;
int apw = ANZ_WOCHENTAGE;
sollDiesenTag = wth / apw;
if (c.WeeklyTotalHours.HasValue)
{
wth = c.WeeklyTotalHours.Value;
}
if (c.WeeklyDays.HasValue && c.WeeklyDays.Value > 0)
{
apw = c.WeeklyDays.Value;
}
sollDiesenTag = wth / apw;
}
}
}
@@ -1832,7 +1840,7 @@ namespace BeWo.Report.ReportObjects
if (faktor != 0)
{
sollDiesenTag *= faktor; //halbe Feiertage etc. berücksichtigen
abwesenheitsDauer *= faktor; //halbe Feiertage etc. berücksichtigen
}
if (ed.AbsenceTimeDays != null && ed.AbsenceTimeDays.TageProWocheDict != null)
@@ -1916,6 +1924,18 @@ namespace BeWo.Report.ReportObjects
absenceTime.AbsenceReason.Description.ToLower().IndexOf("urlaub") >= 0;
}
public virtual decimal? GetSollStundenForAbsenceTime(MitarbeiterstundenkontoRO.EmployeeDetail ed, AbsenceTime at, DateTime datum)
{
return null;
}
public virtual bool AddAbsenceTimeToIst()
{
return false;
}
public virtual bool AddServiceRecordToDuration(ServiceRecord item)
{
return true;
@@ -2202,7 +2222,7 @@ namespace BeWo.Report.ReportObjects
decimal stundenProTag = GetSollArbeitszeitProArbeitstag(c, ed);
return (stundenProTag * 5);
return stundenProTag * ed.ArbeitstageProWoche;
//sollStundenProWoche = stundenProTag * ed.ArbeitstageProWoche;
//return (ath.TageGesamt.Value * stundenProTag);
@@ -2221,10 +2241,15 @@ namespace BeWo.Report.ReportObjects
{
if (BerechneAlteAbwesenheitsStunden(start))
{
return BerechneStundenDurchAbwesenheitenAlt(ath, start, ende, c, ed);
return BerechneStundenDurchAbwesenheitenAlt(ath, start, ende, c, ed);
}
decimal stunden = 0;
if (ath.StundenGesamt.HasValue)
{
return ath.StundenGesamt.Value;
}
decimal stunden = 0;
if (c != null)
{
@@ -2797,7 +2822,7 @@ namespace BeWo.Report.ReportObjects
{
atd.TageProWocheDict.Add(week, 0);
}
decimal? tage = null;
decimal? stunden = null;
if (absenceTimes != null)
{
foreach (var item in absenceTimes)
@@ -2841,13 +2866,19 @@ namespace BeWo.Report.ReportObjects
if (faktor < 1 && !istWochenende)
{
if (!tage.HasValue)
tage = 0;
if (!stunden.HasValue)
stunden = 0;
var tag = 1m;
var std = 24m;
if (item.Start.HasValue && item.End.HasValue && item.Start.Value.Date == item.End.Value.Date &&
var sollAmTag = GetSollStundenForAbsenceTime(AktuellBearbeitetesEmployeeDetail, item, day);
if (!sollAmTag.HasValue)
{
sollAmTag = AktuellBearbeitetesEmployeeDetail.SollProTag;
}
if (item.Start.HasValue && item.End.HasValue && item.Start.Value.Date == item.End.Value.Date &&
item.Start.Value.Hour > 0)
{
if (AktuellBearbeitetesEmployeeDetail != null)
@@ -2855,16 +2886,14 @@ namespace BeWo.Report.ReportObjects
faktor = 1;
decimal hours = (decimal)item.End.Value.Subtract(item.Start.Value).TotalHours;
var sollAmTag = AktuellBearbeitetesEmployeeDetail.SollProTag;
if (SchneideZuvieleAbwesenheitsstundenAb() && hours > sollAmTag)
{
hours = sollAmTag;
hours = sollAmTag.Value;
}
if (sollAmTag > 0)
{
tag = hours / sollAmTag;
tag = hours / sollAmTag.Value;
std = tag * 24;
}
}
@@ -2879,25 +2908,32 @@ namespace BeWo.Report.ReportObjects
}
tage += std;
stunden += std;
if (IsKrankheitAbsenceTime(item))
{
if (!atd.TageKrankheit.HasValue)
atd.TageKrankheit = 0;
if (!atd.StundenKrankheit.HasValue)
atd.StundenKrankheit = 0;
atd.TageKrankheit += tag;
atd.TageKrankheit += tag;
atd.StundenKrankheit += sollAmTag;
}
if (IsUrlaubAbsenceTime(item))
{
if (!atd.TageUrlaub.HasValue)
atd.TageUrlaub = 0;
atd.TageUrlaub += tag;
if (!atd.StundenUrlaub.HasValue)
atd.StundenUrlaub = 0;
atd.TageUrlaub += tag;
atd.StundenUrlaub += sollAmTag;
}
if (!atd.StundenGesamt.HasValue)
atd.StundenGesamt = 0;
atd.StundenGesamt += sollAmTag;
foreach (var week in weeks)
foreach (var week in weeks)
{
if (day >= week.StartDate && day <= week.EndDate)
{
@@ -2916,9 +2952,11 @@ namespace BeWo.Report.ReportObjects
}
}
}
if (tage.HasValue)
tage /= 24;
atd.TageGesamt = tage;
if (stunden.HasValue)
stunden /= 24;
atd.TageGesamt = stunden;
return atd;
}
@@ -3109,8 +3147,11 @@ namespace BeWo.Report.ReportObjects
public decimal? TageUrlaub;
public decimal? TageKrankheit;
public decimal? TageGesamt;
public decimal? StundenUrlaub;
public decimal? StundenKrankheit;
public decimal? StundenGesamt;
public Dictionary<DateTimeSpan, decimal> TageProWocheDict;
public Dictionary<DateTimeSpan, decimal> TageProWocheDict;
public Dictionary<DateTimeSpan, decimal> RestStundenProWocheDict;
}

View File

@@ -38,6 +38,10 @@ namespace AWOMuensterlandRecklinghausen
BerechneFerienTage = true;
}
}
if (c.EntryDate < new DateTime(2023,07,01))
{
c.EntryDate = new DateTime(2023, 07, 01); // die haben Original Startdaten eingetragen, geht nur um die "vorherigen Minusstunden"
}
customVacationService.UseDbFeiertage = BerechneFerienTage;
}

View File

@@ -219,8 +219,9 @@ namespace AWOMuensterlandRecklinghausen
if (qro.Rows.Count > 0)
{
DateTime monat = DateTime.Parse(qro.Rows[0].Field1.ToString());
DateTime start = new DateTime(monat.Year, 9, 1);
DateTime dt = DateTime.Now;
DateTime.TryParse(qro.Rows[0].Field1.ToString(), out dt);
DateTime start = new DateTime(dt.Year, dt.Month, 1);
DateTime end = start.AddMonths(1).AddDays(-1);
var ro = FinanceRO.Create(start, end);

View File

@@ -77,6 +77,7 @@ namespace AWOMuensterlandRecklinghausen
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.ReportFooter = new DevExpress.XtraReports.UI.ReportFooterBand();
this.fieldBillableAmountYear = new DevExpress.XtraReports.UI.CalculatedField();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
@@ -189,7 +190,7 @@ namespace AWOMuensterlandRecklinghausen
this.lblTitel.LocationFloat = new DevExpress.Utils.PointFloat(0F, 10.00001F);
this.lblTitel.Name = "lblTitel";
this.lblTitel.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblTitel.SizeF = new System.Drawing.SizeF(248.1252F, 23F);
this.lblTitel.SizeF = new System.Drawing.SizeF(138.7502F, 23F);
this.lblTitel.StylePriority.UseFont = false;
this.lblTitel.Text = "Wirtschaftsplan";
//
@@ -284,7 +285,7 @@ namespace AWOMuensterlandRecklinghausen
//
this.xrTableCell25.Name = "xrTableCell25";
this.xrTableCell25.StylePriority.UseTextAlignment = false;
this.xrTableCell25.Text = "Erlöse September";
this.xrTableCell25.Text = "Erlöse [ReportStartDate!MMMM]";
this.xrTableCell25.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell25.Weight = 0.5548377192100773D;
//
@@ -394,6 +395,7 @@ namespace AWOMuensterlandRecklinghausen
// ReportHeader
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel1,
this.lblTitel});
this.ReportHeader.HeightF = 52.08333F;
this.ReportHeader.Name = "ReportHeader";
@@ -498,6 +500,18 @@ namespace AWOMuensterlandRecklinghausen
this.fieldBillableAmountYear.Expression = "[BillableAmountInReportTimeSpan]*12";
this.fieldBillableAmountYear.Name = "fieldBillableAmountYear";
//
// xrLabel1
//
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ReportStartDate", "{0:MMMM yyyy}")});
this.xrLabel1.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(248.1252F, 10.00001F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(180F, 23F);
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.Text = "xrLabel1";
//
// Finanzplanung
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -577,5 +591,6 @@ namespace AWOMuensterlandRecklinghausen
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
private DevExpress.XtraReports.UI.CalculatedField fieldBillableAmountYear;
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
}
}

View File

@@ -63,6 +63,12 @@
<ItemGroup>
<Compile Include="CustomReportCreator.cs" />
<Compile Include="CustomSettlementInvoiceCreation.cs" />
<Compile Include="Finanzauswertung.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Finanzauswertung.designer.cs">
<DependentUpon>Finanzauswertung.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Quittierungsbeleg.cs">
<SubType>Component</SubType>
@@ -110,6 +116,10 @@
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Finanzauswertung.resx">
<DependentUpon>Finanzauswertung.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Quittierungsbeleg.resx">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>

View File

@@ -13,28 +13,28 @@ namespace BeWo.AidshilfeDortmund
{
public override List<InvoiceItemDC> CreateInvoiceItems(Settlement2DC si, IList<ApprovalPeriod> apList, bool schneideBeiMaxAb)
{
var items = base.CreateInvoiceItems(si, apList, true);
//public override List<InvoiceItemDC> CreateInvoiceItems(Settlement2DC si, IList<ApprovalPeriod> apList, bool schneideBeiMaxAb)
//{
// var items = base.CreateInvoiceItems(si, apList, true);
decimal hours = 0;
foreach (var ap in apList)
{
hours += ap.RecordedMinutes;
}
if (si.RateFactor.HasValue)
{
hours *= (100 + si.RateFactor.Value) / 100;
}
hours /= 60;
// decimal hours = 0;
// foreach (var ap in apList)
// {
// hours += ap.RecordedMinutes;
// }
// if (si.RateFactor.HasValue)
// {
// hours *= (100 + si.RateFactor.Value) / 100;
// }
// hours /= 60;
si.RecordedBillableFLSNetto = hours;
si.RecordedBillableFLSBrutto = si.RecordedBillableFLSNetto;
// si.RecordedBillableFLSNetto = hours;
// si.RecordedBillableFLSBrutto = si.RecordedBillableFLSNetto;
return items;
}
// return items;
//}
//public override List<InvoiceItemDC> CreateInvoiceItems(Settlement2DC si, IList<ApprovalPeriod> apList, bool schneideBeiMaxAb)
//{
// List<InvoiceItemDC> iiList = new List<InvoiceItemDC>();

View File

@@ -0,0 +1,79 @@
using System;
using BeWo.Report;
using BeWo.Report.ReportObjects;
namespace AidshilfeDortmund
{
public partial class Finanzauswertung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<FinanceRO>
{
public Finanzauswertung()
{
InitializeComponent();
}
public void SetReportDataSource(FinanceRO pRO)
{
pRO.CalculateBillableAmountInReportTimeSpan();
pRO.CalculatePaidAmountInReportTimeSpan();
if (pRO.ReportStartDate.HasValue && pRO.ReportEndDate.HasValue)
{
DateTime start = pRO.ReportStartDate.Value;
DateTime end = pRO.ReportEndDate.Value;
if (start.Year == end.Year && start.Month == end.Month && start.Day == 1 &&
end.Day == DateTime.DaysInMonth(end.Year, end.Month))
{
lblTitel.Text = String.Format("Finanzauswertung {0:MMMM yyyy}", start);
cellBewilligtImZeitraumHeader.Text = String.Format("bewilligte FLS {0:MMMM}", start);
cellGeleistetImZeitraumHeader.Text = String.Format("geleistete Std. {0:MMMM}", start);
cellFehlkontakteHeader.Text = String.Format("Fehl-\nkontakte {0:MMMM}", start);
}
else
{
lblTitel.Text = String.Format("Finanzauswertung {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
cellBewilligtImZeitraumHeader.Text = String.Format("bewilligte FLS {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
cellGeleistetImZeitraumHeader.Text = String.Format("geleistete Std. {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
//cellFehlkontakteHeader.Text = String.Format("Fehl-\nkontakte {0:dd.MM.yyyy}-{1:dd.MM.yyyy}", start, end);
}
if (pRO.RateFactor.HasValue)
{
cellRateFactorHeader.Text = String.Format("geleistete Std. x {0:0.##}", pRO.RateFactor);
}
else
{
//cellRateFactorHeader.Visible = false;
//cellRateFactor.Visible = false;
}
}
else
{
cellBewilligtImZeitraumHeader.Visible = false;
cellBewilligteFLSImBereich.Visible = false;
cellGeleistetImBereich.Visible = false;
cellGeleistetImZeitraumHeader.Visible = false;
cellRateFactorHeader.Visible = false;
cellRateFactor.Visible = false;
}
if (pRO.GruppierungLeistungskategorie && pRO.SupportConceptFinanceList != null)
{
GroupHeader1.Visible = true;
GroupFooter1.Visible = true;
foreach (var scRo in pRO.SupportConceptFinanceList)
{
if (String.IsNullOrEmpty(scRo.Leistungskategorie))
{
scRo.GruppierungsKategorie = " ";
}
else
{
scRo.GruppierungsKategorie = String.Format("Leistungskategorie {0}", scRo.Leistungskategorie);
}
}
}
this.bindingSource1.DataSource = pRO;
}
}
}

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -87,7 +87,16 @@ namespace AkggMid
return false;
if (item.AbsenceReason.Description.ToLower().Contains("ma_vkt"))
return false;
if (item.AbsenceReason.Description.ToLower().Contains("ma_bkl"))
return false;
if (item.AbsenceReason.Description.ToLower().Contains("ma_päd.tag"))
return false;
if (item.AbsenceReason.Description.ToLower().Contains("ma_uf"))
return false;
return base.IstAnrechenbareAbsenceTime(item);
}
@@ -96,7 +105,34 @@ namespace AkggMid
return !IsUrlaubAbsenceTime(absenceTime);
}
public override decimal GetFeiertagsFaktor(DateTime start)
public override decimal? GetSollStundenForAbsenceTime(MitarbeiterstundenkontoRO.EmployeeDetail ed, AbsenceTime at, DateTime datum)
{
if (at.AbsenceReason.Description.StartsWith("MA_K") || at.AbsenceReason.Description.StartsWith("MA_KAU") || at.AbsenceReason.Description.StartsWith("MA_KK"))
{
foreach (var vv in ed.Employee.VarFieldValueList)
{
if (vv.VarFieldDefOid == 2)
{
var varFieldValue = BS.Shared.Core.Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName));
decimal dec = 0;
if (varFieldValue != null && Decimal.TryParse(varFieldValue.ToString(), out dec))
{
return dec / 5;
}
}
}
}
return base.GetSollStundenForAbsenceTime(ed, at, datum);
}
public override bool AddAbsenceTimeToIst()
{
return true;
}
public override decimal GetFeiertagsFaktor(DateTime start)
{
if (BerechneFerienTage && start < new DateTime(2023, 9, 4))
{

View File

@@ -0,0 +1,96 @@
<?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>{868AC89C-BC74-4615-9B09-853ADE03B967}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DiakonischesWerkDinslakenBeWo</RootNamespace>
<AssemblyName>7164646882_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.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Invoicing\SettlementInvoiceCreation.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="QuittierungsbelegMitDatum.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="QuittierungsbelegMitDatum.Designer.cs">
<DependentUpon>QuittierungsbelegMitDatum.cs</DependentUpon>
</Compile>
<Compile Include="SettlementReport2.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="SettlementReport2.Designer.cs">
<DependentUpon>SettlementReport2.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\..\Report\Report.csproj">
<Project>{40d8b312-ea64-49e3-a31a-5e57ed4d5654}</Project>
<Name>Report</Name>
</ProjectReference>
<ProjectReference Include="..\..\Service\Service.csproj">
<Project>{094331c3-ecee-4c89-bbfd-4c9ded89f0ef}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\..\Shared\Shared.csproj">
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<ItemGroup>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="QuittierungsbelegMitDatum.resx">
<DependentUpon>QuittierungsbelegMitDatum.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SettlementReport2.resx">
<DependentUpon>SettlementReport2.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,14 @@
using BeWo.Data.Entities;
using BeWo.Service.Invoicing;
using BS.Shared.DataContracts;
namespace DiakonischesWerkDinslakenBeWo
{
public class CustomSettlementInvoiceCreation : SettlementInvoiceCreation
{
public override bool CanCreateInvoiceTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
{
return false;
}
}
}

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("DiakonischesWerkDinslakenBeWo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DiakonischesWerkDinslakenBeWo")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[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 @@
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,142 @@
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 DiakonischesWerkDinslakenBeWo
{
public partial class Quittierungsbeleg2 : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServicesOverviewRO>
{
public Quittierungsbeleg2()
{
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"))
{
if (sd.ServiceDescription.ToLower().Contains("fehlkontakt") || sd.ServiceCategory.ToLower().Contains("fehlkontakt"))
sd.Notice5 = "F";
else if (sd.IsGroup)
sd.Notice5 = "GR";
else if (!sd.IsGroup)
sd.Notice5 = "E";
//ServicesOverviewRO.CreateSignatureString(sd);
if (sd.IsGroup)
{
//sd.Notice5 = String.Format("{0} Teilnehmer", sd.CustomerCount);
hatGruppen = true;
}
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)
{
if (at.AbsenceReason.BillableMinutes.HasValue && at.AbsenceReason.BillableMinutes.Value > 0)
{
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.Drawing.Printing.PrintEventArgs 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)
{
Image returnImage = null;
MemoryStream ms = new System.IO.MemoryStream(byteArrayIn);
returnImage = Image.FromStream(ms);
return returnImage;
}
}
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,62 @@
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared.Extensions;
namespace DiakonischesWerkDinslakenBeWo
{
public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<Settlement2RO>
{
public Spitzabrechnung()
{
InitializeComponent();
}
public void SetReportDataSource(Settlement2RO pRO)
{
decimal rateFactor = 1;
foreach (var ii in pRO.InvoiceItems)
{
if (ii.RateFactor.HasValue)
{
rateFactor = (100 + ii.RateFactor.Value) / 100;
}
if (!pRO.FehlkontakteString.IsNullOrEmpty() && ii.RateFactor == 0)
{
Zwischensumme.Visible = true;
ii.AbrechnungsText = ii.AbrechnungsText.Replace("FLS", "Std.");
ii.ItemDescription = "Fehlkontakte";
}
else if (ii.ItemDescription.IsNullOrEmpty())
{
ii.ItemDescription = "Fachleistungsstunden";
}
}
pRO.RateFactor = (double)rateFactor;
if (pRO.TerminationDate == null)
{
lblStammdaten.Text = lblStammdaten.Text.Remove(lblStammdaten.Text.Length - 34, 34);
}
if (pRO.Claim > 0)
lblRestforderungGutschrift.Text = "Restforderung";
else
lblRestforderungGutschrift.Text = "Gutschrift aus Überzahlung";
if (pRO.AbsenceReason1 == null)
pRO.AbsenceReason1 = "-";
if (pRO.AbsenceReason2 == null)
pRO.AbsenceReason2 = "-";
if (pRO.AbsenceReason3 == null)
pRO.AbsenceReason3 = "-";
if (pRO.AbsenceReason4 == null)
pRO.AbsenceReason4 = "-";
this.bindingSource1.DataSource = pRO;
}
}
}

View File

@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="xrLabel11.Text" xml:space="preserve">
<value>Hiermit wird erklärt, dass die Verpflichtungen aus der Leistungs-, Prüfungs- und Vergütungsvereinbarung gemäß
den §§ 53, 54 Sozialgesetzbuch, zwölftes Buch (SGB XII) und § 54 Sozialgesetzbuch, neuntes Buch (SGB IX) eingehalten wurden und die vorgenannten Angaben anhand der vorgehaltenen
Quittierungsbelege sowie der Betreuungsdokumentation jederzeit nachgewiesen werden können.
</value>
</data>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="xrLabel36.Text" xml:space="preserve">
<value>von [AbsenceStartDate1!dd.MM.yyyy] bis [AbsenceEndDate1!dd.MM.yyyy]
von [AbsenceStartDate2!dd.MM.yyyy] bis [AbsenceEndDate2!dd.MM.yyyy]
von [AbsenceStartDate3!dd.MM.yyyy] bis [AbsenceEndDate3!dd.MM.yyyy]
von [AbsenceStartDate4!dd.MM.yyyy] bis [AbsenceEndDate4!dd.MM.yyyy]</value>
</data>
</root>

View File

@@ -306,6 +306,16 @@ namespace DomizielAnsbach.Invoicing
//return newlist;
}
public override string GetSummaryItemKey(SupportConceptApprovalPeriod scap, InvoiceItem iitem, bool summaryPerMonth)
{
String key = String.Format("{0}_{1}_{2}", iitem.AmountPerUnit, iitem.ItemDescription, iitem.RateFactor);
if (summaryPerMonth)
{
key = String.Format("{0}_{1}_{2}_{3:yyyyMM}", iitem.AmountPerUnit, iitem.ItemDescription, iitem.RateFactor, iitem.ItemPeriodStart);
}
return key;
}
private InvoiceItem CreateFahrtkostenZulageItem(List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, ZuverdienstHelper.AktuellePauschalen pausch)
{
decimal? pauschale;

View File

@@ -41,6 +41,7 @@ namespace EvVereinF
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.ruleNoticeNull = new DevExpress.XtraReports.UI.FormattingRule();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
@@ -55,41 +56,37 @@ namespace EvVereinF
this.xrTableRow25 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell38 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell42 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell45 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell18 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrTable3 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell39 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow5 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell40 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell41 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell43 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell44 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell46 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell48 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell49 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell50 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.fieldMonatskontingent = new DevExpress.XtraReports.UI.CalculatedField();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
@@ -183,6 +180,15 @@ namespace EvVereinF
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell12.Weight = 0.19843414978427643D;
//
// xrTableCell21
//
this.xrTableCell21.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell21.Name = "xrTableCell21";
this.xrTableCell21.StylePriority.UseBorders = false;
this.xrTableCell21.StylePriority.UseTextAlignment = false;
this.xrTableCell21.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell21.Weight = 0.26623734753935857D;
//
// xrTableCell14
//
this.xrTableCell14.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
@@ -331,7 +337,6 @@ namespace EvVereinF
this.xrTableRow25.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell38,
this.xrTableCell42,
this.xrTableCell8,
this.xrTableCell3,
this.xrTableCell9,
this.xrTableCell45,
@@ -370,19 +375,7 @@ namespace EvVereinF
this.xrTableCell42.StylePriority.UsePadding = false;
this.xrTableCell42.StylePriority.UseTextAlignment = false;
this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell42.Weight = 0.55482017348006873D;
//
// xrTableCell8
//
this.xrTableCell8.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.StylePriority.UseBorders = false;
this.xrTableCell8.StylePriority.UseFont = false;
this.xrTableCell8.StylePriority.UseTextAlignment = false;
this.xrTableCell8.Text = "[CostBearer2SupportConcept.StartDate!dd.MM.yyyy] - [CostBearer2SupportConcept.End" +
"Date!dd.MM.yyyy]";
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell8.Weight = 0.37220110289628361D;
this.xrTableCell42.Weight = 0.92702127307973647D;
//
// xrTableCell3
//
@@ -394,7 +387,7 @@ namespace EvVereinF
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "xrTableCell3";
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell3.Weight = 0.24966906212533097D;
this.xrTableCell3.Weight = 0.24966906542194678D;
//
// xrTableCell9
//
@@ -448,6 +441,18 @@ namespace EvVereinF
this.xrTableCell17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell17.Weight = 0.27741008998905758D;
//
// xrTableCell20
//
this.xrTableCell20.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell20.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.NotBillableString")});
this.xrTableCell20.Name = "xrTableCell20";
this.xrTableCell20.StylePriority.UseBorders = false;
this.xrTableCell20.StylePriority.UseTextAlignment = false;
this.xrTableCell20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell20.Weight = 0.37220109873490642D;
//
// xrTableCell18
//
this.xrTableCell18.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
@@ -487,7 +492,6 @@ namespace EvVereinF
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2,
this.xrTableCell4,
this.xrTableCell5,
this.xrTableCell6,
this.xrTableCell7,
this.xrTableCell10,
@@ -519,18 +523,7 @@ namespace EvVereinF
this.xrTableCell4.StylePriority.UseBorders = false;
this.xrTableCell4.StylePriority.UseFont = false;
this.xrTableCell4.Text = "Name, Vorname";
this.xrTableCell4.Weight = 0.55198215450080845D;
//
// xrTableCell5
//
this.xrTableCell5.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)));
this.xrTableCell5.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
this.xrTableCell5.Multiline = true;
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.StylePriority.UseBorders = false;
this.xrTableCell5.StylePriority.UseFont = false;
this.xrTableCell5.Text = "Laufzeit";
this.xrTableCell5.Weight = 0.37029716625546266D;
this.xrTableCell4.Weight = 0.92227940729441937D;
//
// xrTableCell6
//
@@ -540,7 +533,7 @@ namespace EvVereinF
this.xrTableCell6.StylePriority.UseBorders = false;
this.xrTableCell6.StylePriority.UseFont = false;
this.xrTableCell6.Text = "Geburtsdatum";
this.xrTableCell6.Weight = 0.24839175801207961D;
this.xrTableCell6.Weight = 0.2483916714739314D;
//
// xrTableCell7
//
@@ -582,6 +575,16 @@ namespace EvVereinF
this.xrTableCell16.Text = "Korrekturbetrag";
this.xrTableCell16.Weight = 0.27599145320504359D;
//
// xrTableCell13
//
this.xrTableCell13.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)));
this.xrTableCell13.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.StylePriority.UseBorders = false;
this.xrTableCell13.StylePriority.UseFont = false;
this.xrTableCell13.Text = "Korrekturzeitraum";
this.xrTableCell13.Weight = 0.37029661671416969D;
//
// xrTableCell39
//
this.xrTableCell39.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
@@ -599,7 +602,6 @@ namespace EvVereinF
this.xrTableRow5.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell40,
this.xrTableCell41,
this.xrTableCell43,
this.xrTableCell44,
this.xrTableCell46,
this.xrTableCell47,
@@ -628,18 +630,7 @@ namespace EvVereinF
this.xrTableCell41.Name = "xrTableCell41";
this.xrTableCell41.StylePriority.UseBorders = false;
this.xrTableCell41.StylePriority.UseFont = false;
this.xrTableCell41.Weight = 0.55198214369032506D;
//
// xrTableCell43
//
this.xrTableCell43.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell43.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
this.xrTableCell43.Multiline = true;
this.xrTableCell43.Name = "xrTableCell43";
this.xrTableCell43.StylePriority.UseBorders = false;
this.xrTableCell43.StylePriority.UseFont = false;
this.xrTableCell43.Text = "Bewilligung";
this.xrTableCell43.Weight = 0.37029712414361859D;
this.xrTableCell41.Weight = 0.92227943867869411D;
//
// xrTableCell44
//
@@ -648,7 +639,7 @@ namespace EvVereinF
this.xrTableCell44.Name = "xrTableCell44";
this.xrTableCell44.StylePriority.UseBorders = false;
this.xrTableCell44.StylePriority.UseFont = false;
this.xrTableCell44.Weight = 0.24839180012495279D;
this.xrTableCell44.Weight = 0.24839162928020231D;
//
// xrTableCell46
//
@@ -687,6 +678,15 @@ namespace EvVereinF
this.xrTableCell49.StylePriority.UseFont = false;
this.xrTableCell49.Weight = 0.27599226811681632D;
//
// xrTableCell19
//
this.xrTableCell19.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell19.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
this.xrTableCell19.Name = "xrTableCell19";
this.xrTableCell19.StylePriority.UseBorders = false;
this.xrTableCell19.StylePriority.UseFont = false;
this.xrTableCell19.Weight = 0.37029601053343347D;
//
// xrTableCell50
//
this.xrTableCell50.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
@@ -706,46 +706,6 @@ namespace EvVereinF
this.fieldMonatskontingent.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldMonatskontingent.Name = "fieldMonatskontingent";
//
// xrTableCell13
//
this.xrTableCell13.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)));
this.xrTableCell13.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.StylePriority.UseBorders = false;
this.xrTableCell13.StylePriority.UseFont = false;
this.xrTableCell13.Text = "Korrekturzeitraum";
this.xrTableCell13.Weight = 0.37029661671416969D;
//
// xrTableCell19
//
this.xrTableCell19.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell19.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold);
this.xrTableCell19.Name = "xrTableCell19";
this.xrTableCell19.StylePriority.UseBorders = false;
this.xrTableCell19.StylePriority.UseFont = false;
this.xrTableCell19.Weight = 0.37029601053343347D;
//
// xrTableCell20
//
this.xrTableCell20.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell20.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.NotBillableString")});
this.xrTableCell20.Name = "xrTableCell20";
this.xrTableCell20.StylePriority.UseBorders = false;
this.xrTableCell20.StylePriority.UseTextAlignment = false;
this.xrTableCell20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell20.Weight = 0.37220109873490642D;
//
// xrTableCell21
//
this.xrTableCell21.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell21.Name = "xrTableCell21";
this.xrTableCell21.StylePriority.UseBorders = false;
this.xrTableCell21.StylePriority.UseTextAlignment = false;
this.xrTableCell21.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell21.Weight = 0.26623734753935857D;
//
// SammelrechnungTab
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -796,7 +756,6 @@ namespace EvVereinF
private DevExpress.XtraReports.UI.XRTableCell xrTableCell45;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.FormattingRule ruleNoticeNull;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRTable xrTable1;
@@ -817,7 +776,6 @@ namespace EvVereinF
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
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.XRTableCell xrTableCell10;
@@ -827,7 +785,6 @@ namespace EvVereinF
private DevExpress.XtraReports.UI.XRTableRow xrTableRow5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell40;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell41;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell43;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell44;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell46;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell47;

View File

@@ -0,0 +1,101 @@
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 BeWo.Service.Plugins;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using DevExpress.XtraReports.Design;
using DevExpress.XtraReports.UI;
namespace Fortis
{
public class CustomReportCreator : DefaultReportCreator
{
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).OrderBy(ro => ro.CustomerLastName).ToList();
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);
}
}
roList = roList.OrderBy(ro => ro.CustomerLastName).ToList();
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);
}
private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
IBeWoReport<ServicesOverviewRO> report = null;
if (ro.CustomerFirstName.Contains("TEST") || ro.CustomerLastName.Contains("TEST"))
{
report = new Fortis.Quittierungsbeleg();
}
if (report == null)
report = new BeWo.Report.DefaultReports.Quittierungsbeleg();
report.SetReportDataSource(ro);
return report as XtraReport;
}
}
}

View File

@@ -62,6 +62,7 @@
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="CustomReportCreator.cs" />
<Compile Include="FortisHomeContentGenerator.cs" />
<Compile Include="CustomerDataReport.cs">
<SubType>Component</SubType>

View File

@@ -41,8 +41,6 @@ namespace Fortis
DevExpress.XtraReports.UI.XRSummary xrSummary9 = new DevExpress.XtraReports.UI.XRSummary();
DevExpress.XtraReports.UI.XRSummary xrSummary10 = new DevExpress.XtraReports.UI.XRSummary();
DevExpress.XtraReports.UI.XRSummary xrSummary11 = new DevExpress.XtraReports.UI.XRSummary();
DevExpress.XtraReports.UI.XRSummary xrSummary12 = new DevExpress.XtraReports.UI.XRSummary();
DevExpress.XtraReports.UI.XRSummary xrSummary13 = new DevExpress.XtraReports.UI.XRSummary();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
@@ -93,7 +91,6 @@ namespace Fortis
this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell49 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
@@ -126,10 +123,11 @@ namespace Fortis
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
this.Dauer = new DevExpress.XtraReports.UI.CalculatedField();
this.True = new DevExpress.XtraReports.UI.FormattingRule();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
@@ -325,7 +323,7 @@ namespace Fortis
//
this.xrTableCell42.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(240)))), ((int)(((byte)(217)))));
this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.ServiceCategoryAbbr")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.EmployeeCount", "{0:0}")});
this.xrTableCell42.Name = "xrTableCell42";
this.xrTableCell42.StylePriority.UseBackColor = false;
this.xrTableCell42.StylePriority.UseTextAlignment = false;
@@ -347,7 +345,7 @@ namespace Fortis
//
this.xrTableCell45.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(169)))), ((int)(((byte)(209)))), ((int)(((byte)(142)))));
this.xrTableCell45.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.StartDateString")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.CustomerCount")});
this.xrTableCell45.Name = "xrTableCell45";
this.xrTableCell45.StylePriority.UseBackColor = false;
this.xrTableCell45.StylePriority.UseTextAlignment = false;
@@ -379,7 +377,7 @@ namespace Fortis
this.xrTableCell18.StylePriority.UseFont = false;
this.xrTableCell18.StylePriority.UseTextAlignment = false;
this.xrTableCell18.Text = "xrTableCell18";
this.xrTableCell18.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell18.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell18.Weight = 0.063131315799868082D;
//
// xrTableCell17
@@ -393,7 +391,7 @@ namespace Fortis
this.xrTableCell17.StylePriority.UseFont = false;
this.xrTableCell17.StylePriority.UseTextAlignment = false;
this.xrTableCell17.Text = "xrTableCell17";
this.xrTableCell17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell17.Weight = 0.063131313391599567D;
//
// xrTableCell50
@@ -408,7 +406,7 @@ namespace Fortis
this.xrTableCell50.StylePriority.UseFont = false;
this.xrTableCell50.StylePriority.UsePadding = false;
this.xrTableCell50.StylePriority.UseTextAlignment = false;
this.xrTableCell50.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell50.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell50.Weight = 0.063131320138792066D;
//
// GroupHeader1
@@ -845,10 +843,6 @@ namespace Fortis
this.xrTableCell49.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
this.xrTableCell49.Weight = 0.13966474814693633D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// formattingRuleStartDate
//
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
@@ -1145,14 +1139,9 @@ namespace Fortis
//
// xrTableCell46
//
this.xrTableCell46.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.ServiceCategoryAbbr")});
this.xrTableCell46.Name = "xrTableCell46";
this.xrTableCell46.StylePriority.UseBackColor = false;
this.xrTableCell46.StylePriority.UseTextAlignment = false;
xrSummary9.FormatString = "{0:0}";
xrSummary9.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell46.Summary = xrSummary9;
this.xrTableCell46.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell46.Weight = 0.055555632806937594D;
//
@@ -1163,22 +1152,17 @@ namespace Fortis
this.xrTableCell47.Name = "xrTableCell47";
this.xrTableCell47.StylePriority.UseBackColor = false;
this.xrTableCell47.StylePriority.UseTextAlignment = false;
xrSummary10.FormatString = "{0:0}";
xrSummary10.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell47.Summary = xrSummary10;
xrSummary9.FormatString = "{0:0}";
xrSummary9.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell47.Summary = xrSummary9;
this.xrTableCell47.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell47.Weight = 0.055555325752703361D;
//
// xrTableCell51
//
this.xrTableCell51.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.StartDateString")});
this.xrTableCell51.Name = "xrTableCell51";
this.xrTableCell51.StylePriority.UseBackColor = false;
this.xrTableCell51.StylePriority.UseTextAlignment = false;
xrSummary11.FormatString = "{0:0}";
xrSummary11.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell51.Summary = xrSummary11;
this.xrTableCell51.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell51.Weight = 0.055555593812079931D;
//
@@ -1192,9 +1176,9 @@ namespace Fortis
this.xrTableCell52.StylePriority.UseFont = false;
this.xrTableCell52.StylePriority.UsePadding = false;
this.xrTableCell52.StylePriority.UseTextAlignment = false;
xrSummary12.FormatString = "{0:0}";
xrSummary12.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell52.Summary = xrSummary12;
xrSummary10.FormatString = "{0:0}";
xrSummary10.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell52.Summary = xrSummary10;
this.xrTableCell52.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell52.Weight = 0.055555634752644537D;
//
@@ -1229,10 +1213,10 @@ namespace Fortis
this.xrTableCell55.StylePriority.UseFont = false;
this.xrTableCell55.StylePriority.UsePadding = false;
this.xrTableCell55.StylePriority.UseTextAlignment = false;
xrSummary13.FormatString = "{0:0}";
xrSummary13.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell55.Summary = xrSummary13;
this.xrTableCell55.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
xrSummary11.FormatString = "{0:0}";
xrSummary11.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell55.Summary = xrSummary11;
this.xrTableCell55.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell55.Weight = 0.063131320138792066D;
//
// fieldKontaktArt
@@ -1253,6 +1237,10 @@ namespace Fortis
//
this.True.Name = "True";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// Quittierungsbeleg
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -1280,8 +1268,8 @@ namespace Fortis
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}

View File

@@ -22,49 +22,157 @@ namespace Fortis
{
if (pRO.Services != null)
{
//H Hausbesuch = Notice
//B Begleitung im Sozialraum = Notice2
//T Kontakt per Telefon etc. = Notice3
//GD Kontakt mit Leistungsberechtigten in der Dienststelle = Notice4
//KL Kompensatorische Leistung ohne LB = Notice5
//AK Assistenz im Krankenhaus = ServiceCategory
//MA Anzahl Mitarbeitende = ServiceCategoryAbbr
//GI Gemeinsame Inanspruchnahme = GefahreneKilometer
//Größe = StartDateString
//Summe1 = TimeRangeString
//Beginn = EmployeeFirstName
//Ende = EmployeeFullname
//Summe2 = EmployeeLastname
Dictionary<int, FortisServiceRecord> tag2Details = new Dictionary<int, FortisServiceRecord>();
foreach (var sr in pRO.Services)
{
sr.Notice = String.Format("{0:0}", sr.Minutes);
sr.Notice2 = "";
sr.Notice3 = "";
sr.Notice4 = "";
sr.Notice5 = "";
sr.ServiceCategory = "";
sr.ServiceCategoryAbbr = "";
sr.GefahreneKilometer = "";
sr.StartDateString = "";
sr.TimeRangeString = "";
sr.EmployeeFirstName = "";
sr.EmployeeFullname = "";
sr.EmployeeLastName = "";
if (sr.ServiceDescription == "Hausbesuch")
FortisServiceRecord fsr = null;
if (!tag2Details.ContainsKey(sr.StartDate.Day))
{
sr.Notice = String.Format("{0:0}", sr.Minutes);
fsr = new FortisServiceRecord();
tag2Details.Add(sr.StartDate.Day, fsr);
}
else
{
fsr = tag2Details[sr.StartDate.Day];
}
sr.ServiceDescription = "";
if (sr.ServiceDescription.Contains("Wohnraum"))
{
fsr.MinutenH += sr.Minutes;
}
else if (sr.ServiceDescription.Contains("Sozialraum"))
{
fsr.MinutenB += sr.Minutes;
}
else if (sr.ServiceDescription.Contains("Telefon"))
{
fsr.MinutenT += sr.Minutes;
}
else if (sr.ServiceDescription.Contains("Dienststelle"))
{
fsr.MinutenGD += sr.Minutes;
}
else if (sr.ServiceDescription.Contains("pool"))
{
fsr.MinutenGI += sr.Minutes;
}
else if (sr.ServiceDescription.Contains("Kompensatorisch"))
{
fsr.MinutenKL += sr.Minutes;
}
else if (sr.ServiceDescription.Contains("Krankenhaus"))
{
fsr.MinutenAK += sr.Minutes;
}
else if (sr.ServiceDescription.Contains("abgesagt"))
{
fsr.FehlkontaktBeginn = sr.StartDate;
fsr.FehlkontaktEnde = sr.EndDate;
}
fsr.AnzahlMA += sr.EmployeeCount;
fsr.Groesse += sr.CustomerCount;
}
List<ServicesOverviewRO.ServiceDetail> newServices = new List<ServicesOverviewRO.ServiceDetail>();
for (int i = pRO.StartDate.Day; i <= pRO.EndDate.Day; i++)
{
if (tag2Details.ContainsKey(i))
{
var fsr = tag2Details[i];
var sr = new ServicesOverviewRO.ServiceDetail();
sr.StartDate = new DateTime(pRO.StartDate.Year, pRO.StartDate.Month, i);
//H Hausbesuch = Notice
//B Begleitung im Sozialraum = Notice2
//T Kontakt per Telefon etc. = Notice3
//GD Kontakt mit Leistungsberechtigten in der Dienststelle = Notice4
//KL Kompensatorische Leistung ohne LB = Notice5
//AK Assistenz im Krankenhaus = ServiceCategory
//MA Anzahl Mitarbeitende = ServiceCategoryAbbr (EmployeeCount)
//GI Gemeinsame Inanspruchnahme = GefahreneKilometer
//Größe = StartDateString (CustomerCount)
//Summe1 = TimeRangeString
//Beginn = EmployeeFirstName
//Ende = EmployeeFullname
//Summe2 = EmployeeLastname
if (fsr.MinutenH > 0)
{
sr.Notice = String.Format("{0:0}", fsr.MinutenH);
}
if (fsr.MinutenB > 0)
{
sr.Notice2 = String.Format("{0:0}", fsr.MinutenB);
}
if (fsr.MinutenT > 0)
{
sr.Notice3 = String.Format("{0:0}", fsr.MinutenT);
}
if (fsr.MinutenGD > 0)
{
sr.Notice4 = String.Format("{0:0}", fsr.MinutenGD);
}
if (fsr.MinutenKL > 0)
{
sr.Notice5 = String.Format("{0:0}", fsr.MinutenKL);
}
if (fsr.MinutenAK > 0)
{
sr.ServiceCategory = String.Format("{0:0}", fsr.MinutenAK);
}
if (fsr.MinutenGI > 0)
{
sr.GefahreneKilometer = String.Format("{0:0}", fsr.MinutenGI);
}
sr.EmployeeCount = fsr.AnzahlMA;
sr.CustomerCount = fsr.Groesse;
sr.TimeRangeString = String.Format("{0:0}", fsr.MinutenH + fsr.MinutenB + fsr.MinutenT + fsr.MinutenGD + fsr.MinutenKL + fsr.MinutenAK + fsr.MinutenGI);
if (fsr.FehlkontaktBeginn.HasValue && fsr.FehlkontaktEnde.HasValue)
{
sr.EmployeeFirstName = String.Format("{0:HH:mm}", fsr.FehlkontaktBeginn);
sr.EmployeeFullname = String.Format("{0:HH:mm}", fsr.FehlkontaktEnde);
sr.EmployeeLastName = String.Format("{0:0}", fsr.FehlkontaktEnde.Value.Subtract(fsr.FehlkontaktBeginn.Value).TotalMinutes);
}
newServices.Add(sr);
}
}
pRO.Services = newServices;
}
bindingSource1.DataSource = pRO;
}
}
public class FortisServiceRecord
{
public double MinutenH { get; set; }
public double MinutenB { get; set; }
public double MinutenT { get; set; }
public double MinutenGD { get; set; }
public double MinutenKL { get; set; }
public double MinutenAK { get; set; }
public int AnzahlMA { get; set; }
public double MinutenGI { get; set; }
public int Groesse { get; set; }
public DateTime? FehlkontaktBeginn { get; set; }
public DateTime? FehlkontaktEnde { get; set; }
}
}

View File

@@ -33,7 +33,8 @@ namespace HphBersenbrueckFreizeitUndReisen.Abrechnung
//Reisen sollen getrennt abgerechnet werden.
List<ServiceRecordDC> serviceRecordsReise = new List<ServiceRecordDC>();
List<ServiceRecordDC> serviceRecordsNichtReise = new List<ServiceRecordDC>();
List<ServiceRecordDC> serviceRecordsKurzurlaub = new List<ServiceRecordDC>();
List<ServiceRecordDC> serviceRecordsNichtUrlaubUndReise = new List<ServiceRecordDC>();
foreach (var item in alleServiceRecords)
{
@@ -41,9 +42,13 @@ namespace HphBersenbrueckFreizeitUndReisen.Abrechnung
{
serviceRecordsReise.Add(item);
}
else if (item.ServiceDescription.Name.ToLower().Contains("kurzurlaub"))
{
serviceRecordsReise.Add(item);
}
else
{
serviceRecordsNichtReise.Add(item);
serviceRecordsNichtUrlaubUndReise.Add(item);
}
}
@@ -97,7 +102,7 @@ namespace HphBersenbrueckFreizeitUndReisen.Abrechnung
IList<ServiceInvoice> pflegekassenRechnungen = null;
if (pflegekasse != null)
{
pflegekassenRechnungen = CreatePflegekassenRechnungen(invoiceCounter, pflegekasse, customer, invoicePeriod, sc, serviceRecordsNichtReise);
pflegekassenRechnungen = CreatePflegekassenRechnungen(invoiceCounter, pflegekasse, customer, invoicePeriod, sc, serviceRecordsNichtUrlaubUndReise);
if (pflegekassenRechnungen != null && pflegekassenRechnungen.Count > 0)
{
@@ -109,6 +114,17 @@ namespace HphBersenbrueckFreizeitUndReisen.Abrechnung
{
var invoices = CreatePflegekassenRechnungen(invoiceCounter, pflegekasse, customer, invoicePeriod, sc, serviceRecordsReise);
if (invoices != null && invoices.Count > 0)
{
invoiceList.AddRange(invoices);
invoiceCounter++;
}
}
if (serviceRecordsKurzurlaub.Count > 0)
{
var invoices = CreatePflegekassenRechnungen(invoiceCounter, pflegekasse, customer, invoicePeriod, sc, serviceRecordsKurzurlaub);
if (invoices != null && invoices.Count > 0)
{
invoiceList.AddRange(invoices);
@@ -120,7 +136,7 @@ namespace HphBersenbrueckFreizeitUndReisen.Abrechnung
if (selbszahler != null)
{
var selbstzahlerRechnungen = CreateSelbstzahlerRechnungen(invoiceCounter, customer, invoicePeriod, sc, serviceRecordsNichtReise);
var selbstzahlerRechnungen = CreateSelbstzahlerRechnungen(invoiceCounter, customer, invoicePeriod, sc, serviceRecordsNichtUrlaubUndReise);
foreach (var rg in selbstzahlerRechnungen)
{
@@ -150,6 +166,20 @@ namespace HphBersenbrueckFreizeitUndReisen.Abrechnung
}
}
if (serviceRecordsKurzurlaub.Count > 0)
{
var rglist = CreateSelbstzahlerRechnungen(invoiceCounter, customer, invoicePeriod, sc, serviceRecordsKurzurlaub);
foreach (var rg in rglist)
{
if (rg.GetTotalClaim() > 0)
{
invoiceList.Add(rg);
invoiceCounter++;
}
}
}
}
if (invoiceList.Count == 0)

View File

@@ -79,10 +79,6 @@
<Compile Include="Validation\ServiceRecordValidator.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BeWo\BeWo.csproj">
<Project>{3FEBB560-9275-413A-9767-BB68C44EEBC3}</Project>
<Name>BeWo</Name>
</ProjectReference>
<ProjectReference Include="..\..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>

View File

@@ -5,14 +5,12 @@ using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Threading;
using BeWo.Core.Service;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BeWo.ServiceProxy;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;

View File

@@ -5,14 +5,12 @@ using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Threading;
using BeWo.Core.Service;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BeWo.ServiceProxy;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;

View File

@@ -146,22 +146,25 @@ namespace LebenshilfeBadKreuznach.Statistics
}
SupportConceptPeriodStatisticsDC periodStats = GetPeriodFromServiceRecord(cb2sc, stats.PeriodStatistics, sr);
decimal minutesProvidedWeekNew = 0;
decimal minutesProvidedWeekOld = 0;
decimal minutesProvidedQuartalNew = 0;
decimal minutesProvidedQuartalOld = 0;
if (periodStats != null)
{
//Verhindern dass das ServiceRecord durch den base Aufruf doppelt gezählt wird
minutesProvidedQuartalOld = periodStats.MinutesProvidedThisMonth;
minutesProvidedWeekOld = periodStats.MinutesProvidedThisWeek;
}
base.ProcessServiceRecord(sr, cb2sc, stats, statisticsDate, calc);
bool billable = false;
if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null)
{
billable = sr.ServiceDescription.ServiceCategory.IsBillable;
}
//bool billable = false;
//if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null)
//{
// billable = sr.ServiceDescription.ServiceCategory.IsBillable;
//}
@@ -178,10 +181,15 @@ namespace LebenshilfeBadKreuznach.Statistics
{
minutesProvidedQuartalNew = minutes;
}
periodStats.MinutesProvidedThisMonth = minutesProvidedQuartalOld + minutesProvidedQuartalNew;
DateTime mondayDt = statisticsDate.GetLast(DayOfWeek.Monday).Date;
if (sr.Start >= mondayDt && sr.Start < mondayDt.AddDays(7))
{
minutesProvidedWeekNew = minutes;
}
periodStats.MinutesProvidedThisMonth = minutesProvidedQuartalOld + minutesProvidedQuartalNew;
periodStats.MinutesProvidedThisWeek = minutesProvidedWeekOld + minutesProvidedWeekNew;
}
}

View File

@@ -15,7 +15,15 @@ namespace LebenshilfeBadKreuznach.Validation
int maxDaysEditServiceRecordsAllowed, IList<long> employeeOids, IList<long> cb2scOids)
{
var list = base.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids);
var newResult = new List<ServiceRecordValidationResultDC>();
foreach (var item in list)
{
if (item.ResultType != ServiceRecordValidationResult.ApprovedFLSOverspending && (String.IsNullOrEmpty(item.Message) || !item.Message.Contains("liegt außerhalb des Hilfeplanzeitraums")))
{
newResult.Add(item);
}
}
if (statistics != null && statistics.PeriodStatistics != null)
{
foreach (var stat in statistics.PeriodStatistics)
@@ -43,14 +51,14 @@ namespace LebenshilfeBadKreuznach.Validation
Allow = false
};
list.Add(dc);
newResult.Add(dc);
}
}
}
}
}
return list;
return newResult;
}
}
}

View File

@@ -66,8 +66,8 @@ namespace PaSMoenchengladbach.Alt
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
this.xrTable5 = new DevExpress.XtraReports.UI.XRTable();
@@ -94,12 +94,12 @@ namespace PaSMoenchengladbach.Alt
this.xrTableRow36 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell57 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell58 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel2 = 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.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
@@ -487,6 +487,21 @@ namespace PaSMoenchengladbach.Alt
this.GroupHeader1.Name = "GroupHeader1";
this.GroupHeader1.StylePriority.UseFont = false;
//
// xrLabel2
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new System.Drawing.Font("Verdana", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(293.0421F, 207.2917F);
this.xrLabel2.Multiline = true;
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(297.5831F, 17F);
this.xrLabel2.StylePriority.UseBackColor = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.Text = "GP-Nummer: 2000087017";
this.xrLabel2.WordWrap = false;
//
// xrLabel7
//
this.xrLabel7.BackColor = System.Drawing.Color.Transparent;
@@ -502,10 +517,6 @@ namespace PaSMoenchengladbach.Alt
this.xrLabel7.Text = "[AccountingPeriod]";
this.xrLabel7.WordWrap = false;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.SettlementRO);
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -791,20 +802,9 @@ namespace PaSMoenchengladbach.Alt
this.xrTableCell58.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell58.Weight = 0.21044884314903847D;
//
// xrLabel2
// bindingSource1
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new System.Drawing.Font("Verdana", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(293.0421F, 207.2917F);
this.xrLabel2.Multiline = true;
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(297.5831F, 17F);
this.xrLabel2.StylePriority.UseBackColor = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.Text = "GP-Nummert: 2000087017";
this.xrLabel2.WordWrap = false;
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.SettlementRO);
//
// Spitzabrechnung
//
@@ -828,9 +828,9 @@ namespace PaSMoenchengladbach.Alt
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}

View File

@@ -61,6 +61,7 @@ namespace PaSMoenchengladbach
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow9 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
@@ -88,7 +89,6 @@ namespace PaSMoenchengladbach
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable5 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow31 = new DevExpress.XtraReports.UI.XRTableRow();
@@ -107,13 +107,13 @@ namespace PaSMoenchengladbach
this.xrTableRow37 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell59 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell60 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).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
@@ -407,6 +407,21 @@ namespace PaSMoenchengladbach
this.GroupHeader1.Name = "GroupHeader1";
this.GroupHeader1.StylePriority.UseFont = false;
//
// xrLabel2
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new System.Drawing.Font("Verdana", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(292.0001F, 165.625F);
this.xrLabel2.Multiline = true;
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(297.5831F, 17F);
this.xrLabel2.StylePriority.UseBackColor = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.Text = "GP-Nummer: 2000087017";
this.xrLabel2.WordWrap = false;
//
// xrTable1
//
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0.0002543131F, 239.0001F);
@@ -714,10 +729,6 @@ namespace PaSMoenchengladbach
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.Weight = 3D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.Settlement2RO);
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
@@ -917,20 +928,9 @@ namespace PaSMoenchengladbach
this.xrTableCell60.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell60.Weight = 0.17738529433650369D;
//
// xrLabel2
// bindingSource1
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new System.Drawing.Font("Verdana", 10F, System.Drawing.FontStyle.Bold);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(292.0001F, 165.625F);
this.xrLabel2.Multiline = true;
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(297.5831F, 17F);
this.xrLabel2.StylePriority.UseBackColor = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.Text = "GP-Nummert: 2000087017";
this.xrLabel2.WordWrap = false;
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.Settlement2RO);
//
// Spitzabrechnung
//
@@ -958,8 +958,8 @@ namespace PaSMoenchengladbach
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).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();
}

View File

@@ -54,8 +54,8 @@ namespace PerspektivenEV
if (iDC.InvoiceBase.RecipientOrganisation != "Landeswohlfahrtsverband Hessen" && iDC.InvoiceBase.Type.ToString() == "Service"
&& iDC.ServiceInvoicePeriods.Count > 0 && iDC.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod != null && iDC.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod.ServiceCategory != null && iDC.ServiceInvoicePeriods[0].SupportConceptApprovalPeriod.ServiceCategory.Name.Contains("BW"))
{
XtraReport masterReport = new XtraReport();
masterReport.CreateDocument();
//XtraReport masterReport = new XtraReport();
//masterReport.CreateDocument();
var seite1 = new ServiceInvoiceReport();
var ro = ServiceInvoiceRO.Create(iDC);
@@ -63,11 +63,11 @@ namespace PerspektivenEV
seite1.SetReportDataSource(ro);
seite1.CreateDocument();
masterReport.Pages.AddRange(seite1.Pages);
foreach (DevExpress.XtraPrinting.Page item in masterReport.Pages)
{
item.AssignWatermark(seite1.Watermark);
}
//masterReport.Pages.AddRange(seite1.Pages);
//foreach (DevExpress.XtraPrinting.Page item in masterReport.Pages)
//{
// item.AssignWatermark(seite1.Watermark);
//}
// Anhang je nach Team erstellen
var customerDC = MapperFactory.CustomerDC_Customer.MapToNewDC(DAOFactory.GenericDAO.GetByID<Customer>(iDC.InvoiceBase.SupportConceptCostBearerRelDc.SupportConcept.Customer.CustomerOid));
@@ -75,7 +75,7 @@ namespace PerspektivenEV
{
var pfkAnhang = CreatePfkAnhang(iDC.InvoiceBase);
pfkAnhang.CreateDocument();
masterReport.Pages.AddRange(pfkAnhang.Pages);
seite1.Pages.AddRange(pfkAnhang.Pages);
}
else
{
@@ -86,10 +86,10 @@ namespace PerspektivenEV
var qb = CreateServiceOverviewSingleCustomerReport(cOid, month, year, oOid, 0, null, 1, DateTime.DaysInMonth(year, month));
qb.CreateDocument();
masterReport.Pages.AddRange(qb.Pages);
seite1.Pages.AddRange(qb.Pages);
}
invoiceReport = masterReport;
invoiceReport = seite1;
}
else

View File

@@ -582,6 +582,7 @@ namespace PerspektivenEV
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
this.Version = "17.1";
this.Watermark.Image = ((System.Drawing.Image)(resources.GetObject("InvoiceCustomerReport.Watermark.Image")));
this.Watermark.PageRange = "1";
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();

View File

@@ -119,6 +119,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Service\CustomHomeContentGenerator.cs" />
<Compile Include="Service\CustomGroupDurationCalculator.cs" />
<Compile Include="Service\CustomServiceRecordStatisticFactory.cs" />
<Compile Include="SettlementReport.cs">
<SubType>Component</SubType>
</Compile>

View File

@@ -598,6 +598,7 @@ namespace PerspektivenEV
this.Version = "17.1";
this.Watermark.Image = ((System.Drawing.Image)(resources.GetObject("SelbstzahlerInvoiceReport.Watermark.Image")));
this.Watermark.ImageViewMode = DevExpress.XtraPrinting.Drawing.ImageViewMode.Zoom;
this.Watermark.PageRange = "1";
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();

View File

@@ -0,0 +1,24 @@
using BeWo.Service.Plugins;
using BS.Shared.DataContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PerspektivenEV.Service
{
public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory
{
public override SupportConceptStatisticsDC CreateSupportConceptStatisticsImpl(long costBearer2SupportConceptOid, DateTime statisticsDate, long? ignoreServiceRecordOid)
{
// Ausblenden der Fahrtzeit und Gesondert vorgehaltenen Flächen
var stat = base.CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate, ignoreServiceRecordOid);
stat.PeriodStatistics = stat.PeriodStatistics.Where(p => p.SupportConceptApprovalPeriod.ServiceCategory == null ||
(p.SupportConceptApprovalPeriod.ServiceCategory != null && !p.SupportConceptApprovalPeriod.ServiceCategory.Abbreviation.Contains("GVF")
&& !p.SupportConceptApprovalPeriod.ServiceCategory.Abbreviation.Contains("AFZ"))).ToList();
return stat;
}
}
}

View File

@@ -73,8 +73,8 @@ namespace PerspektivenEV
this.lblUeberweisung = new DevExpress.XtraReports.UI.XRLabel();
this.lblAnlage = new DevExpress.XtraReports.UI.XRLabel();
this.lblUeberweisungPfk = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.PageHeader = new DevExpress.XtraReports.UI.PageHeaderBand();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
@@ -660,15 +660,15 @@ namespace PerspektivenEV
this.lblUeberweisungPfk.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.lblUeberweisungPfk.Visible = false;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// PageHeader
//
this.PageHeader.HeightF = 168.75F;
this.PageHeader.Name = "PageHeader";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// ServiceInvoiceReport
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {

View File

@@ -916,6 +916,7 @@ namespace BeWo.Report.DefaultReports.Alt
this.Version = "17.1";
this.Watermark.Image = ((System.Drawing.Image)(resources.GetObject("Spitzabrechnung.Watermark.Image")));
this.Watermark.ImageViewMode = DevExpress.XtraPrinting.Drawing.ImageViewMode.Zoom;
this.Watermark.PageRange = "1";
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();

View File

@@ -911,6 +911,7 @@ namespace BeWo.Report.DefaultReports
this.Version = "17.1";
this.Watermark.Image = ((System.Drawing.Image)(resources.GetObject("Spitzabrechnung.Watermark.Image")));
this.Watermark.ImageViewMode = DevExpress.XtraPrinting.Drawing.ImageViewMode.Zoom;
this.Watermark.PageRange = "1";
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();

View File

@@ -153,7 +153,12 @@ namespace SHKService.Service
item.Employee = new CompactEmployeeDC();
item.Employee.LastName = "Ohne Betreuung";
}
item.CustomerToolTip = null;
item.EmployeeToolTip = null;
item.VertreterToolTip = null;
}
return vertretungsListe;
}
@@ -303,6 +308,30 @@ namespace SHKService.Service
if (vertretungsItem.MailCustomer != null)
{
//vertretungsItem.MailCustomer.Message = @"Lieber Klient,%0D%0A%0D%0Ablablubb%0D%0AZeile2%0D%0A%0D%0ANochne Zeile%0D%0A%0D%0ATschüss";
if (vertretung != null)
{
String vertreterName = vertretung.Person.LastName;
if (vertretung.Person.Sex.HasValue && vertretung.Person.Sex.Value == Sex.Male)
{
vertreterName = "Herr " + vertreterName;
}
else
{
vertreterName = "Frau " + vertreterName;
}
vertretungsItem.MailCustomer.Message = String.Format(@"
Sehr geehrte Damen und Herren,
die Schulbegleitung für {0} wird vom {1:dd.MM.yyyy} bis voraussichtlich {2:dd.MM.yyyy} {3} übernehmen.
Eventuelle Änderungen oder Vertretungen nach dem Datum Ende teilen wir Ihnen so früh wie möglich mit. Es gilt die jeweils letzte Mail.
Bei Rückfragen erreichen Sie uns an jedem Unterrichtstag von 6:30 Uhr bis 10:00 Uhr unter 015116889795", customer != null ? customer.Person.FirstName : "", vertretungsItem.Absencetime != null ? vertretungsItem.Absencetime.Start : null, vertretungsItem.Absencetime != null ? vertretungsItem.Absencetime.End : null, vertreterName);
vertretungsItem.MailCustomer.Message = vertretungsItem.MailCustomer.Message.Replace("\n", "%0D%0A");
}
}
if (vertretungsItem.MailEmployee != null)
@@ -317,7 +346,38 @@ namespace SHKService.Service
if (vertretungsItem.MailSchule != null)
{
//vertretungsItem.MailSchule.Message = @"Liebe Schule,%0D%0A%0D%0Ablablubb%0D%0AZeile2%0D%0A%0D%0ANochne Zeile%0D%0A%0D%0ATschüss";
if (vertretung != null)
{
String vertreterName = vertretung.Person.LastName;
if (vertretung.Person.Sex.HasValue && vertretung.Person.Sex.Value == Sex.Male)
{
vertreterName = "Herr " + vertreterName;
}
else
{
vertreterName = "Frau " + vertreterName;
}
vertretungsItem.MailSchule.Message = String.Format(@"
Sehr geehrte Damen und Herren,
die Schulbegleitung für {0} wird vom {1:dd.MM.yyyy} bis voraussichtlich {2:dd.MM.yyyy} {3} übernehmen.
Eventuelle Änderungen oder Vertretungen nach dem Datum Ende teilen wir Ihnen so früh wie möglich mit. Es gilt die jeweils letzte Mail.
Bei Rückfragen erreichen Sie uns an jedem Unterrichtstag von 6:30 Uhr bis 10:00 Uhr unter 015116889795", customer != null ? customer.Person.FirstNameLastName : "", vertretungsItem.Absencetime != null ? vertretungsItem.Absencetime.Start : null, vertretungsItem.Absencetime != null ? vertretungsItem.Absencetime.End : null, vertreterName);
}
else
{
vertretungsItem.MailSchule.Message = String.Format(@"
Sehr geehrte Damen und Herren,
leider haben wir aktuell für {0} am {1:dd.MM.yyyy} keine freie Vertretungskraft. 
Eventuelle Änderungen oder Vertretungen nach dem {1:dd.MM.yyyy} teilen wir Ihnen so früh wie möglich mit. Es gilt die jeweils letzte Mail.
Bei Rückfragen erreichen Sie uns an jedem Unterrichtstag von 6:30 Uhr bis 10:00 Uhr unter: 015116889795", customer != null ? customer.Person.FirstNameLastName : "", vertretungsItem.Datum);
}
vertretungsItem.MailSchule.Message = vertretungsItem.MailSchule.Message.Replace("\n", "%0D%0A");
}
}

View File

@@ -23,28 +23,8 @@ namespace SPZLeverkusen.Service
{
public override List<SupportConceptOverviewDC> GetSupportConceptAnalysis2(IList<long> c2sOids, long? employeeOid, long? teamOid, long? catOid, DateTime? startDate, DateTime? endDate, int? expiredMonths, bool showArchivedScs)
{
ApplicationUser loggedInUser = null;
ApplicationUser loggedInUser = UserRightHelper.GetLoggedInUser();
if (LoggedInUserOperationContextExt.Current != null && LoggedInUserOperationContextExt.Current.User != null)
{
loggedInUser = LoggedInUserOperationContextExt.Current.User;
}
else
{
loggedInUser = SessionFacade.LoggedInUser;
}
bool isLeitung = false;
if (loggedInUser != null && loggedInUser.Employee != null)
{
foreach (var ug in loggedInUser.UserGroups)
{
if (ug.Name.ToLower().Contains("leitung"))
{
isLeitung = true;
}
}
}
if ((employeeOid.HasValue && !teamOid.HasValue) || (!employeeOid.HasValue && !teamOid.HasValue))
{

View File

@@ -1,6 +1,7 @@
using System.Collections.Generic;
using BeWo.Data;
using BeWo.Data.Entities;
using BeWo.Data.Security;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.DataContracts.Compact;
@@ -17,53 +18,22 @@ namespace SPZLeverkusen.Service
public override List<CompactCustomerDC> GetAllActiveCustomersCompact(bool fetchReferenceNumbers, long? currentEmployeeOid)
{
var customer = base.GetAllActiveCustomersCompact(fetchReferenceNumbers, currentEmployeeOid);
ApplicationUser loggedInUser = null;
if (LoggedInUserOperationContextExt.Current != null && LoggedInUserOperationContextExt.Current.User != null)
{
loggedInUser = LoggedInUserOperationContextExt.Current.User;
}
else
{
loggedInUser = SessionFacade.LoggedInUser;
}
if (loggedInUser != null && loggedInUser.Employee != null)
if (UserRightHelper.LoggedInUserHasRight(UserRightType.Customer_ViewMyTeams))
{
if (HasRight(loggedInUser, UserRightType.Customer_ViewMyTeams))
foreach (var c in customer)
{
foreach (var c in customer)
if (c.IsRelatedToTeam)
{
if (c.IsRelatedToTeam)
{
c.IsRelatedToEmployee = true;
}
c.IsRelatedToEmployee = true;
}
}
}
return customer;
}
private static bool HasRight(ApplicationUser user, UserRightType right)
{
return GetGrantedRights(user).Contains(right);
}
public static List<UserRightType> GetGrantedRights(ApplicationUser user)
{
var rights = new List<UserRightType>();
foreach (var ug in user.UserGroups)
{
foreach (var rr in ug.Rights)
{
rights.Add(rr.RightType);
}
}
return rights;
}
}
}

View File

@@ -24,103 +24,5 @@ namespace SPZLeverkusen.Service
return MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(FilterList(employees));
}
public static IList<Employee> FilterList(IList<Employee> employees)
{
List<Employee> newList = new List<Employee>();
ApplicationUser loggedInUser = null;
if (LoggedInUserOperationContextExt.Current != null && LoggedInUserOperationContextExt.Current.User != null)
{
loggedInUser = LoggedInUserOperationContextExt.Current.User;
}
else
{
loggedInUser = SessionFacade.LoggedInUser;
}
if (loggedInUser != null && loggedInUser.Employee != null)
{
if (HasRight(loggedInUser, UserRightType.EmployeeView_View))
{
return employees;
}
if (HasRight(loggedInUser, UserRightType.Employee_AllowViewOwnTeam))
{
var teams = DAOFactory.SearchDAO.FindAllActiveTeamsOfEmployee(loggedInUser.Employee.Oid.Value);
foreach (var e in employees)
{
if (BelongsToTeam(teams, loggedInUser, e))
{
newList.Add(e);
}
}
}
else if (HasRight(loggedInUser, UserRightType.Employee_AllowViewOwnEmployees))
{
foreach (var e in employees)
{
if (e.Oid == loggedInUser.Employee.Oid)
{
newList.Add(e);
}
}
}
}
return newList;
}
public static bool BelongsToTeam(IList<Team> teams, ApplicationUser loggedInUser, Employee emp)
{
//var teams = loggedInUser.Employee.LeadingTeams;
//foreach (var team in teams)
//{
// foreach (var member in team.MemberList)
// {
// if (member.Oid == compactEmployeeDc.EmployeeOid)
// {
// return true;
// }
// }
//}
foreach (var team in teams)
{
if (team.Leader != null && team.Leader.Oid == emp.Oid)
{
return true;
}
foreach (var member in team.MemberList)
{
if (member.Oid == emp.Oid)
{
return true;
}
}
}
return false;
}
private static bool HasRight(ApplicationUser user, UserRightType right)
{
return GetGrantedRights(user).Contains(right);
}
public static List<UserRightType> GetGrantedRights(ApplicationUser user)
{
var rights = new List<UserRightType>();
foreach (var ug in user.UserGroups)
{
foreach (var rr in ug.Rights)
{
rights.Add(rr.RightType);
}
}
return rights;
}
}
}

View File

@@ -16,6 +16,10 @@ namespace SeWo.Validation
public override List<ServiceRecordValidationResultDC> ValidateServiceRecord(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics,
int maxDaysEditServiceRecordsAllowed, IList<long> employeeOids, IList<long> cb2scOids)
{
if (newServiceRecord.SupportConcept == null && newServiceRecord.CostBearer == null)
{
newServiceRecord.CostBearer2SupportConceptOid = null;
}
var result = base.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids);
bool hasOutOfEditLimit = false;

View File

@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
@@ -25,7 +26,7 @@ namespace BeWo.Service.Invoicing
{
String id = c2s.CostBearer.ID;
var calc = Calculations.GetInstance(id);
var calc = PluginLoader.FindClass<Calculations>(id);
var relDc = c2s.MapToNewDC();
var apListFehlkontakt = new List<ApprovalPeriod>();
@@ -91,11 +92,8 @@ namespace BeWo.Service.Invoicing
//calc.GetHoursNotBillableDueToMoreThanApproved(relDC, recordDCS, false, false);
Dictionary<long, bool> groupBookingDict = new Dictionary<long, bool>();
//decimal flmCleared = 0;
//decimal approvedMinutes = ((si.ApprovedFLS ?? 0) * 60) / rf;
records = records.OrderBy<ServiceRecord, DateTime>(sr => sr.Start.HasValue ? sr.Start.Value : DateTime.MinValue).ToList<ServiceRecord>();
foreach (var iRecord in records)
@@ -104,9 +102,26 @@ namespace BeWo.Service.Invoicing
{
if (iRecord.GroupOid == null || !groupBookingDict.ContainsKey(iRecord.GroupOid.Value))
{
decimal dauerAbrechenbar = iRecord.RoundedDuration;
decimal dauerBudget = iRecord.RoundedDuration;
if (ReduziereBetragBeiAbwesenheiten())
{
//Die Liste recordDCS enthält nach Aufruf von GetHoursNotBillableDueToAbsenceTimes nur noch die Einträge, die auch während Abwesenheiten abgerechnet werden dürfen
var dcRecord = recordDCS.Where(r => r.ServiceRecordOid == iRecord.Oid).FirstOrDefault();
if (dcRecord == null)
{
dauerAbrechenbar = 0;
dauerBudget = 0;
}
else
{
dauerAbrechenbar = dcRecord.RoundedDuration;
dauerBudget = dcRecord.RoundedDuration;
}
}
//var prozent = iRecord.ServiceDescription.ServiceCategory.ProzentAbrechnung;
//if (iRecord.ServiceDescription.ProzentAbrechnung.HasValue)
//{

View File

@@ -1376,6 +1376,11 @@ namespace BeWo.Service.Invoicing
quartersTotal += restTageEnd / 90m;
}
return quartersTotal;
}
public virtual bool ReduziereBetragBeiAbwesenheiten()
{
return false;
}
}
}

View File

@@ -4,6 +4,7 @@ using System.Linq;
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Security;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;
@@ -379,7 +380,6 @@ namespace BeWo.Service.Plugins
var result = new List<CompactPersonDC>();
var alleList = new List<CompactPersonDC>();
var cProcessed = new Dictionary<long, bool>();
bool darfPersonenSehen = false;
bool darfFamilieSehen = false;
@@ -418,7 +418,188 @@ namespace BeWo.Service.Plugins
return result.OrderBy(p => p.ToString()).ToList();
}
private void SetFamilyMemberStatus(List<CompactPersonDC> result)
public virtual List<CompactPersonDC> GetAllPersonsByTypeCompact(PersonType pType)
{
var result = new List<CompactPersonDC>();
bool darfFamilieSehen = false;
bool darfAlleKlientenSehen = false;
bool darfKlientenDesTeamsSehen = false;
bool darfSeineKlientenSehen = false;
List<long> allowedCustomerOids = new List<long>();
if (!UserRightHelper.LoggedInUserHasRight(UserRightType.PersonView_View))
{
return result;
}
var user = UserRightHelper.GetLoggedInUser();
if (UserRightHelper.LoggedInUserHasRight(UserRightType.Person_FamilyView))
{
darfFamilieSehen = true;
}
if (UserRightHelper.LoggedInUserHasRight(UserRightType.CustomerView_View))
{
darfAlleKlientenSehen = true;
darfKlientenDesTeamsSehen = true;
darfSeineKlientenSehen = true;
}
else if (UserRightHelper.LoggedInUserHasRight(UserRightType.Customer_ViewMyTeams))
{
darfKlientenDesTeamsSehen = true;
darfSeineKlientenSehen = true;
var dict = CreateTeamOidDict(user.Employee.Oid.Value);
foreach (var oid in dict.Keys)
{
var clist = DAOFactory.SearchDAO.FindCustomerOfTeam(oid);
foreach (var c in clist)
{
foreach (var e2c in c.Employee2CustomerList)
{
if (!e2c.EndDate.HasValue || e2c.EndDate.Value >= DateTime.Now.Date)
{
allowedCustomerOids.Add(e2c.CustomerOid.Value);
}
}
}
}
foreach (var e2c in user.Employee.Employee2CustomerList)
{
if (!e2c.EndDate.HasValue || e2c.EndDate.Value >= DateTime.Now.Date)
{
allowedCustomerOids.Add(e2c.CustomerOid.Value);
}
}
}
else if (UserRightHelper.LoggedInUserHasRight(UserRightType.Customer_ViewMyCustomers))
{
darfSeineKlientenSehen = true;
foreach (var e2c in user.Employee.Employee2CustomerList)
{
if (!e2c.EndDate.HasValue || e2c.EndDate.Value >= DateTime.Now.Date)
{
allowedCustomerOids.Add(e2c.CustomerOid.Value);
}
}
}
IList<Person> persons = DAOFactory.GenericDAO.GetAll<Person>().Where(p => p.Type == pType).ToList();
Dictionary<long, List<CustomerPersonRelationDC>> person2CustomerOidDict = new Dictionary<long, List<CustomerPersonRelationDC>>();
IList<long> personOids = new List<long>();
foreach (var person in persons)
{
personOids.Add(person.Oid.Value);
}
if (!darfFamilieSehen || !darfAlleKlientenSehen)
{
var c2oList = DAOFactory.SearchDAO.FindCustomerOid2Persons(personOids);
foreach (object[] item in c2oList)
{
var oid = (long)item[0];
var poid = (long)item[1];
var coid = (long)item[2];
var test = (sbyte?)item[3];
var isF = (sbyte?)item[3];
var c2p = new CustomerPersonRelationDC();
c2p.Customer2PersonOid = oid;
c2p.Person = new CompactPersonDC { PersonOid = poid };
c2p.Customer = new CompactCustomerDC { CustomerOid = coid };
c2p.IstFamilie = isF.HasValue ? isF.Value == 1 : false;
if (!person2CustomerOidDict.ContainsKey(poid))
{
person2CustomerOidDict.Add(poid, new List<CustomerPersonRelationDC>());
}
person2CustomerOidDict[poid].Add(c2p);
}
}
foreach (var person in persons)
{
List<CustomerPersonRelationDC> list = null;
if (person2CustomerOidDict.ContainsKey(person.Oid.Value))
{
list = person2CustomerOidDict[person.Oid.Value];
}
else
{
list = new List<CustomerPersonRelationDC>();
}
if (UserIsAllowedToViewPerson(person, list, allowedCustomerOids, darfFamilieSehen, darfAlleKlientenSehen, darfKlientenDesTeamsSehen, darfSeineKlientenSehen))
{
if (person.Organisation2Persons.Count == 0)
{
var dc = MapperFactory.CompactPersonDC_Person.MapToNewDC(person);
result.Add(dc);
if (pType == PersonType.Others)
AddContacts(dc, person, null);
}
foreach (var o2p in person.Organisation2Persons)
{
var dc = MapperFactory.CompactPersonDC_Person.MapToNewDC(person);
result.Add(dc);
if (pType == PersonType.Others)
{
AddContacts(dc, person, o2p);
dc.Organisation = o2p.Organisation.Name;
if (o2p.Organisation.Address != null)
{
dc.Street = o2p.Organisation.Address.Street;
dc.PostalCode = o2p.Organisation.Address.PostalCode;
dc.Town = o2p.Organisation.Address.Town;
}
}
}
}
}
SetFamilyMemberStatus(result);
return result;
}
private bool UserIsAllowedToViewPerson(Person person, List<CustomerPersonRelationDC> person2CustomerList, List<long> allowedCustomerOids, bool darfFamilieSehen, bool darfAlleKlientenSehen, bool darfKlientenDesTeamsSehen, bool darfSeineKlientenSehen)
{
if (darfFamilieSehen && darfAlleKlientenSehen)
{
return true;
}
if (!darfFamilieSehen)
{
return person2CustomerList.Count(p => p.IstFamilie) == 0;
}
if (darfAlleKlientenSehen)
{
return true;
}
if (darfKlientenDesTeamsSehen || darfSeineKlientenSehen)
{
foreach (var p2c in person2CustomerList)
{
if (allowedCustomerOids.Contains(p2c.Customer.CustomerOid))
{
return true;
}
}
}
return false;
}
private void SetFamilyMemberStatus(List<CompactPersonDC> result)
{
var familyOids = DAOFactory.SearchDAO.FindFamilyMemberOids();
@@ -431,6 +612,103 @@ namespace BeWo.Service.Plugins
}
}
public static void AddContacts(CompactPersonDC dc, Person person, Organisation2Person o2p)
{
if (o2p != null)
{
if (o2p.Contacts != null)
{
foreach (Contact contact in o2p.Contacts)
{
if (contact.Type == ContactType.business_Phone)
{
dc.Communication1 = contact.Value;
}
if (contact.Type == ContactType.business_Mail)
{
dc.Communication3 = contact.Value;
}
}
}
if (o2p.Organisation != null && o2p.Organisation.Contacts != null)
{
if (String.IsNullOrEmpty(dc.Communication1))
{
foreach (Contact contact in o2p.Organisation.Contacts)
{
if (contact.Type == ContactType.business_Phone)
{
dc.Communication1 = contact.Value;
}
}
}
if (String.IsNullOrEmpty(dc.Communication2))
{
//foreach (var contact in org.Contacts)
//{
// if (contact.Type == ContactType.b)
// {
// dc.Communication2 = contact.Value;
// }
//}
}
if (String.IsNullOrEmpty(dc.Communication3))
{
foreach (Contact contact in o2p.Organisation.Contacts)
{
if (contact.Type == ContactType.business_Mail)
{
dc.Communication3 = contact.Value;
}
}
}
}
}
if (String.IsNullOrEmpty(dc.Communication1))
{
if (person.Contacts != null)
{
foreach (Contact contact in person.Contacts)
{
if (contact.Type == ContactType.private_Phone)
{
dc.Communication1 = contact.Value;
}
}
}
}
if (String.IsNullOrEmpty(dc.Communication2))
{
if (person.Contacts != null)
{
foreach (Contact contact in person.Contacts)
{
if (contact.Type == ContactType.private_MobilePhone)
{
dc.Communication2 = contact.Value;
}
}
}
}
if (String.IsNullOrEmpty(dc.Communication3))
{
if (person.Contacts != null)
{
foreach (Contact contact in person.Contacts)
{
if (contact.Type == ContactType.private_Mail)
{
dc.Communication3 = contact.Value;
}
}
}
}
}
private ApplicationUser GetLoggedInUser()
{

View File

@@ -5,6 +5,7 @@ using System.Linq;
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Security;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.MessageContracts;
@@ -52,7 +53,7 @@ namespace BeWo.Service.Plugins
public virtual List<CompactTeamDC> GetAllTeamsCompact()
{
var loggedInUser = GetLoggedInUser();
var loggedInUser = UserRightHelper.GetLoggedInUser();
if (Utils.UserHasRight(loggedInUser, UserRightType.TeamView_ViewAll))
{
@@ -120,7 +121,7 @@ namespace BeWo.Service.Plugins
public virtual List<CompactEmployeeDC> GetAllAuthorizedCompactEmployees()
{
var user = GetLoggedInUser();
var user = UserRightHelper.GetLoggedInUser();
var employees = DAOFactory.GenericDAO.GetAllActive<Employee>();
@@ -186,15 +187,74 @@ namespace BeWo.Service.Plugins
return result.OrderBy(e => e.LastName).ToList();
}
private ApplicationUser GetLoggedInUser()
public static IList<Employee> FilterList(IList<Employee> employees)
{
List<Employee> newList = new List<Employee>();
if(LoggedInUserOperationContextExt.Current != null && LoggedInUserOperationContextExt.Current.User != null)
var loggedInUser = UserRightHelper.GetLoggedInUser();
if (UserRightHelper.UserHasRight(loggedInUser, UserRightType.EmployeeView_View))
{
return LoggedInUserOperationContextExt.Current.User;
return employees;
}
if (UserRightHelper.UserHasRight(loggedInUser, UserRightType.Employee_AllowViewOwnTeam))
{
var teams = DAOFactory.SearchDAO.FindAllActiveTeamsOfEmployee(loggedInUser.Employee.Oid.Value);
return SessionFacade.LoggedInUser;
foreach (var e in employees)
{
if (BelongsToTeam(teams, loggedInUser, e))
{
newList.Add(e);
}
}
}
else if (UserRightHelper.UserHasRight(loggedInUser, UserRightType.Employee_AllowViewOwnEmployees))
{
foreach (var e in employees)
{
if (e.Oid == loggedInUser.Employee.Oid)
{
newList.Add(e);
}
}
}
return newList;
}
public static bool BelongsToTeam(IList<Team> teams, ApplicationUser loggedInUser, Employee emp)
{
//var teams = loggedInUser.Employee.LeadingTeams;
//foreach (var team in teams)
//{
// foreach (var member in team.MemberList)
// {
// if (member.Oid == compactEmployeeDc.EmployeeOid)
// {
// return true;
// }
// }
//}
foreach (var team in teams)
{
if (team.Leader != null && team.Leader.Oid == emp.Oid)
{
return true;
}
foreach (var member in team.MemberList)
{
if (member.Oid == emp.Oid)
{
return true;
}
}
}
return false;
}
}
}

View File

@@ -70,7 +70,7 @@ namespace BeWo.Service.Plugins
//t = "5351926758"; // Viva a Vida
//t = "2215396183"; // Diakonie Remscheid Lennep
//t = "5157599087"; // SHG Schwerte
//t = "4526293996"; // Fortis
t = "4526293996"; // Fortis
//t = "3647969417"; // Caritas Bottrop
//t = "3057313346"; // SSB Mainz
//t = "6246287823"; // BeWo Alsdorf
@@ -85,7 +85,7 @@ namespace BeWo.Service.Plugins
//t = "4867997795"; // ADiK Kleve
//t = "3184859776"; // Sergej Becker
//t = "7752610643"; // BWK Gbr
t = "3785623125"; // Betreuwo
//t = "3785623125"; // Betreuwo
//t = "7130228334"; // LH Borken
//t = "4209820830"; // VKM Hamm
//t = "5700328131"; // Betreutes Wohnen St. Ludgerus Essen-Werden
@@ -223,7 +223,7 @@ namespace BeWo.Service.Plugins
//t = "7817461089"; // FAB e.V. (Familienarbeit und Beratung e.V.)
//t = "5207911843"; // Pro Balance
//t = "8619663355"; // HSH Cologne
t = "1652658918"; // LH Frankfurt Oder
//t = "1652658918"; // LH Frankfurt Oder
//t = "7696927868"; // Kuhring Betreuung
//t = "6251348980"; // BeWo Gün
//t = "6782533512"; // LH Dorsten
@@ -367,6 +367,9 @@ namespace BeWo.Service.Plugins
//t = "7725063510"; // BZH Essen
//t = "1062385308"; // Aidshilfe Fulda
//t = "3208082132"; // Klinikum Werra-Meißner GmbH
//t = "7164646882"; // Diakonisches Werk im Ev. Kirchenkreis Dinslaken - Ambulant Begleitetes Wohnen
//t = "1143768898"; // Diakonisches Werk im Ev. Kirchenkreis Dinslaken - Soziotherapie
//t = "8164797250"; // Diakonisches Werk im Ev. Kirchenkreis Dinslaken - Ambulante Jugendhilfe JUDI
return t;
#else

View File

@@ -366,14 +366,11 @@ namespace BeWo.Service.Plugins
{
stats.MinutesOutOfApprovedPeriod += minutesProvidedRounded;
}
else
{
stats.MinutesProvidedTotal += minutesProvided;
stats.MinutesProvidedTotalRounded += minutesProvidedRounded;
stats.MinutesProvidedThisWeek += minutesProvidedThisWeek;
stats.MinutesProvidedThisMonth += minutesProvidedThisMonth;
stats.IstTotalUntilThisMonth += minutesProvidedUntilLastMonth;
}
stats.MinutesProvidedTotal += minutesProvided;
stats.MinutesProvidedTotalRounded += minutesProvidedRounded;
stats.MinutesProvidedThisMonth += minutesProvidedThisMonth;
stats.IstTotalUntilThisMonth += minutesProvidedUntilLastMonth;
stats.MinutesProvidedThisWeek += minutesProvidedThisWeek;
if (periodStats != null)
@@ -382,13 +379,12 @@ namespace BeWo.Service.Plugins
{
periodStats.MinutesOutOfApprovedPeriod += minutesProvidedRounded;
}
{
periodStats.MinutesProvidedTotal += minutesProvided;
periodStats.MinutesProvidedTotalRounded += minutesProvidedRounded;
periodStats.MinutesProvidedThisWeek += minutesProvidedThisWeek;
periodStats.MinutesProvidedThisMonth += minutesProvidedThisMonth;
periodStats.IstTotalUntilThisMonth += minutesProvidedUntilLastMonth;
}
periodStats.MinutesProvidedTotal += minutesProvided;
periodStats.MinutesProvidedTotalRounded += minutesProvidedRounded;
periodStats.MinutesProvidedThisWeek += minutesProvidedThisWeek;
periodStats.MinutesProvidedThisMonth += minutesProvidedThisMonth;
periodStats.IstTotalUntilThisMonth += minutesProvidedUntilLastMonth;
}
}

View File

@@ -315,7 +315,7 @@ namespace BeWo.Service.Plugins
long? cb2ScOid = null;
if (newServiceRecord.CostBearer2SupportConceptOid.HasValue)
if (newServiceRecord.SupportConcept != null && newServiceRecord.CostBearer != null && newServiceRecord.CostBearer2SupportConceptOid.HasValue)
{
cb2ScOid = newServiceRecord.CostBearer2SupportConceptOid.Value;
}

View File

@@ -638,6 +638,7 @@ namespace BeWo.Service.Plugins
iDC.CustomerFirstName = sc.Customer.Person.FirstName;
iDC.CustomerLastName = sc.Customer.Person.LastName;
var costRates = c2s.CostBearer.CostRatePeriods.MapToNewDCs();
iDC.ServiceUnit = costRates.GetCurrentlyValidRate(CostRatePeriodType.MinutesPerServiceUnit);
@@ -667,7 +668,7 @@ namespace BeWo.Service.Plugins
decimal lDurationInWeeksTillNow = 0;
decimal lDurationInWeeks = 0;
if (iDC.CustomerLastName == "Abba")
if (iDC.CustomerLastName == "Yavuz")
{
int test = 0;
}
@@ -706,6 +707,24 @@ namespace BeWo.Service.Plugins
var records = GetServiceRecordDCs(c2s, minDt, maxDt);
iDC.ServiceRecords = records;
//decimal tempDuration = 0;
//foreach (var temp in records)
//{
// if (temp.ServiceDescription.Category.IsBillable)
// {
// var dur = temp.RoundedDuration;
// if (temp.GroupEmployeeCount.HasValue && temp.GroupEmployeeCount > 1)
// {
// dur /= temp.GroupEmployeeCount.Value;
// }
// tempDuration += dur;
// }
//}
//tempDuration /= 60;
iDC.FLSRecordedTillNow = BerechneGeleisteteStunden(records, calc);
iDC.FLSBilledTillNow = iDC.FLSRecordedTillNow;

View File

@@ -5,6 +5,7 @@ using System.Linq;
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Security;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.MessageContracts;
@@ -129,73 +130,12 @@ namespace BeWo.Service.Plugins
// }
//}
}
CheckRightVersion(userDC);
UserRightHelper.CheckRightVersion(userDC);
}
return userDC;
}
private void CheckRightVersion(UserDC userDC)
{
var lastLogins = DAOFactory.SearchDAO.FindLastLogins(userDC.LoginName, 1).ToList();
if (lastLogins != null && lastLogins.Count > 0)
{
var login = lastLogins[0];
if (!String.IsNullOrEmpty(login.Referrer))
{
//var test = "MobilClient, Version: Unbekannt";
//var test2 = "BeWoClient, Version: Microsoft Windows NT 6.2.9200.0;CLRVersion=4.0.30319.42000;BeWoVersion=Version 3.16;IsNet45OrNewer=True";
var str = login.Referrer;
//str = test;
var start = str.IndexOf("BeWoVersion=");
if (start > 0)
{
var stop = str.IndexOf(";", start);
if (stop > start)
{
//BeWoClient, Version: Microsoft Windows NT 6.2.9200.0;CLRVersion=4.0.30319.42000;BeWoVersion=Version 3.17;IsNet45OrNewer=True
var version = str.Substring(start + 12, stop - start - 12);
version = version.Replace("Version", "").Trim();
foreach (var ug in userDC.UserGroups)
{
var allrights = ug.Rights;
ug.Rights = new List<UserRightType>();
foreach (var r in allrights)
{
if (IsCorrectVersion(r, version))
{
ug.Rights.Add(r);
}
}
}
}
}
}
}
}
private bool IsCorrectVersion(UserRightType r, string version)
{
var rightVersion = GetRightVersion(r);
if (version.CompareTo(rightVersion) < 0)
{
return false;
}
return true;
}
private object GetRightVersion(UserRightType r)
{
if (r == UserRightType.Customer_ViewBetreuung || r == UserRightType.Customer_ViewAbsenceTimes)
{
return "3.17";
}
return "1.0";
}
}
}

View File

@@ -387,7 +387,7 @@ namespace BeWo.Service.ServiceImplementations
result.Add(dc);
if (pType == PersonType.Others)
AddContacts(dc, person, null);
CustomerService.AddContacts(dc, person, null);
}
foreach (Organisation2Person o2p in person.Organisation2Persons)
{
@@ -396,7 +396,7 @@ namespace BeWo.Service.ServiceImplementations
if (pType == PersonType.Others)
{
AddContacts(dc, person, o2p);
CustomerService.AddContacts(dc, person, o2p);
dc.Organisation = o2p.Organisation.Name;
if (o2p.Organisation.Address != null)
@@ -423,43 +423,10 @@ namespace BeWo.Service.ServiceImplementations
{
try
{
IList<Person> persons = DAOFactory.GenericDAO.GetAll<Person>().Where(p => p.Type == pType).ToList();
var s = PluginLoader.FindClass<CustomerService>();
var result = new List<CompactPersonDC>();
return s.GetAllPersonsByTypeCompact(pType);
foreach (var person in persons)
{
if (person.Organisation2Persons.Count == 0)
{
var dc = MapperFactory.CompactPersonDC_Person.MapToNewDC(person);
result.Add(dc);
if (pType == PersonType.Others)
AddContacts(dc, person, null);
}
foreach (var o2p in person.Organisation2Persons)
{
var dc = MapperFactory.CompactPersonDC_Person.MapToNewDC(person);
result.Add(dc);
if (pType == PersonType.Others)
{
AddContacts(dc, person, o2p);
dc.Organisation = o2p.Organisation.Name;
if (o2p.Organisation.Address != null)
{
dc.Street = o2p.Organisation.Address.Street;
dc.PostalCode = o2p.Organisation.Address.PostalCode;
dc.Town = o2p.Organisation.Address.Town;
}
}
}
}
SetFamilyMemberStatus(result);
return result;
}
catch (Exception e)
{
@@ -1945,102 +1912,6 @@ namespace BeWo.Service.ServiceImplementations
}
}
private static void AddContacts(CompactPersonDC dc, Person person, Organisation2Person o2p)
{
if (o2p != null)
{
if (o2p.Contacts != null)
{
foreach (Contact contact in o2p.Contacts)
{
if (contact.Type == ContactType.business_Phone)
{
dc.Communication1 = contact.Value;
}
if (contact.Type == ContactType.business_Mail)
{
dc.Communication3 = contact.Value;
}
}
}
if (o2p.Organisation != null && o2p.Organisation.Contacts != null)
{
if (String.IsNullOrEmpty(dc.Communication1))
{
foreach (Contact contact in o2p.Organisation.Contacts)
{
if (contact.Type == ContactType.business_Phone)
{
dc.Communication1 = contact.Value;
}
}
}
if (String.IsNullOrEmpty(dc.Communication2))
{
//foreach (var contact in org.Contacts)
//{
// if (contact.Type == ContactType.b)
// {
// dc.Communication2 = contact.Value;
// }
//}
}
if (String.IsNullOrEmpty(dc.Communication3))
{
foreach (Contact contact in o2p.Organisation.Contacts)
{
if (contact.Type == ContactType.business_Mail)
{
dc.Communication3 = contact.Value;
}
}
}
}
}
if (String.IsNullOrEmpty(dc.Communication1))
{
if (person.Contacts != null)
{
foreach (Contact contact in person.Contacts)
{
if (contact.Type == ContactType.private_Phone)
{
dc.Communication1 = contact.Value;
}
}
}
}
if (String.IsNullOrEmpty(dc.Communication2))
{
if (person.Contacts != null)
{
foreach (Contact contact in person.Contacts)
{
if (contact.Type == ContactType.private_MobilePhone)
{
dc.Communication2 = contact.Value;
}
}
}
}
if (String.IsNullOrEmpty(dc.Communication3))
{
if (person.Contacts != null)
{
foreach (Contact contact in person.Contacts)
{
if (contact.Type == ContactType.private_Mail)
{
dc.Communication3 = contact.Value;
}
}
}
}
}
private List<CompactOrganisationDC> CreateCompactOrganisations(IList<Organisation> list)
{

View File

@@ -37,6 +37,8 @@ namespace BeWo.Service.ServiceImplementations
sql = this.ReplaceQueryParameter(sql, parameter);
}
sql = CheckAndModifySqlByUserRights(lQuery, sql);
table = DAOFactory.AdoDAO.ExecuteQuery(sql).Tables[0];
}
if (table == null)
@@ -53,6 +55,11 @@ namespace BeWo.Service.ServiceImplementations
}
}
private string CheckAndModifySqlByUserRights(Query lQuery, string sql)
{
return sql;
}
public List<QueryDC> GetAllQueriesOfType(QueryType pType)
{
try

View File

@@ -25,6 +25,7 @@ using MySql.Data.MySqlClient;
using BeWo.Service.Configuration;
using BeWo.Service.OwnChat;
using BeWo.Service.Plugins;
using BeWo.Data.Security;
namespace BeWo.Service.ServiceImplementations
{
@@ -286,7 +287,13 @@ namespace BeWo.Service.ServiceImplementations
{
try
{
return MapperFactory.UserGroupDC_UserGroup.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<UserGroup>());
var list = MapperFactory.UserGroupDC_UserGroup.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<UserGroup>());
var version = UserRightHelper.GetBeWoVersion();
foreach (var ug in list)
{
UserRightHelper.CheckRightVersion(version, ug);
}
return list;
}
catch (Exception e)
{
@@ -312,7 +319,14 @@ namespace BeWo.Service.ServiceImplementations
{
try
{
return MapperFactory.UserGroupDC_UserGroup.MapToNewDCs(SettingsLogic.GetLastOpened<UserGroup>());
var list = MapperFactory.UserGroupDC_UserGroup.MapToNewDCs(SettingsLogic.GetLastOpened<UserGroup>());
foreach (var item in list)
{
item.Rights = new List<UserRightType>(); // Keine Rechte zum Client schicken um bei neuen Rechten keinen Fehler mit alter Version zu erzeugen. Die Rechte sind hier sowieso nicht wichtig.
}
return list;
}
catch (Exception e)
{
@@ -564,6 +578,7 @@ namespace BeWo.Service.ServiceImplementations
SettingsLogic.AddToUsersHistory<ApplicationUser>(pUserOid);
var user = MapperFactory.UserDC_User.MapToNewDC(DAOFactory.GenericDAO.LoadByID<ApplicationUser>(pUserOid));
UserRightHelper.CheckRightVersion(user);
//var m = DAOFactory.GenericDAO.LoadByID<Mandator>(1);
//if (m != null && m.ClientId == "SBD")
//{
@@ -632,7 +647,10 @@ namespace BeWo.Service.ServiceImplementations
{
try
{
return MapperFactory.UserGroupDC_UserGroup.MapToNewDC(DAOFactory.GenericDAO.LoadByID<UserGroup>(pOid));
var ug = MapperFactory.UserGroupDC_UserGroup.MapToNewDC(DAOFactory.GenericDAO.LoadByID<UserGroup>(pOid));
UserRightHelper.CheckRightVersion(ug);
return ug;
}
catch (Exception e)
{

View File

@@ -1163,15 +1163,15 @@ namespace BS.Shared.Services
var hoursNotBillableAbsence = 0m;
foreach (var iRecord in records.ToList())
{
if (!iRecord.Start.Value.InBetween(scap.Span, true))
{
if (doRemoveFromRecordsList)
{
records.Remove(iRecord);
}
//if (!iRecord.Start.Value.InBetween(scap.Span, true))
//{
// if (doRemoveFromRecordsList)
// {
// records.Remove(iRecord);
// }
continue;
}
// continue;
//}
var absenceSpan = absenceTimes.FirstOrDefault(i => iRecord.Start.Value.InBetween(i.Key, true)).Key;
@@ -1208,7 +1208,6 @@ namespace BS.Shared.Services
continue;
}
hoursNotBillableAbsence += (rd - absenceTimes[absenceSpan]) / 60;
iRecord.End = iRecord.Start.Value.AddMinutes(Convert.ToDouble(absenceTimes[absenceSpan]));
var minuteInterval = costRates.GetCostRatePeriodForDate(CostRatePeriodType.MinutesIntervall, iRecord.Start.Value);
@@ -1219,7 +1218,10 @@ namespace BS.Shared.Services
{
iRecord.RoundedDuration = GetRoundedDuration((int)minuteInterval.CostRateValue.Value, duration);
}
else
{
iRecord.RoundedDuration = duration;
}
absenceTimes[absenceSpan] = 0;
}
}