MH: DiakonieKKKleve QB Leerzeilen
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.Extensions;
|
||||
using DevExpress.DataAccess.Sql;
|
||||
using DevExpress.XtraReports.UI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -31,6 +35,21 @@ namespace DiakonieKKKleve
|
||||
//if (pRO == null)
|
||||
// return;
|
||||
|
||||
// MainAttendant ist bei denen die Hauptbetreuung UND der/die Soziotherapeutin/in. Es soll hier aber nur die Hauptbetreuung drin stehen
|
||||
if (pRO.CustomerOid != null)
|
||||
{
|
||||
var customer = DAOFactory.GenericDAO.GetByID<Customer>(pRO.CustomerOid);
|
||||
|
||||
foreach (var e2c in customer.Employee2CustomerList)
|
||||
{
|
||||
if (e2c.ValueList != null && e2c.ValueList.Count > 0)
|
||||
{
|
||||
if (e2c.ValueList.Any(e => e.Entry != null && e.Entry.Value != null && e.Entry.Value.Contains("Hauptbetreuung")))
|
||||
pRO.MainAttendant = e2c.Employee.Person.FirstNameLastName;break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pRO.Services != null)
|
||||
{
|
||||
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
|
||||
@@ -39,6 +58,7 @@ namespace DiakonieKKKleve
|
||||
var reportstartdate = pRO.StartDate;
|
||||
while (reportstartdate <= pRO.EndDate.Date)
|
||||
{
|
||||
// Jeder Tag im Monat soll abgebildet werden, daher an Tagen, wo keine Leistung ist, eine Zeile ohne Eintrag einfügen
|
||||
if (!pRO.Services.Any(s => s.StartDate.Date == reportstartdate))
|
||||
{
|
||||
pRO.Services.Add(new ServiceDetail()
|
||||
@@ -55,36 +75,35 @@ namespace DiakonieKKKleve
|
||||
Minutes = 0
|
||||
});
|
||||
}
|
||||
|
||||
// Nach jedem Sonntag (außer wenn er auf den Monatsletzten fällt) soll eine Leerzeile eingefügt werden
|
||||
if (reportstartdate.DayOfWeek == DayOfWeek.Sunday && reportstartdate.Day != DateTime.DaysInMonth(reportstartdate.Year, reportstartdate.Month))
|
||||
{
|
||||
pRO.Services.Add(new ServiceDetail()
|
||||
{
|
||||
IsBillable = true,
|
||||
StartDate = reportstartdate,
|
||||
Notice = "",
|
||||
Notice2 = "",
|
||||
Notice3 = "",
|
||||
Notice4 = "",
|
||||
Notice5 = "",
|
||||
EmployeeCount = 999 // EmployeeCount als Sortierungsparameter, damit die Leerzeile immer NACH den Sonntagen kommt
|
||||
});
|
||||
|
||||
}
|
||||
reportstartdate = reportstartdate.AddDays(1);
|
||||
}
|
||||
|
||||
pRO.Services = pRO.Services.OrderBy(s => s.StartDate.Date).ToList();
|
||||
// Nach Sonntagen eine Leerzeile erzeugen, damit es aussieht, wie in der Vorlage
|
||||
List<int> sonntagIndex = new List<int>();
|
||||
sonntagIndex.AddRange(pRO.Services.Where(s => s.StartDate.DayOfWeek == DayOfWeek.Sunday).Select(s => s.StartDate.Day));
|
||||
pRO.Services = pRO.Services.OrderBy(s => s.StartDate.Date).ThenBy(s => s.EmployeeCount).ToList();
|
||||
|
||||
// Nicht volle Wochen sollen keine Leerzeile bekommen
|
||||
if (sonntagIndex[0] < 7)
|
||||
sonntagIndex.Remove(sonntagIndex[0]);
|
||||
if (DateTime.DaysInMonth(pRO.StartDate.Year, pRO.StartDate.Month) == sonntagIndex[sonntagIndex.Count - 1])
|
||||
sonntagIndex.Remove(sonntagIndex[sonntagIndex.Count - 1]);
|
||||
|
||||
// Wenn ein Sonntag eingefügt wurde, muss der nächste einen weiter nach hinten gesetzt werden, da es ja nicht mehr alle 7 Einträge ein Sonntag kommt
|
||||
int sonntageEingefuegt = 0;
|
||||
foreach (var index in sonntagIndex)
|
||||
{
|
||||
pRO.Services.Insert(index + sonntageEingefuegt, new ServiceDetail() { IsBillable = true, Notice = "",Notice2 = "",Notice3 = "",Notice4 = "",Notice5 = "", });
|
||||
sonntageEingefuegt++;
|
||||
}
|
||||
|
||||
foreach (var sd in pRO.Services)
|
||||
{
|
||||
if (sd.IsBillable || sd.ServiceDescription.ToLower().Contains("fehlkontakt") || sd.ServiceCategory.ToLower().Contains("fehlkontakt"))
|
||||
{
|
||||
sd.Notice = sd.StartDate.Year == 1 ? "" : string.Format("{0:ddd}", sd.StartDate);
|
||||
sd.Notice2 = sd.StartDate.Year == 1 ? "" : string.Format("{0:dd.MM.yyyy}", sd.StartDate);
|
||||
sd.Notice3 = sd.StartDate.Year == 1 ? "" : string.Format("{0}", sd.Minutes);
|
||||
// Wenn Leerzeile, Datum nicht darstellen ("")
|
||||
sd.Notice = sd.EmployeeCount == 999 ? "" : string.Format("{0:ddd}", sd.StartDate);
|
||||
sd.Notice2 = sd.EmployeeCount == 999 ? "" : string.Format("{0:dd.MM.yyyy}", sd.StartDate);
|
||||
sd.Notice3 = sd.EmployeeCount == 999 ? "" : string.Format("{0}", sd.Minutes);
|
||||
sd.Notice4 = "";
|
||||
sd.Notice5 = "";
|
||||
|
||||
@@ -178,7 +197,7 @@ namespace DiakonieKKKleve
|
||||
{
|
||||
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
|
||||
var binData = Convert.FromBase64String(base64Data);
|
||||
Image img = ByteArrayToImage(binData);
|
||||
System.Drawing.Image img = ByteArrayToImage(binData);
|
||||
xrBox.Image = Utils.CropImage(img);
|
||||
}
|
||||
else
|
||||
@@ -187,11 +206,11 @@ namespace DiakonieKKKleve
|
||||
}
|
||||
}
|
||||
|
||||
public Image ByteArrayToImage(byte[] byteArrayIn)
|
||||
public System.Drawing.Image ByteArrayToImage(byte[] byteArrayIn)
|
||||
{
|
||||
using(var memoryStream = new MemoryStream(byteArrayIn))
|
||||
{
|
||||
return Image.FromStream(memoryStream);
|
||||
return System.Drawing.Image.FromStream(memoryStream);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +220,8 @@ namespace DiakonieKKKleve
|
||||
|
||||
if (row != null)
|
||||
{
|
||||
xrTableCell35.Visible = row.StartDate.DayOfWeek == DayOfWeek.Sunday /*|| row.StartDate.Day == DateTime.DaysInMonth(row.StartDate.Year, row.StartDate.Month)*/;
|
||||
// Unterschriftenzelle anzeigen, wenn es der Monatsletzte ODER ein Sonntag und KEINE Leerzeile ist
|
||||
xrTableCell35.Visible = row.EmployeeCount != 999 && (row.StartDate.DayOfWeek == DayOfWeek.Sunday || row.StartDate.Day == DateTime.DaysInMonth(row.StartDate.Year, row.StartDate.Month)) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user