Stundenkonto Herr Kloss
This commit is contained in:
@@ -44,7 +44,7 @@
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Image Grid.Row="0" Grid.ColumnSpan="4" HorizontalAlignment="Left" VerticalAlignment="Top" Source="Ressources\Icons\bewoplaner_logo_big.png" Height="45" Margin="7,7,0,0"/>
|
||||
<Image Grid.Row="0" Grid.ColumnSpan="4" HorizontalAlignment="Left" VerticalAlignment="Top" Source="Ressources\Icons\bewoplaner_logo_small.png" Height="45" Margin="7,7,0,0"/>
|
||||
<Label VerticalAlignment="Top" HorizontalAlignment="Right" Content="Version x.x.x" Foreground="#FF818181" Margin="5,7,3,0" Grid.Row="0" Grid.ColumnSpan="4" Grid.Column="0" FontSize="10" x:Name="LblVersion" />
|
||||
<StackPanel Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" Margin="0,100,0,0" MaxWidth="330">
|
||||
<Label x:Name="lblGesperrt" Content="Gesperrt" Foreground="#FF000000" FontSize="12" FontWeight="Bold" Margin="0,30,0,0" HorizontalAlignment="Center" />
|
||||
|
||||
@@ -82,8 +82,8 @@
|
||||
<TextBox Grid.Column="1" Margin="1" VerticalContentAlignment="Center" Text="{Binding ViewModel.NewVM.Description, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<Button Grid.Column="2" Height="25" Content="Hinzufügen" Margin="3" Click="ZielHinzufuegenButton_Click" />
|
||||
<Button Grid.Column="3" Height="25" Content="Icf Importieren" Margin="3" Click="IcfImport_Click" />
|
||||
<ToggleButton Grid.Column="4" Height="25" Content="Bearbeiten" Margin="3" Checked="ToggleButton_Checked" Unchecked="ToggleButton_Unchecked" Visibility="Collapsed"/>
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="5" Grid.Row="0" Grid.ColumnSpan="10" HorizontalAlignment="Right" Visibility="Collapsed">
|
||||
<ToggleButton Grid.Column="4" Height="25" Content="Bearbeiten" Margin="3" Checked="ToggleButton_Checked" Unchecked="ToggleButton_Unchecked" Visibility="Visible"/>
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="5" Grid.Row="0" Grid.ColumnSpan="10" HorizontalAlignment="Right" Visibility="Visible">
|
||||
<Button x:Name="PrevButton" Height="25" Content="Prev" Margin="3" Click="PrevButton_Click" />
|
||||
<Button x:Name="NextButton" Height="25" Content="Next" Margin="3" Click="NextButton_Click" />
|
||||
</StackPanel>
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace BeWo.View.Detail
|
||||
|
||||
public ObservableSortCollection<SupportConceptGoalTreeItem> GoalTree { get; private set; }
|
||||
public override bool IsDirty => ViewModel != null && ViewModel.IsDirty || (_History?.GotChanges ?? false);
|
||||
public static bool IsAllowedToEditGoals => BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_AllowEditGoals);
|
||||
public static bool IsAllowedToEditGoals => BeWoApp.LoggedOnUser.HasRight(UserRightType.AdministrationView_Edit);
|
||||
|
||||
public GenericValueListEntryListVM ViewModel
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
|
||||
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
|
||||
<ProjectView>ShowAllFiles</ProjectView>
|
||||
<WebStackScaffolding_ViewDialogWidth>600</WebStackScaffolding_ViewDialogWidth>
|
||||
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
|
||||
|
||||
@@ -140,6 +140,7 @@ namespace BeWo.Report.ReportObjects
|
||||
decimal workdaysTotal = 0;
|
||||
decimal stundenSollGesamt = 0;
|
||||
decimal tatSollStdGesamt = 0;
|
||||
decimal azDurchFeiertage = 0;
|
||||
|
||||
IList<ServiceRecord> groupFilteredRecords = empDetail.AllServiceRecords;
|
||||
|
||||
@@ -301,6 +302,7 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
var ath2 = GetAbwesenheitenDurchServiceRecords(empDetail, c, groupFilteredRecords, berichtsAnfang, berichtsEnde);
|
||||
|
||||
@@ -349,6 +351,13 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
flsSollGesamt += BerechneFlsSoll(emp, c, berichtsAnfang, berichtsEnde, tatSollStdImVertragsUndBerichtzeitraum, stundenSollProMonat);
|
||||
|
||||
if (ath.StundenAlsIst > 0)
|
||||
{
|
||||
tatSollStdGesamt += ath.StundenAlsIst;
|
||||
summaryTotal.IstNichtAbrechenbar += ath.StundenAlsIst * 60;
|
||||
}
|
||||
|
||||
azDurchFeiertage += BerechneGesamtArbeitszeitDurchFeiertage(empDetail, berichtsAnfang, berichtsEnde);
|
||||
|
||||
|
||||
berichtsAnfang = berichtsEnde;
|
||||
@@ -399,6 +408,8 @@ namespace BeWo.Report.ReportObjects
|
||||
empDetail.StundenGesamtIst -= pause1/60;
|
||||
empDetail.StundenGesamtIst -= pause2/60;
|
||||
|
||||
empDetail.StundenGesamtIst += azDurchFeiertage;
|
||||
|
||||
if (empDetail.FlsSoll != 0)
|
||||
empDetail.RelationIstSoll = (empDetail.FlsIst/empDetail.FlsSoll)*100m;
|
||||
|
||||
@@ -455,6 +466,7 @@ namespace BeWo.Report.ReportObjects
|
||||
ro.EmployeeDetailList = FilterEmployeeList(ro.EmployeeDetailList);
|
||||
}
|
||||
|
||||
|
||||
#region Ist-Berechnung für Dienstplanung
|
||||
public decimal BerechneDienstplanIst(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, List<DienstEintrag> eintraege, List<Dienstvertretung> vertretungen, DateTime monat, out decimal? ueberstunden, out decimal? alteExtraUeberstunden) // ABCDEF
|
||||
{
|
||||
@@ -545,16 +557,19 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
MitarbeiterstundenkontoRO.EmployeeDetail ed = new MitarbeiterstundenkontoRO.EmployeeDetail();
|
||||
ed.SollProTag = weeklyTotalHours / arbeitstageProWoche;
|
||||
ed.ArbeitstageProWoche = arbeitstageProWoche;
|
||||
ed.ArbeitstageImBerichtszeitraum = arbeitstage;
|
||||
ed.SollProWoche = BerechneSollProWoche(c, ed);
|
||||
ed.Employee = emp;
|
||||
ed.StundenSollMax = sollMitarbeiter;
|
||||
|
||||
AktuellBearbeitetesEmployeeDetail = ed;
|
||||
var ath = GetAbsenceTimeDaysWithWorkWeeks(emp, start, ende, arbeitstageProWoche);
|
||||
|
||||
|
||||
ed.ArbeitstageProWoche = arbeitstageProWoche;
|
||||
ed.ArbeitstageImBerichtszeitraum = arbeitstage;
|
||||
ed.SollProWoche = BerechneSollProWoche(c, ed);
|
||||
|
||||
ed.AbsenceTimeDays = ath;
|
||||
ed.Employee = emp;
|
||||
ed.StundenSollMax = sollMitarbeiter;
|
||||
|
||||
|
||||
if (ath.TageGesamt.HasValue)
|
||||
{
|
||||
@@ -987,10 +1002,6 @@ namespace BeWo.Report.ReportObjects
|
||||
else
|
||||
sum.IstNichtAbrechenbar += duration;
|
||||
|
||||
if (duration > 0)
|
||||
{
|
||||
int test2 = 0;
|
||||
}
|
||||
}
|
||||
sum.RecordsImBerichtszeitraum.Add(item);
|
||||
}
|
||||
@@ -1501,6 +1512,32 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
protected virtual decimal GetDuration(ServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
||||
{
|
||||
if (!StundenBeiAbwesenheitenBerechnen())
|
||||
{
|
||||
foreach (var at in ed.Employee.AbsenceTimes)
|
||||
{
|
||||
DateTime start = DateTime.MinValue;
|
||||
DateTime end = DateTime.MaxValue;
|
||||
|
||||
if (at.Start.HasValue)
|
||||
{
|
||||
start = at.Start.Value;
|
||||
}
|
||||
if (at.End.HasValue)
|
||||
{
|
||||
end = at.End.Value;
|
||||
if (end.Hour == 0)
|
||||
{
|
||||
end = end.AddDays(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (start <= sr.Start && sr.Start < end)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
decimal duration = 0;
|
||||
|
||||
if (sr.GroupRoundedDuration.HasValue)
|
||||
@@ -1549,6 +1586,7 @@ namespace BeWo.Report.ReportObjects
|
||||
return duration;
|
||||
}
|
||||
|
||||
//Mit "SpecialHours" sind Sonderzeiten wie Nachtzeiten oder Arbeitszeiten an Sonn und Feiertags gemeint. Da diese gesondert abgerechnet werden können.
|
||||
public virtual void CalculateSpecialHours(MitarbeiterstundenkontoRO.DayDetail dd, ServiceRecord sr, decimal duration)
|
||||
{
|
||||
if (sr.Start.Value.DayOfWeek == DayOfWeek.Sunday)
|
||||
@@ -1641,7 +1679,7 @@ namespace BeWo.Report.ReportObjects
|
||||
dd.BreakMinutes = 30;
|
||||
|
||||
CalculateAbsenceTimesForDay(dd, ed);
|
||||
if (date.Year == 2023 && date.Month == 10 && date.Day == 2)
|
||||
if (date.Year == 2023 && date.Month == 10 && date.Day == 3)
|
||||
{
|
||||
int test = 0;
|
||||
}
|
||||
@@ -1649,6 +1687,13 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
BerechneSollStundenFuerDayDetail(ed, dd);
|
||||
|
||||
if (BerechneFeiertageAlsArbeitszeit())
|
||||
{
|
||||
if (dd.Feiertag != null)
|
||||
{
|
||||
dd.MinutesTotal = dd.SollStunden * 60;
|
||||
}
|
||||
}
|
||||
|
||||
return dd;
|
||||
}
|
||||
@@ -1674,7 +1719,13 @@ namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
decimal sollDiesenTag = 0;
|
||||
var faktor = GetFeiertagsFaktor(date);
|
||||
|
||||
if (BerechneFeiertageAlsArbeitszeit())
|
||||
{
|
||||
if (faktor == 1)
|
||||
{
|
||||
faktor = 0;
|
||||
}
|
||||
}
|
||||
if (faktor < 1)
|
||||
{
|
||||
//Berechne Soll, entweder aus Vertrag oder Arbeitszeiten
|
||||
@@ -1818,10 +1869,13 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
|
||||
//Dauer der Abwesenheit = Soll an diesem Tag
|
||||
bool istGanztaegig = true;
|
||||
var abwesenheitsDauer = sollDiesenTag;
|
||||
|
||||
if (span.StartDate.Hour > 0 && span.EndDate.Hour > 0)
|
||||
{
|
||||
istGanztaegig = false;
|
||||
|
||||
var ts = span.EndDate.Subtract(span.StartDate);
|
||||
abwesenheitsDauer = (decimal)ts.TotalHours;
|
||||
if (SchneideZuvieleAbwesenheitsstundenAb() && abwesenheitsDauer > sollDiesenTag)
|
||||
@@ -1875,21 +1929,26 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (IsUrlaubAbsenceTime(absenceTime))
|
||||
if (!AbsenceTimeAufIstStundenAddieren(absenceTime) && IsUrlaubAbsenceTime(absenceTime))
|
||||
{ // Vermutlich diese Methode in CustomMitarbeiterStundenKontoBerechnung überschreiben und hier Prüfung machen, ob absenceReason ohne Fortzahlung ist
|
||||
//und wenn ja, HoursSick oder Soll oder so für den Tag auf 0 setzen
|
||||
|
||||
dd.HoursInVacation = abwesenheitsDauer;
|
||||
}
|
||||
else if (IsKrankheitAbsenceTime(absenceTime))
|
||||
else if (!AbsenceTimeAufIstStundenAddieren(absenceTime) && IsKrankheitAbsenceTime(absenceTime))
|
||||
{
|
||||
dd.HoursSick = abwesenheitsDauer;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (istGanztaegig)
|
||||
{
|
||||
//Bei ganztägigen Abwesenheiten darf nicht noch zusätzlich gearbeitet werden
|
||||
dd.MinutesTotal = 0;
|
||||
}
|
||||
dd.MinutesTotal += abwesenheitsDauer * 60;
|
||||
}
|
||||
|
||||
if (dd.AbsenceTimes == null)
|
||||
{
|
||||
dd.AbsenceTimes = new List<AbsenceTime>();
|
||||
@@ -2061,8 +2120,16 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
MitarbeiterstundenkontoRO.EmployeeDetail ed = new MitarbeiterstundenkontoRO.EmployeeDetail();
|
||||
ed.SollProTag = weeklyTotalHours / arbeitstageProWoche;
|
||||
ed.ArbeitstageProWoche = arbeitstageProWoche;
|
||||
ed.ArbeitstageImBerichtszeitraum = arbeitstage;
|
||||
ed.SollProWoche = BerechneSollProWoche(c, ed);
|
||||
|
||||
ed.Employee = emp;
|
||||
|
||||
AktuellBearbeitetesEmployeeDetail = ed;
|
||||
var ath = GetAbsenceTimeDaysWithWorkWeeks(emp, start, ende, arbeitstageProWoche);
|
||||
ed.AbsenceTimeDays = ath;
|
||||
|
||||
decimal? fehlzeit = GetFehlzeiten(records, start, ende);
|
||||
|
||||
if (fehlzeit.HasValue)
|
||||
@@ -2071,13 +2138,6 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
ed.ArbeitstageProWoche = arbeitstageProWoche;
|
||||
ed.ArbeitstageImBerichtszeitraum = arbeitstage;
|
||||
ed.SollProWoche = BerechneSollProWoche(c, ed);
|
||||
ed.AbsenceTimeDays = ath;
|
||||
ed.Employee = emp;
|
||||
ed.StundenSollMax = sollMitarbeiter;
|
||||
|
||||
|
||||
@@ -2125,9 +2185,11 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
decimal stundenMonat = minutenMonat/60m;
|
||||
var azDurchFeiertage = BerechneGesamtArbeitszeitDurchFeiertage(ed, start, ende);
|
||||
sollMitarbeiter -= azDurchFeiertage;
|
||||
|
||||
decimal stundenMonat = minutenMonat/60m;
|
||||
stundenMonat = ((flsIst*AddRateFactorToIst()) + mittelbarIst)/60m;
|
||||
|
||||
|
||||
@@ -2244,10 +2306,10 @@ namespace BeWo.Report.ReportObjects
|
||||
return BerechneStundenDurchAbwesenheitenAlt(ath, start, ende, c, ed);
|
||||
}
|
||||
|
||||
if (ath.StundenGesamt.HasValue)
|
||||
{
|
||||
return ath.StundenGesamt.Value;
|
||||
}
|
||||
//if (ath.StundenGesamt.HasValue)
|
||||
//{
|
||||
// return ath.StundenGesamt.Value;
|
||||
//}
|
||||
|
||||
decimal stunden = 0;
|
||||
|
||||
@@ -2818,7 +2880,17 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
|
||||
atd.TageProWocheDict = new Dictionary<DateTimeSpan, decimal>();
|
||||
foreach (var week in weeks)
|
||||
atd.StundenProTagDict = new Dictionary<DateTime, decimal>();
|
||||
|
||||
DateTime idt = start;
|
||||
while (idt < end)
|
||||
{
|
||||
atd.StundenProTagDict.Add(idt.Date, 0);
|
||||
|
||||
idt = idt.AddDays(1);
|
||||
}
|
||||
|
||||
foreach (var week in weeks)
|
||||
{
|
||||
atd.TageProWocheDict.Add(week, 0);
|
||||
}
|
||||
@@ -2910,6 +2982,11 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
stunden += std;
|
||||
|
||||
if (AbsenceTimeAufIstStundenAddieren(item))
|
||||
{
|
||||
atd.TageAlsIst += tag;
|
||||
atd.StundenAlsIst += sollAmTag ?? 0;
|
||||
}
|
||||
if (IsKrankheitAbsenceTime(item))
|
||||
{
|
||||
if (!atd.TageKrankheit.HasValue)
|
||||
@@ -2959,9 +3036,153 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
return atd;
|
||||
}
|
||||
|
||||
|
||||
public virtual AbsenceTimeDays GetAbsenceTimeDays(IList<AbsenceTime> absenceTimes, DateTime start, DateTime end)
|
||||
public virtual AbsenceTimeDays GetAbsenceTimeDaysWithWorkWeeksAlt(IList<AbsenceTime> absenceTimes, DateTime start, DateTime end, int arbeitstageProWoche)
|
||||
{
|
||||
var atd = new AbsenceTimeDays();
|
||||
var totalSpan = new DateTimeSpan();
|
||||
totalSpan.StartDate = start;
|
||||
totalSpan.EndDate = end.AddDays(-1);
|
||||
|
||||
var weeks = totalSpan.GetWeeks(true, false);
|
||||
if (BerechneAlteAbwesenheitsStunden(start))
|
||||
{
|
||||
totalSpan.EndDate = end;
|
||||
|
||||
weeks = totalSpan.GetWholeWeeks();
|
||||
}
|
||||
|
||||
atd.TageProWocheDict = new Dictionary<DateTimeSpan, decimal>();
|
||||
foreach (var week in weeks)
|
||||
{
|
||||
atd.TageProWocheDict.Add(week, 0);
|
||||
}
|
||||
decimal? tage = null;
|
||||
if (absenceTimes != null)
|
||||
{
|
||||
foreach (var item in absenceTimes)
|
||||
{
|
||||
if (IstAnrechenbareAbsenceTime(item))
|
||||
{
|
||||
DateTimeSpan span = new DateTimeSpan();
|
||||
|
||||
span.StartDate = start;
|
||||
|
||||
if (item.Start.HasValue && item.Start.Value > span.StartDate)
|
||||
{
|
||||
span.StartDate = item.Start.Value;
|
||||
}
|
||||
|
||||
span.EndDate = end;
|
||||
if (item.End.HasValue && item.End.Value.Date.AddDays(1) < span.EndDate)
|
||||
{
|
||||
span.EndDate = item.End.Value.Date.AddDays(1);
|
||||
}
|
||||
|
||||
if (span.EndDate >= start && span.StartDate < end)
|
||||
{
|
||||
DateTime day = span.StartDate;
|
||||
while (day < end && day < span.EndDate)
|
||||
{
|
||||
|
||||
|
||||
var faktor = GetFeiertagsFaktor(day);
|
||||
bool istWochenende =
|
||||
day.DayOfWeek == DayOfWeek.Saturday || day.DayOfWeek == DayOfWeek.Sunday;
|
||||
if (arbeitstageProWoche == 6)
|
||||
{
|
||||
istWochenende = day.DayOfWeek == DayOfWeek.Sunday;
|
||||
}
|
||||
else if (arbeitstageProWoche > 6)
|
||||
{
|
||||
istWochenende = false;
|
||||
}
|
||||
|
||||
if (faktor < 1 && !istWochenende)
|
||||
{
|
||||
|
||||
if (!tage.HasValue)
|
||||
tage = 0;
|
||||
|
||||
var tag = 1m;
|
||||
var std = 24m;
|
||||
|
||||
if (item.Start.HasValue && item.End.HasValue && item.Start.Value.Date == item.End.Value.Date &&
|
||||
item.Start.Value.Hour > 0)
|
||||
{
|
||||
if (AktuellBearbeitetesEmployeeDetail != null)
|
||||
{
|
||||
faktor = 1;
|
||||
decimal hours = (decimal)item.End.Value.Subtract(item.Start.Value).TotalHours;
|
||||
|
||||
var sollAmTag = AktuellBearbeitetesEmployeeDetail.SollProTag;
|
||||
|
||||
if (SchneideZuvieleAbwesenheitsstundenAb() && hours > sollAmTag)
|
||||
{
|
||||
hours = sollAmTag;
|
||||
}
|
||||
|
||||
if (sollAmTag > 0)
|
||||
{
|
||||
tag = hours / sollAmTag;
|
||||
std = tag * 24;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (faktor != 0)
|
||||
{
|
||||
tag *= faktor;
|
||||
std *= faktor;
|
||||
}
|
||||
|
||||
|
||||
tage += std;
|
||||
|
||||
if (IsKrankheitAbsenceTime(item))
|
||||
{
|
||||
if (!atd.TageKrankheit.HasValue)
|
||||
atd.TageKrankheit = 0;
|
||||
|
||||
atd.TageKrankheit += tag;
|
||||
}
|
||||
|
||||
if (IsUrlaubAbsenceTime(item))
|
||||
{
|
||||
if (!atd.TageUrlaub.HasValue)
|
||||
atd.TageUrlaub = 0;
|
||||
|
||||
atd.TageUrlaub += tag;
|
||||
}
|
||||
|
||||
foreach (var week in weeks)
|
||||
{
|
||||
if (day >= week.StartDate && day <= week.EndDate)
|
||||
{
|
||||
if (atd.TageProWocheDict.ContainsKey(week))
|
||||
{
|
||||
atd.TageProWocheDict[week] += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
day = day.AddDays(1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tage.HasValue)
|
||||
tage /= 24;
|
||||
atd.TageGesamt = tage;
|
||||
return atd;
|
||||
}
|
||||
|
||||
public virtual AbsenceTimeDays GetAbsenceTimeDays(IList<AbsenceTime> absenceTimes, DateTime start, DateTime end)
|
||||
{
|
||||
return GetAbsenceTimeDaysWithWorkWeeks(absenceTimes, start, end, ANZ_WOCHENTAGE);
|
||||
}
|
||||
@@ -3073,9 +3294,10 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
else
|
||||
{
|
||||
maxDays -= GetFeiertagsFaktor(start);
|
||||
//if (IstFeiertag(start))
|
||||
// maxDays--;
|
||||
if (!BerechneFeiertageAlsArbeitszeit())
|
||||
{
|
||||
maxDays -= GetFeiertagsFaktor(start);
|
||||
}
|
||||
}
|
||||
start = start.AddDays(1);
|
||||
}
|
||||
@@ -3132,6 +3354,7 @@ namespace BeWo.Report.ReportObjects
|
||||
protected DateTime GetOsterSonntag(int year)
|
||||
{
|
||||
return VacationService.GetOsterSonntag(year);
|
||||
return VacationService.GetOsterSonntag(year);
|
||||
}
|
||||
|
||||
public virtual bool IsServiceRecordFehlzeit(ServiceRecord sr)
|
||||
@@ -3140,6 +3363,39 @@ namespace BeWo.Report.ReportObjects
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual bool BerechneFeiertageAlsArbeitszeit()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual bool AbsenceTimeAufIstStundenAddieren(AbsenceTime at)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual bool StundenBeiAbwesenheitenBerechnen()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public virtual decimal BerechneGesamtArbeitszeitDurchFeiertage(MitarbeiterstundenkontoRO.EmployeeDetail ed, DateTime start, DateTime ende)
|
||||
{
|
||||
decimal az = 0;
|
||||
if (BerechneFeiertageAlsArbeitszeit() && ed.Employee.IsActive == ActivationTypeId.Active)
|
||||
{
|
||||
DateTime dt = start;
|
||||
while (dt <= ende)
|
||||
{
|
||||
if (GetFeiertagsFaktor(dt) > 0)
|
||||
{
|
||||
az += BerechneSollStundenFuerTag(ed, dt);
|
||||
}
|
||||
dt = dt.AddDays(1);
|
||||
}
|
||||
}
|
||||
return az;
|
||||
}
|
||||
}
|
||||
|
||||
public class AbsenceTimeDays
|
||||
@@ -3147,12 +3403,15 @@ namespace BeWo.Report.ReportObjects
|
||||
public decimal? TageUrlaub;
|
||||
public decimal? TageKrankheit;
|
||||
public decimal? TageGesamt;
|
||||
public decimal TageAlsIst;
|
||||
public decimal? StundenUrlaub;
|
||||
public decimal? StundenKrankheit;
|
||||
public decimal? StundenGesamt;
|
||||
public decimal StundenAlsIst;
|
||||
|
||||
public Dictionary<DateTimeSpan, decimal> TageProWocheDict;
|
||||
public Dictionary<DateTimeSpan, decimal> RestStundenProWocheDict;
|
||||
public Dictionary<DateTime, decimal> StundenProTagDict;
|
||||
public Dictionary<DateTimeSpan, decimal> RestStundenProWocheDict;
|
||||
}
|
||||
|
||||
public class AbsenceTimeHours
|
||||
|
||||
@@ -118,7 +118,10 @@ namespace AkggMid
|
||||
decimal dec = 0;
|
||||
if (varFieldValue != null && Decimal.TryParse(varFieldValue.ToString(), out dec))
|
||||
{
|
||||
return dec / 5;
|
||||
if (dec > 0)
|
||||
{
|
||||
return dec / 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -206,5 +209,20 @@ namespace AkggMid
|
||||
// }
|
||||
//return ed;
|
||||
}
|
||||
}
|
||||
|
||||
public override decimal BerechneStundenDurchAbwesenheiten(AbsenceTimeDays ath, DateTime start, DateTime ende, Contract c, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
||||
{
|
||||
|
||||
if (ath.StundenGesamt.HasValue)
|
||||
{
|
||||
return ath.StundenGesamt.Value;
|
||||
}
|
||||
return base.BerechneStundenDurchAbwesenheiten(ath, start, ende, c, ed);
|
||||
}
|
||||
|
||||
public override bool StundenBeiAbwesenheitenBerechnen()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.Extensions;
|
||||
using BS.Shared.Services;
|
||||
using Service.Invoicing;
|
||||
|
||||
@@ -22,23 +25,39 @@ namespace AkggMid.Invoicing
|
||||
public override IList<InvoiceItem> CreateSbdInvoiceItems(Customer customer, List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc)
|
||||
{
|
||||
//Klassisch nur ohne StundenplanItems
|
||||
DateTime monat = new DateTime(invoicePeriod.StartDate.Year, invoicePeriod.StartDate.Month, 1);
|
||||
|
||||
var ro = ServicesOverviewRO.Create(customer.Oid.Value, monat.Month, monat.Year, false, 0, 0, 1, DateTime.DaysInMonth(monat.Year, monat.Month), null);
|
||||
var helper = new LeistungsnachweisHelper(ro, true);
|
||||
ro.Services = helper.ErstelleDummyRecords(ro);
|
||||
|
||||
IList<InvoiceItem> result = new List<InvoiceItem>();
|
||||
|
||||
IList<InvoiceItem> srList = new List<InvoiceItem>();
|
||||
|
||||
foreach (ServiceRecordDC iServiceRecord in serviceRecordsInPeriod)
|
||||
{
|
||||
if (iServiceRecord.ServiceDescription.Category.IsBillable)
|
||||
{
|
||||
if (!iServiceRecord.AlreadyAccounted)
|
||||
{
|
||||
var invoiceItem = CreateInvoiceItem(iServiceRecord, scap, calc);
|
||||
srList.Add(invoiceItem);
|
||||
|
||||
iServiceRecord.AlreadyAccounted = true;
|
||||
}
|
||||
var c2sDc = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(scap.CostBearer2SupportConcept);
|
||||
foreach (var s in ro.Services)
|
||||
{
|
||||
if (s.Minutes > 0 && s.StartDate > DateTime.MinValue)
|
||||
{
|
||||
var ii = CreateInvoiceItem(s, scap, calc, c2sDc);
|
||||
srList.Add(ii);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//foreach (ServiceRecordDC iServiceRecord in serviceRecordsInPeriod)
|
||||
//{
|
||||
// if (iServiceRecord.ServiceDescription.Category.IsBillable)
|
||||
// {
|
||||
// if (!iServiceRecord.AlreadyAccounted)
|
||||
// {
|
||||
// var invoiceItem = CreateInvoiceItem(iServiceRecord, scap, calc);
|
||||
// srList.Add(invoiceItem);
|
||||
|
||||
// iServiceRecord.AlreadyAccounted = true;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
Dictionary<String, bool> dayDict = new Dictionary<String, bool>();
|
||||
foreach (var item in srList)
|
||||
@@ -57,8 +76,7 @@ namespace AkggMid.Invoicing
|
||||
return CreateSummaryInvoiceItems(newList, invoicePeriod, scap, calc);
|
||||
}
|
||||
|
||||
|
||||
public override IList<InvoiceItem> CreateAllInvoiceItems(CostBearer2SupportConcept c2s, List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc)
|
||||
public override IList<InvoiceItem> CreateAllInvoiceItems(CostBearer2SupportConcept c2s, List<ServiceRecordDC> serviceRecordsInPeriod, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc)
|
||||
{
|
||||
var items = CreateSbdInvoiceItems(c2s.SupportConcept.Customer, serviceRecordsInPeriod, invoicePeriod, scap, calc);
|
||||
|
||||
@@ -112,20 +130,57 @@ namespace AkggMid.Invoicing
|
||||
return key;
|
||||
}
|
||||
|
||||
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
|
||||
{
|
||||
var ii = base.CreateInvoiceItem(iServiceRecord, scap, calc);
|
||||
|
||||
if (iServiceRecord.ServiceDescription.CategoryName.Contains("Klassenfahrt"))
|
||||
{
|
||||
ii.ItemDescription = "Klassenfahrt";
|
||||
private InvoiceItem CreateInvoiceItem(ServicesOverviewRO.ServiceDetail s, SupportConceptApprovalPeriod scap, Calculations calc, SupportConceptCostBearerRelDC c2sDc)
|
||||
{
|
||||
var ii = new InvoiceItem();
|
||||
ii.ItemDescription = "Betreuungsstunden - Schulassistenz";
|
||||
if (s.ServiceRecordOid > 0)
|
||||
{
|
||||
var record = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(s.ServiceRecordOid);
|
||||
var recordDc = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(record);
|
||||
|
||||
BillingData bd = calc.GetBillingData(recordDc);
|
||||
|
||||
ii.ServiceRecord = record;
|
||||
|
||||
ii.AmountPerUnit = bd.AmountPerUnit;
|
||||
ii.UnitCount = bd.UnitCount;
|
||||
ii.AmountTotal = bd.AmountTotal;
|
||||
ii.ItemPeriodStart = bd.BillingPeriodStart;
|
||||
ii.ItemPeriodEnd = bd.BillingPeriodEnd;
|
||||
ii.RateFactor = bd.RateFactor;
|
||||
ii.GrossAmountTotal = bd.GrossAmountTotal;
|
||||
ii.AccountingInterval = bd.AccountingInterval;
|
||||
|
||||
if (recordDc.ServiceDescription.CategoryName.Contains("Klassenfahrt"))
|
||||
{
|
||||
ii.ItemDescription = "Klassenfahrt";
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ii.ItemDescription = "Betreuungsstunden - Schulassistenz";
|
||||
{
|
||||
var stundensatz = c2sDc.CostBearer.CostRatePeriods.GetCostRatePeriodForDate(CostRatePeriodType.HourlyRate, s.StartDate);
|
||||
if (stundensatz != null && stundensatz.CostRateValue.HasValue)
|
||||
{
|
||||
ii.AmountPerUnit = stundensatz.CostRateValue.Value;
|
||||
ii.UnitCount = (decimal)s.Minutes / 60;
|
||||
ii.AmountTotal = ii.AmountPerUnit * ii.UnitCount;
|
||||
ii.ItemPeriodStart = s.StartDate;
|
||||
ii.ItemPeriodEnd = s.StartDate;
|
||||
ii.RateFactor = 0;
|
||||
ii.GrossAmountTotal = ii.AmountTotal;
|
||||
ii.AccountingInterval = AccountingIntervalType.Hourly;
|
||||
}
|
||||
}
|
||||
|
||||
if (scap != null)
|
||||
ii.SupportConceptApprovalPeriodOid = scap.Oid;
|
||||
|
||||
|
||||
return ii;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ namespace AkggMid
|
||||
{
|
||||
var hours = day.HoursSick + day.HoursInVacation;
|
||||
empDetail.StundenGesamtIst += hours;
|
||||
day.ServiceRecords = null;
|
||||
}
|
||||
|
||||
if (day.ServiceRecords != null && day.ServiceRecords.Count > 0)
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace AsbRuhr.Export
|
||||
public String Belegdatum { get; set; }
|
||||
public String Erloeskonto { get; set; }
|
||||
public String Buchungstext { get; set; }
|
||||
public String Kategorie { get; set; }
|
||||
public decimal Betrag { get; set; }
|
||||
|
||||
|
||||
|
||||
@@ -186,28 +186,34 @@ Alternativ wäre der 1120er Satz mit einzubauen (ab Seite 61)
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
var ds = ErstelleFibuNetDatensatz(row);
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
if (ds.Betrag != 0)
|
||||
{
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
|
||||
rowIndex++;
|
||||
rowIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
dt = ExecuteQuery(GetSpitzabrechnungSql(date), date);
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
var ds = ErstelleFibuNetDatensatz(row);
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
if (ds.Betrag != 0)
|
||||
{
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
|
||||
rowIndex++;
|
||||
rowIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
sb.AppendLine(String.Format("( ):5;"));
|
||||
@@ -235,19 +241,24 @@ Alternativ wäre der 1120er Satz mit einzubauen (ab Seite 61)
|
||||
if (!String.IsNullOrEmpty(row[3].ToString()))
|
||||
{
|
||||
var ds = ErstelleFibuNetDatensatz(row);
|
||||
String nextInvoiceNumber = ApplyPattern(invoiceNumber.Pattern, number++);
|
||||
ds.Belegnr = nextInvoiceNumber;
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
if (ds.Betrag != 0 && (String.IsNullOrEmpty(ds.Kategorie) || !ds.Kategorie.Contains("Assistenz")))
|
||||
{
|
||||
String nextInvoiceNumber = ApplyPattern(invoiceNumber.Pattern, number++);
|
||||
ds.Belegnr = nextInvoiceNumber;
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
|
||||
rowIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
rowIndex++;
|
||||
|
||||
}
|
||||
|
||||
invoiceNumber.CurrentNumber = number;
|
||||
DAOFactory.GenericDAO.Update(invoiceNumber);
|
||||
|
||||
sb.AppendLine(String.Format("( ):5;"));
|
||||
@@ -307,6 +318,7 @@ Alternativ wäre der 1120er Satz mit einzubauen (ab Seite 61)
|
||||
blg1 = "123456";
|
||||
ds.Belegnr = blg1;
|
||||
ds.Belegdatum = row[0].ToString();
|
||||
ds.Kategorie = row[7].ToString();
|
||||
ds.Erloeskonto = GetErloeskonto(row[7].ToString());
|
||||
ds.Buchungstext = row[4].ToString();
|
||||
ds.Kostenstelle = "4102";
|
||||
|
||||
@@ -215,7 +215,7 @@ namespace BeWo.BeWoAmrath
|
||||
|
||||
tatsaechlicheSollStdGesamt -= fehlZeiten.Value;
|
||||
}
|
||||
|
||||
AktuellBearbeitetesEmployeeDetail = empDetail;
|
||||
var ath = GetAbsenceTimeDays(emp.AbsenceTimes, berichtsAnfang, berichtsEnde);
|
||||
|
||||
if (ath.TageUrlaub.HasValue)
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace DiePerspektive.Export
|
||||
public String Belegdatum { get; set; }
|
||||
public String Erloeskonto { get; set; }
|
||||
public String Buchungstext { get; set; }
|
||||
public String Kategorie { get; set; }
|
||||
public decimal Betrag { get; set; }
|
||||
|
||||
|
||||
|
||||
@@ -186,28 +186,34 @@ Alternativ wäre der 1120er Satz mit einzubauen (ab Seite 61)
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
var ds = ErstelleFibuNetDatensatz(row);
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
if (ds.Betrag != 0)
|
||||
{
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
|
||||
rowIndex++;
|
||||
rowIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
dt = ExecuteQuery(GetSpitzabrechnungSql(date), date);
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
var ds = ErstelleFibuNetDatensatz(row);
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
if (ds.Betrag != 0)
|
||||
{
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
|
||||
rowIndex++;
|
||||
rowIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
sb.AppendLine(String.Format("( ):0005;"));
|
||||
@@ -234,17 +240,22 @@ Alternativ wäre der 1120er Satz mit einzubauen (ab Seite 61)
|
||||
if (!String.IsNullOrEmpty(row[3].ToString()))
|
||||
{
|
||||
var ds = ErstelleFibuNetDatensatz(row);
|
||||
String nextInvoiceNumber = ApplyPattern(invoiceNumber.Pattern, number++);
|
||||
ds.Belegnr = nextInvoiceNumber;
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
if (ds.Betrag != 0 && (String.IsNullOrEmpty(ds.Kategorie) || !ds.Kategorie.Contains("Assistenz")))
|
||||
{
|
||||
String nextInvoiceNumber = ApplyPattern(invoiceNumber.Pattern, number++);
|
||||
ds.Belegnr = nextInvoiceNumber;
|
||||
Erstelle1100Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1110Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
Erstelle1120Satz(sb, ds);
|
||||
sb.AppendLine();
|
||||
|
||||
rowIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
rowIndex++;
|
||||
|
||||
}
|
||||
invoiceNumber.CurrentNumber = number;
|
||||
|
||||
@@ -307,6 +318,7 @@ Alternativ wäre der 1120er Satz mit einzubauen (ab Seite 61)
|
||||
blg1 = "123456";
|
||||
ds.Belegnr = blg1;
|
||||
ds.Belegdatum = row[0].ToString();
|
||||
ds.Kategorie = row[7].ToString();
|
||||
ds.Erloeskonto = GetErloeskonto(row[7].ToString());
|
||||
ds.Buchungstext = row[4].ToString();
|
||||
ds.Kostenstelle = "4102";
|
||||
|
||||
@@ -71,6 +71,12 @@
|
||||
<DependentUpon>CustomerDataReport.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ZeitdokumentationPlanIst.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ZeitdokumentationPlanIst.Designer.cs">
|
||||
<DependentUpon>ZeitdokumentationPlanIst.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Quittierungsbeleg.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
@@ -105,6 +111,9 @@
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\licenses.licx" />
|
||||
<EmbeddedResource Include="ZeitdokumentationPlanIst.resx">
|
||||
<DependentUpon>ZeitdokumentationPlanIst.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Quittierungsbeleg.resx">
|
||||
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
1363
ReportImp/Fortis/ZeitdokumentationPlanIst.Designer.cs
generated
Normal file
1363
ReportImp/Fortis/ZeitdokumentationPlanIst.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
162
ReportImp/Fortis/ZeitdokumentationPlanIst.cs
Normal file
162
ReportImp/Fortis/ZeitdokumentationPlanIst.cs
Normal file
@@ -0,0 +1,162 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using DevExpress.XtraReports.UI;
|
||||
|
||||
namespace Fortis
|
||||
{
|
||||
public partial class ZeitdokumentationPlanIst : XtraReport
|
||||
{
|
||||
|
||||
public ZeitdokumentationPlanIst()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void SetReportDataSource(ServicesOverviewRO pRO)
|
||||
{
|
||||
if (pRO.Services != null)
|
||||
{
|
||||
Dictionary<int, FortisServiceRecord> tag2Details = new Dictionary<int, FortisServiceRecord>();
|
||||
|
||||
foreach (var sr in pRO.Services)
|
||||
{
|
||||
FortisServiceRecord fsr = null;
|
||||
if (!tag2Details.ContainsKey(sr.StartDate.Day))
|
||||
{
|
||||
fsr = new FortisServiceRecord();
|
||||
tag2Details.Add(sr.StartDate.Day, fsr);
|
||||
}
|
||||
else
|
||||
{
|
||||
fsr = tag2Details[sr.StartDate.Day];
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
123
ReportImp/Fortis/ZeitdokumentationPlanIst.resx
Normal file
123
ReportImp/Fortis/ZeitdokumentationPlanIst.resx
Normal 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>21, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -14,8 +14,8 @@ namespace PerspektivenEV.Service
|
||||
{
|
||||
// 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")
|
||||
stat.PeriodStatistics = stat.PeriodStatistics.Where(p => p.SupportConceptApprovalPeriod.ServiceCategory == null || String.IsNullOrEmpty(p.SupportConceptApprovalPeriod.ServiceCategory.Abbreviation) ||
|
||||
(!p.SupportConceptApprovalPeriod.ServiceCategory.Abbreviation.Contains("GVF")
|
||||
&& !p.SupportConceptApprovalPeriod.ServiceCategory.Abbreviation.Contains("AFZ"))).ToList();
|
||||
|
||||
return stat;
|
||||
|
||||
@@ -9,6 +9,11 @@ namespace SHKService
|
||||
{
|
||||
public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
|
||||
{
|
||||
protected override void StarteBerechnung(DateTime berichtsAnfang, DateTime berichtsEnde, MitarbeiterstundenkontoRO.EmployeeDetail empDetail)
|
||||
{
|
||||
this.vacationService.Bundesland = "Hessen";
|
||||
}
|
||||
|
||||
public override bool AddServiceRecordToDuration(ServiceRecord item)
|
||||
{
|
||||
if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null)
|
||||
@@ -125,23 +130,66 @@ namespace SHKService
|
||||
dd.MinutesTotal = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (dd.MinutesTotal == 0 && dd.Feiertag != null && dd.SollStunden > 0)
|
||||
{
|
||||
dd.MinutesTotal = dd.SollStunden * 60;
|
||||
}
|
||||
|
||||
if (dd.AbsenceTimes != null)
|
||||
{
|
||||
foreach (var at in dd.AbsenceTimes)
|
||||
{
|
||||
if (at.AbsenceReason.Description == "Krankengeld" || at.AbsenceReason.Description == "Unbezahlten Urlaub")
|
||||
{
|
||||
dd.Custom1 = "x"; // String.Format("{0:0.00}", ed.SollProTag * 60);
|
||||
}
|
||||
if (AbsenceTimeAufIstStundenAddieren(at))
|
||||
{
|
||||
dd.MinutesTotal = dd.SollStunden * 60;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
protected override decimal GetDuration(ServiceRecord sr, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
||||
{
|
||||
var d = base.GetDuration(sr, ed);
|
||||
|
||||
if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" && sr.ServiceDescription.Name == "Zeitabzug")
|
||||
{
|
||||
|
||||
d *= -1;
|
||||
}
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
public override bool IstAnrechenbareAbsenceTime(AbsenceTime item)
|
||||
{
|
||||
if (item.AbsenceReason.Description == "Freizeitausgleich")
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return base.IstAnrechenbareAbsenceTime(item);
|
||||
}
|
||||
|
||||
public override bool IsKrankheitAbsenceTime(AbsenceTime absenceTime)
|
||||
{
|
||||
return !IsUrlaubAbsenceTime(absenceTime);
|
||||
}
|
||||
|
||||
public override bool AbsenceTimeAufIstStundenAddieren(AbsenceTime at)
|
||||
{
|
||||
if (at.AbsenceReason.Description == "Mutterschutz")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return base.AbsenceTimeAufIstStundenAddieren(at);
|
||||
}
|
||||
|
||||
public override bool SollPauseBerechnen()
|
||||
{
|
||||
return true;
|
||||
@@ -188,5 +236,10 @@ namespace SHKService
|
||||
}
|
||||
return pausenZeit;
|
||||
}
|
||||
|
||||
public override bool BerechneFeiertageAlsArbeitszeit()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -45,6 +45,7 @@ namespace SHKService
|
||||
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell67 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell27 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.ruleIstFeiertagOderWE = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
this.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
@@ -58,15 +59,19 @@ namespace SHKService
|
||||
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell29 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.GroupHeader3 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.lblMonat = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell25 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell30 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow8 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.cellRegelarbeitszeit = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow10 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell24 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
@@ -80,6 +85,7 @@ namespace SHKService
|
||||
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.cellSumHoursSickDecimal = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.cellSumHoursInVacationDecimal = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell46 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
@@ -118,9 +124,7 @@ namespace SHKService
|
||||
this.fieldSumHoliday2 = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldIstArbeitszeit = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldUeberstundenGesamt = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell30 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.fieldPause = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
|
||||
@@ -154,7 +158,7 @@ namespace SHKService
|
||||
this.xrTableDetail.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrTableDetail.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRowDetail});
|
||||
this.xrTableDetail.SizeF = new System.Drawing.SizeF(680.0001F, 22F);
|
||||
this.xrTableDetail.SizeF = new System.Drawing.SizeF(735F, 22F);
|
||||
this.xrTableDetail.StylePriority.UseBorders = false;
|
||||
this.xrTableDetail.StylePriority.UseFont = false;
|
||||
this.xrTableDetail.StylePriority.UsePadding = false;
|
||||
@@ -169,7 +173,8 @@ namespace SHKService
|
||||
this.xrTableCell31,
|
||||
this.xrTableCell12,
|
||||
this.xrTableCell67,
|
||||
this.xrTableCell27});
|
||||
this.xrTableCell27,
|
||||
this.xrTableCell32});
|
||||
this.xrTableRowDetail.FormattingRules.Add(this.ruleIstFeiertagOderWE);
|
||||
this.xrTableRowDetail.Name = "xrTableRowDetail";
|
||||
this.xrTableRowDetail.Weight = 0.88D;
|
||||
@@ -184,7 +189,7 @@ namespace SHKService
|
||||
this.xrTableCell3.StylePriority.UsePadding = false;
|
||||
this.xrTableCell3.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell3.Weight = 0.090171325518485154D;
|
||||
this.xrTableCell3.Weight = 0.081154186862521918D;
|
||||
this.xrTableCell3.XlsxFormatString = "ddd. dd.MM.yyyy";
|
||||
//
|
||||
// xrTableCell20
|
||||
@@ -193,7 +198,7 @@ namespace SHKService
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Days.ZeitraeumeString", "{0:HH:mm}")});
|
||||
this.xrTableCell20.Name = "xrTableCell20";
|
||||
this.xrTableCell20.Text = "xrTableCell20";
|
||||
this.xrTableCell20.Weight = 0.27051398343498156D;
|
||||
this.xrTableCell20.Weight = 0.24346256746709186D;
|
||||
//
|
||||
// xrTableCell31
|
||||
//
|
||||
@@ -203,16 +208,16 @@ namespace SHKService
|
||||
this.xrTableCell31.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell31.Text = "xrTableCell31";
|
||||
this.xrTableCell31.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell31.Weight = 0.063119930374871888D;
|
||||
this.xrTableCell31.Weight = 0.06762848938356511D;
|
||||
//
|
||||
// xrTableCell12
|
||||
//
|
||||
this.xrTableCell12.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Days.PauseInMinuten")});
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Days.fieldPause", "{0:0.00}")});
|
||||
this.xrTableCell12.Name = "xrTableCell12";
|
||||
this.xrTableCell12.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell12.Weight = 0.063119875338662257D;
|
||||
this.xrTableCell12.Weight = 0.0676284893835602D;
|
||||
//
|
||||
// xrTableCell67
|
||||
//
|
||||
@@ -222,7 +227,7 @@ namespace SHKService
|
||||
this.xrTableCell67.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell67.Text = "xrTableCell67";
|
||||
this.xrTableCell67.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell67.Weight = 0.063120042167172666D;
|
||||
this.xrTableCell67.Weight = 0.067628491103456534D;
|
||||
//
|
||||
// xrTableCell27
|
||||
//
|
||||
@@ -232,7 +237,16 @@ namespace SHKService
|
||||
this.xrTableCell27.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell27.Text = "xrTableCell27";
|
||||
this.xrTableCell27.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell27.Weight = 0.063119914035996524D;
|
||||
this.xrTableCell27.Weight = 0.06762847304468976D;
|
||||
//
|
||||
// xrTableCell32
|
||||
//
|
||||
this.xrTableCell32.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Days.Custom1")});
|
||||
this.xrTableCell32.Name = "xrTableCell32";
|
||||
this.xrTableCell32.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell32.Weight = 0.06762847304468976D;
|
||||
//
|
||||
// ruleIstFeiertagOderWE
|
||||
//
|
||||
@@ -291,7 +305,7 @@ namespace SHKService
|
||||
this.xrTableHeader.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrTableHeader.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRowHeader});
|
||||
this.xrTableHeader.SizeF = new System.Drawing.SizeF(680F, 30F);
|
||||
this.xrTableHeader.SizeF = new System.Drawing.SizeF(735F, 30F);
|
||||
this.xrTableHeader.StylePriority.UseBackColor = false;
|
||||
this.xrTableHeader.StylePriority.UseBorders = false;
|
||||
this.xrTableHeader.StylePriority.UseFont = false;
|
||||
@@ -307,7 +321,8 @@ namespace SHKService
|
||||
this.xrTableCell7,
|
||||
this.xrTableCell11,
|
||||
this.xrTableCell8,
|
||||
this.xrTableCell10});
|
||||
this.xrTableCell10,
|
||||
this.xrTableCell29});
|
||||
this.xrTableRowHeader.Name = "xrTableRowHeader";
|
||||
this.xrTableRowHeader.Weight = 0.79999999999999982D;
|
||||
//
|
||||
@@ -319,7 +334,7 @@ namespace SHKService
|
||||
this.xrTableCell5.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell5.Text = "Datum";
|
||||
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell5.Weight = 0.090171325629990237D;
|
||||
this.xrTableCell5.Weight = 0.081154193095780036D;
|
||||
//
|
||||
// xrTableCell2
|
||||
//
|
||||
@@ -327,7 +342,7 @@ namespace SHKService
|
||||
this.xrTableCell2.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell2.Text = "Uhrzeit";
|
||||
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell2.Weight = 0.27051397634361185D;
|
||||
this.xrTableCell2.Weight = 0.24346257874098126D;
|
||||
//
|
||||
// xrTableCell7
|
||||
//
|
||||
@@ -335,7 +350,7 @@ namespace SHKService
|
||||
this.xrTableCell7.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell7.Text = "Stunden";
|
||||
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell7.Weight = 0.063119928929937077D;
|
||||
this.xrTableCell7.Weight = 0.067628495197042171D;
|
||||
//
|
||||
// xrTableCell11
|
||||
//
|
||||
@@ -343,7 +358,7 @@ namespace SHKService
|
||||
this.xrTableCell11.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell11.Text = "Pause";
|
||||
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell11.Weight = 0.063119928895488023D;
|
||||
this.xrTableCell11.Weight = 0.06762849516259313D;
|
||||
//
|
||||
// xrTableCell8
|
||||
//
|
||||
@@ -352,7 +367,7 @@ namespace SHKService
|
||||
this.xrTableCell8.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell8.Text = "Krank";
|
||||
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell8.Weight = 0.06311992750638197D;
|
||||
this.xrTableCell8.Weight = 0.067628493773487064D;
|
||||
//
|
||||
// xrTableCell10
|
||||
//
|
||||
@@ -362,7 +377,15 @@ namespace SHKService
|
||||
this.xrTableCell10.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell10.Text = "Urlaub";
|
||||
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell10.Weight = 0.063119926380177924D;
|
||||
this.xrTableCell10.Weight = 0.067628492647283017D;
|
||||
//
|
||||
// xrTableCell29
|
||||
//
|
||||
this.xrTableCell29.Name = "xrTableCell29";
|
||||
this.xrTableCell29.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell29.Text = "ohne LFZ";
|
||||
this.xrTableCell29.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell29.Weight = 0.067628492647283017D;
|
||||
//
|
||||
// GroupHeader3
|
||||
//
|
||||
@@ -440,6 +463,30 @@ namespace SHKService
|
||||
this.xrTableCell25.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell25.Weight = 0.42678331118474744D;
|
||||
//
|
||||
// xrTableCell30
|
||||
//
|
||||
this.xrTableCell30.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.xrTableCell30.Name = "xrTableCell30";
|
||||
this.xrTableCell30.StylePriority.UseFont = false;
|
||||
this.xrTableCell30.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell30.Text = "Personalnummer:";
|
||||
this.xrTableCell30.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell30.Weight = 0.24895814510513284D;
|
||||
//
|
||||
// xrTableCell14
|
||||
//
|
||||
this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.FirstName")});
|
||||
this.xrTableCell14.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrTableCell14.Name = "xrTableCell14";
|
||||
this.xrTableCell14.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
|
||||
this.xrTableCell14.StylePriority.UseFont = false;
|
||||
this.xrTableCell14.StylePriority.UsePadding = false;
|
||||
this.xrTableCell14.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell14.Text = "xrTableCell14";
|
||||
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell14.Weight = 0.24895814510513284D;
|
||||
//
|
||||
// xrTableRow8
|
||||
//
|
||||
this.xrTableRow8.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
@@ -472,6 +519,13 @@ namespace SHKService
|
||||
this.cellRegelarbeitszeit.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.cellRegelarbeitszeit.Weight = 0.5835277006587D;
|
||||
//
|
||||
// xrTableCell22
|
||||
//
|
||||
this.xrTableCell22.Name = "xrTableCell22";
|
||||
this.xrTableCell22.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell22.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell22.Weight = 0.34117190073631326D;
|
||||
//
|
||||
// xrTableRow10
|
||||
//
|
||||
this.xrTableRow10.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
@@ -544,7 +598,7 @@ namespace SHKService
|
||||
this.xrTable4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow9});
|
||||
this.xrTable4.SizeF = new System.Drawing.SizeF(570F, 22F);
|
||||
this.xrTable4.SizeF = new System.Drawing.SizeF(625F, 22F);
|
||||
this.xrTable4.StylePriority.UseBorders = false;
|
||||
this.xrTable4.StylePriority.UseFont = false;
|
||||
this.xrTable4.StylePriority.UsePadding = false;
|
||||
@@ -558,7 +612,8 @@ namespace SHKService
|
||||
this.cellSumMinutesTotalDecimal,
|
||||
this.xrTableCell13,
|
||||
this.cellSumHoursSickDecimal,
|
||||
this.cellSumHoursInVacationDecimal});
|
||||
this.cellSumHoursInVacationDecimal,
|
||||
this.xrTableCell33});
|
||||
this.xrTableRow9.Name = "xrTableRow9";
|
||||
this.xrTableRow9.Weight = 0.87999999999999978D;
|
||||
//
|
||||
@@ -570,7 +625,7 @@ namespace SHKService
|
||||
this.xrTableCell64.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell64.Text = "Summe:";
|
||||
this.xrTableCell64.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell64.Weight = 0.26149405118689462D;
|
||||
this.xrTableCell64.Weight = 0.22542590687581596D;
|
||||
//
|
||||
// cellSumMinutesTotalDecimal
|
||||
//
|
||||
@@ -584,18 +639,19 @@ namespace SHKService
|
||||
this.cellSumMinutesTotalDecimal.Summary = xrSummary1;
|
||||
this.cellSumMinutesTotalDecimal.Text = "cellSumMinutesTotalDecimal";
|
||||
this.cellSumMinutesTotalDecimal.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.cellSumMinutesTotalDecimal.Weight = 0.0631191946273484D;
|
||||
this.cellSumMinutesTotalDecimal.Weight = 0.06762776770185383D;
|
||||
//
|
||||
// xrTableCell13
|
||||
//
|
||||
this.xrTableCell13.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Days.PauseInMinuten")});
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Days.fieldPause")});
|
||||
this.xrTableCell13.Name = "xrTableCell13";
|
||||
this.xrTableCell13.StylePriority.UseTextAlignment = false;
|
||||
xrSummary2.FormatString = "{0:0.00}";
|
||||
xrSummary2.Running = DevExpress.XtraReports.UI.SummaryRunning.Report;
|
||||
this.xrTableCell13.Summary = xrSummary2;
|
||||
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell13.Weight = 0.0631191946273484D;
|
||||
this.xrTableCell13.Weight = 0.06762776770185383D;
|
||||
//
|
||||
// cellSumHoursSickDecimal
|
||||
//
|
||||
@@ -610,7 +666,7 @@ namespace SHKService
|
||||
this.cellSumHoursSickDecimal.Summary = xrSummary3;
|
||||
this.cellSumHoursSickDecimal.Text = "cellSumHoursSickDecimal";
|
||||
this.cellSumHoursSickDecimal.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.cellSumHoursSickDecimal.Weight = 0.0631193595441027D;
|
||||
this.cellSumHoursSickDecimal.Weight = 0.067627767511746345D;
|
||||
//
|
||||
// cellSumHoursInVacationDecimal
|
||||
//
|
||||
@@ -626,7 +682,14 @@ namespace SHKService
|
||||
this.cellSumHoursInVacationDecimal.Summary = xrSummary4;
|
||||
this.cellSumHoursInVacationDecimal.Text = "cellSumHoursInVacationDecimal";
|
||||
this.cellSumHoursInVacationDecimal.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.cellSumHoursInVacationDecimal.Weight = 0.0631192564471769D;
|
||||
this.cellSumHoursInVacationDecimal.Weight = 0.067627774486061748D;
|
||||
//
|
||||
// xrTableCell33
|
||||
//
|
||||
this.xrTableCell33.Name = "xrTableCell33";
|
||||
this.xrTableCell33.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell33.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell33.Weight = 0.067627774486061748D;
|
||||
//
|
||||
// xrTable1
|
||||
//
|
||||
@@ -1016,36 +1079,12 @@ namespace SHKService
|
||||
this.fieldUeberstundenGesamt.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
|
||||
this.fieldUeberstundenGesamt.Name = "fieldUeberstundenGesamt";
|
||||
//
|
||||
// xrTableCell14
|
||||
// fieldPause
|
||||
//
|
||||
this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.FirstName")});
|
||||
this.xrTableCell14.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrTableCell14.Name = "xrTableCell14";
|
||||
this.xrTableCell14.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
|
||||
this.xrTableCell14.StylePriority.UseFont = false;
|
||||
this.xrTableCell14.StylePriority.UsePadding = false;
|
||||
this.xrTableCell14.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell14.Text = "xrTableCell14";
|
||||
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell14.Weight = 0.24895814510513284D;
|
||||
//
|
||||
// xrTableCell22
|
||||
//
|
||||
this.xrTableCell22.Name = "xrTableCell22";
|
||||
this.xrTableCell22.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell22.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell22.Weight = 0.34117190073631326D;
|
||||
//
|
||||
// xrTableCell30
|
||||
//
|
||||
this.xrTableCell30.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.xrTableCell30.Name = "xrTableCell30";
|
||||
this.xrTableCell30.StylePriority.UseFont = false;
|
||||
this.xrTableCell30.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell30.Text = "Personalnummer:";
|
||||
this.xrTableCell30.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell30.Weight = 0.24895814510513284D;
|
||||
this.fieldPause.DataMember = "EmployeeDetailList.Days";
|
||||
this.fieldPause.Expression = "[PauseInMinuten]/60";
|
||||
this.fieldPause.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
|
||||
this.fieldPause.Name = "fieldPause";
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
@@ -1069,13 +1108,14 @@ namespace SHKService
|
||||
this.fieldSumHours,
|
||||
this.fieldSumHoliday2,
|
||||
this.fieldIstArbeitszeit,
|
||||
this.fieldUeberstundenGesamt});
|
||||
this.fieldUeberstundenGesamt,
|
||||
this.fieldPause});
|
||||
this.DataSource = this.bindingSource1;
|
||||
this.DisplayName = "Mitarbeiterstundenkonto";
|
||||
this.Font = new System.Drawing.Font("Arial", 8F);
|
||||
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
|
||||
this.ruleIstFeiertagOderWE});
|
||||
this.Margins = new System.Drawing.Printing.Margins(75, 50, 50, 50);
|
||||
this.Margins = new System.Drawing.Printing.Margins(40, 40, 50, 50);
|
||||
this.PageHeight = 1169;
|
||||
this.PageWidth = 827;
|
||||
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
|
||||
@@ -1184,5 +1224,9 @@ namespace SHKService
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell30;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell22;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell29;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell32;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell33;
|
||||
private DevExpress.XtraReports.UI.CalculatedField fieldPause;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,6 +347,16 @@ namespace SHKServiceSBD
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool BerechneFeiertageAlsArbeitszeit()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool AbsenceTimeAufIstStundenAddieren(AbsenceTime at)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
||||
{
|
||||
var dd = base.CreateDayDetail(date, ed);
|
||||
@@ -364,7 +374,6 @@ namespace SHKServiceSBD
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
return base.GetFeiertagsFaktor(start);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,152 +9,152 @@ using BS.Shared.Services;
|
||||
|
||||
namespace VSDHammReports
|
||||
{
|
||||
public class VSDCalculations : LWLCalculations
|
||||
{
|
||||
//public class VSDCalculations : LWLCalculations
|
||||
//{
|
||||
|
||||
public override decimal? GetApprovedHoursTotal(SupportConceptCostBearerRelDC relDC, bool useIsCalculationWithFactor)
|
||||
{
|
||||
if (relDC.ApprovalPeriodList == null || !relDC.GetApprovedDuration().HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
// public override decimal? GetApprovedHoursTotal(SupportConceptCostBearerRelDC relDC, bool useIsCalculationWithFactor)
|
||||
// {
|
||||
// if (relDC.ApprovalPeriodList == null || !relDC.GetApprovedDuration().HasValue)
|
||||
// {
|
||||
// return null;
|
||||
// }
|
||||
|
||||
if (!useIsCalculationWithFactor)
|
||||
{
|
||||
return base.GetApprovedHoursTotal(relDC, useIsCalculationWithFactor);
|
||||
}
|
||||
// if (!useIsCalculationWithFactor)
|
||||
// {
|
||||
// return base.GetApprovedHoursTotal(relDC, useIsCalculationWithFactor);
|
||||
// }
|
||||
|
||||
decimal hoursTotal = 0;
|
||||
// decimal hoursTotal = 0;
|
||||
|
||||
foreach (var scap in relDC.ApprovalPeriodList)
|
||||
{
|
||||
var newhoursTotal = this.GetApprovedHoursTotal(scap, relDC.CostBearer.CostRatePeriods);
|
||||
// foreach (var scap in relDC.ApprovalPeriodList)
|
||||
// {
|
||||
// var newhoursTotal = this.GetApprovedHoursTotal(scap, relDC.CostBearer.CostRatePeriods);
|
||||
|
||||
if (newhoursTotal.HasValue)
|
||||
{
|
||||
newhoursTotal = ApplyIsCalculationWithFactor(relDC, scap, newhoursTotal);
|
||||
hoursTotal += newhoursTotal.Value;
|
||||
}
|
||||
}
|
||||
// if (newhoursTotal.HasValue)
|
||||
// {
|
||||
// newhoursTotal = ApplyIsCalculationWithFactor(relDC, scap, newhoursTotal);
|
||||
// hoursTotal += newhoursTotal.Value;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
hoursTotal = Math.Round(hoursTotal, 10, MidpointRounding.AwayFromZero);
|
||||
return hoursTotal;
|
||||
}
|
||||
// hoursTotal = Math.Round(hoursTotal, 10, MidpointRounding.AwayFromZero);
|
||||
// return hoursTotal;
|
||||
// }
|
||||
|
||||
public override decimal? GetApprovedHoursForPeriod(SupportConceptCostBearerRelDC relDC,
|
||||
SupportConceptApprovalPeriodDC scap,
|
||||
List<CostRatePeriodDC> costRatePeriods,
|
||||
DateTime? pStart,
|
||||
DateTime? pEnd,
|
||||
bool useIsCalculationWithFactor)
|
||||
{
|
||||
decimal? approvedHours = GetApprovedHoursForPeriod(scap, costRatePeriods, pStart, pEnd);
|
||||
if (approvedHours.HasValue && useIsCalculationWithFactor)
|
||||
approvedHours = ApplyIsCalculationWithFactor(relDC, scap, approvedHours);
|
||||
return approvedHours;
|
||||
// public override decimal? GetApprovedHoursForPeriod(SupportConceptCostBearerRelDC relDC,
|
||||
// SupportConceptApprovalPeriodDC scap,
|
||||
// List<CostRatePeriodDC> costRatePeriods,
|
||||
// DateTime? pStart,
|
||||
// DateTime? pEnd,
|
||||
// bool useIsCalculationWithFactor)
|
||||
// {
|
||||
// decimal? approvedHours = GetApprovedHoursForPeriod(scap, costRatePeriods, pStart, pEnd);
|
||||
// if (approvedHours.HasValue && useIsCalculationWithFactor)
|
||||
// approvedHours = ApplyIsCalculationWithFactor(relDC, scap, approvedHours);
|
||||
// return approvedHours;
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public decimal? ApplyIsCalculationWithFactor(SupportConceptCostBearerRelDC relDC, SupportConceptApprovalPeriodDC scap, decimal? valueToApply)
|
||||
{
|
||||
if (valueToApply.HasValue && relDC .CostBearer != null && relDC.CostBearer.IsCalculatingWithFactor)
|
||||
{
|
||||
if (relDC.CostBearer.CostRatePeriods != null)
|
||||
{
|
||||
var rateFactorsInSpan = relDC.CostBearer.CostRatePeriods.GetSpans(CostRatePeriodType.RateFactor, scap.StartDate.Value.Date, scap.EndDate.Value.Date).ToList();
|
||||
// public decimal? ApplyIsCalculationWithFactor(SupportConceptCostBearerRelDC relDC, SupportConceptApprovalPeriodDC scap, decimal? valueToApply)
|
||||
// {
|
||||
// if (valueToApply.HasValue && relDC .CostBearer != null && relDC.CostBearer.IsCalculatingWithFactor)
|
||||
// {
|
||||
// if (relDC.CostBearer.CostRatePeriods != null)
|
||||
// {
|
||||
// var rateFactorsInSpan = relDC.CostBearer.CostRatePeriods.GetSpans(CostRatePeriodType.RateFactor, scap.StartDate.Value.Date, scap.EndDate.Value.Date).ToList();
|
||||
|
||||
if (rateFactorsInSpan.Count > 1)
|
||||
{
|
||||
decimal totalhours = 0;
|
||||
// if (rateFactorsInSpan.Count > 1)
|
||||
// {
|
||||
// decimal totalhours = 0;
|
||||
|
||||
var totalDays = (scap.EndDate.Value - scap.StartDate.Value).Days + 1;
|
||||
foreach (var keyValuePair in rateFactorsInSpan)
|
||||
{
|
||||
var span = keyValuePair.Value;
|
||||
var rf = keyValuePair.Key;
|
||||
// var totalDays = (scap.EndDate.Value - scap.StartDate.Value).Days + 1;
|
||||
// foreach (var keyValuePair in rateFactorsInSpan)
|
||||
// {
|
||||
// var span = keyValuePair.Value;
|
||||
// var rf = keyValuePair.Key;
|
||||
|
||||
if (rf.CostRateValue.HasValue && rf.CostRateValue.Value > 0)
|
||||
{
|
||||
var spanDays = (span.EndDate - span.StartDate).Days + 1;
|
||||
// if (rf.CostRateValue.HasValue && rf.CostRateValue.Value > 0)
|
||||
// {
|
||||
// var spanDays = (span.EndDate - span.StartDate).Days + 1;
|
||||
|
||||
decimal prozent = (spanDays/(decimal)totalDays);
|
||||
decimal hours = valueToApply.Value * prozent;
|
||||
// decimal prozent = (spanDays/(decimal)totalDays);
|
||||
// decimal hours = valueToApply.Value * prozent;
|
||||
|
||||
hours = (hours * 100) / (rf.CostRateValue.Value + 100);
|
||||
// hours = (hours * 100) / (rf.CostRateValue.Value + 100);
|
||||
|
||||
totalhours += hours;
|
||||
}
|
||||
// totalhours += hours;
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
return totalhours;
|
||||
}
|
||||
else
|
||||
{
|
||||
decimal? rateFactor =
|
||||
relDC.CostBearer.CostRatePeriods.GetValidRateValueForDate(CostRatePeriodType.RateFactor, scap.StartDate.Value);
|
||||
if (rateFactor.HasValue && rateFactor.Value > 0)
|
||||
valueToApply = (valueToApply.Value*100)/(rateFactor.Value + 100);
|
||||
}
|
||||
}
|
||||
// return totalhours;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// decimal? rateFactor =
|
||||
// relDC.CostBearer.CostRatePeriods.GetValidRateValueForDate(CostRatePeriodType.RateFactor, scap.StartDate.Value);
|
||||
// if (rateFactor.HasValue && rateFactor.Value > 0)
|
||||
// valueToApply = (valueToApply.Value*100)/(rateFactor.Value + 100);
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
return valueToApply;
|
||||
}
|
||||
// }
|
||||
// return valueToApply;
|
||||
// }
|
||||
|
||||
public override decimal? GetApprovedHoursForPeriod(SupportConceptApprovalPeriodDC scap,
|
||||
List<CostRatePeriodDC> costRatePeriods,
|
||||
DateTime? pStart,
|
||||
DateTime? pEnd)
|
||||
{
|
||||
if (!pStart.HasValue || !pEnd.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (scap.ApprovedBEInterval.HasValue && scap.ApprovedBEPerInterval.HasValue)
|
||||
{
|
||||
if (scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Monthly)
|
||||
{
|
||||
var months = GetTotalMonths(pStart.Value, pEnd.Value);
|
||||
return months * scap.ApprovedBEPerInterval.Value;
|
||||
}
|
||||
else if (scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Quarterly)
|
||||
{
|
||||
var qs = GetTotalQuarters(pStart.Value, pEnd.Value);
|
||||
return qs * scap.ApprovedBEPerInterval.Value;
|
||||
}
|
||||
}
|
||||
// public override decimal? GetApprovedHoursForPeriod(SupportConceptApprovalPeriodDC scap,
|
||||
// List<CostRatePeriodDC> costRatePeriods,
|
||||
// DateTime? pStart,
|
||||
// DateTime? pEnd)
|
||||
// {
|
||||
// if (!pStart.HasValue || !pEnd.HasValue)
|
||||
// {
|
||||
// return null;
|
||||
// }
|
||||
// if (scap.ApprovedBEInterval.HasValue && scap.ApprovedBEPerInterval.HasValue)
|
||||
// {
|
||||
// if (scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Monthly)
|
||||
// {
|
||||
// var months = GetTotalMonths(pStart.Value, pEnd.Value);
|
||||
// return months * scap.ApprovedBEPerInterval.Value;
|
||||
// }
|
||||
// else if (scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Quarterly)
|
||||
// {
|
||||
// var qs = GetTotalQuarters(pStart.Value, pEnd.Value);
|
||||
// return qs * scap.ApprovedBEPerInterval.Value;
|
||||
// }
|
||||
// }
|
||||
|
||||
var periodInDays = (pEnd.Value.Date - pStart.Value.Date).Days + 1;
|
||||
// var periodInDays = (pEnd.Value.Date - pStart.Value.Date).Days + 1;
|
||||
|
||||
return this.GetApprovedHoursPerDay(scap, costRatePeriods) * periodInDays;
|
||||
}
|
||||
// return this.GetApprovedHoursPerDay(scap, costRatePeriods) * periodInDays;
|
||||
// }
|
||||
|
||||
public override decimal? GetApprovedHoursPerDay(SupportConceptApprovalPeriodDC scap,
|
||||
List<CostRatePeriodDC> costRatePeriods)
|
||||
{
|
||||
if (scap.EndDate.HasValue && scap.StartDate.HasValue && scap.ApprovedBEPerInterval.HasValue && !scap.ApprovedBETotal.HasValue
|
||||
&& scap.ApprovedBEInterval.HasValue && scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Weekly)
|
||||
{
|
||||
var scapDurationInDays = (scap.EndDate.Value - scap.StartDate.Value).Days + 1;
|
||||
// public override decimal? GetApprovedHoursPerDay(SupportConceptApprovalPeriodDC scap,
|
||||
// List<CostRatePeriodDC> costRatePeriods)
|
||||
// {
|
||||
// if (scap.EndDate.HasValue && scap.StartDate.HasValue && scap.ApprovedBEPerInterval.HasValue && !scap.ApprovedBETotal.HasValue
|
||||
// && scap.ApprovedBEInterval.HasValue && scap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Weekly)
|
||||
// {
|
||||
// var scapDurationInDays = (scap.EndDate.Value - scap.StartDate.Value).Days + 1;
|
||||
|
||||
decimal weeks = Math.Round(scapDurationInDays * 0.1427m, 2, MidpointRounding.AwayFromZero);
|
||||
decimal total = weeks * scap.ApprovedBEPerInterval.Value;
|
||||
// decimal weeks = Math.Round(scapDurationInDays * 0.1427m, 2, MidpointRounding.AwayFromZero);
|
||||
// decimal total = weeks * scap.ApprovedBEPerInterval.Value;
|
||||
|
||||
decimal ah = 0;
|
||||
if (scapDurationInDays != 0)
|
||||
ah = total / scapDurationInDays;
|
||||
return ah;
|
||||
// decimal ah = 0;
|
||||
// if (scapDurationInDays != 0)
|
||||
// ah = total / scapDurationInDays;
|
||||
// return ah;
|
||||
|
||||
}
|
||||
return base.GetApprovedHoursPerDay(scap, costRatePeriods);
|
||||
// }
|
||||
// return base.GetApprovedHoursPerDay(scap, costRatePeriods);
|
||||
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,11 @@ namespace BeWo.Service.Invoicing
|
||||
String id = c2s.CostBearer.ID;
|
||||
|
||||
var calc = PluginLoader.FindClass<Calculations>(id);
|
||||
if (calc == null)
|
||||
{
|
||||
calc = Calculations.GetInstance(id);
|
||||
}
|
||||
|
||||
var relDc = c2s.MapToNewDC();
|
||||
|
||||
var apListFehlkontakt = new List<ApprovalPeriod>();
|
||||
|
||||
Reference in New Issue
Block a user