Drucken Rechnungsübersicht, Start-Enddatum bei Betreuung Zuordnung, Speichern der letzten Module beim Mandator, diverse Anpassungen Schulbegleitung

This commit is contained in:
Christian
2023-09-08 15:52:55 +02:00
parent 1f7dcb1f6d
commit 2e6fdb3c8e
49 changed files with 2480 additions and 100 deletions

View File

@@ -16,7 +16,12 @@ namespace BeWo.SchulbegleitenderDienst.SBDUtils
foreach (var viewModel in viewModels)
{
if(viewModel.VertretungsStatus != VertretungsStatus.KlientKrank)
if (viewModel.Customer != null && viewModel.Customer.LastName == "Dau" || viewModel.Customer.LastName == "Sawan")
{
int tet = 0;
}
if (viewModel.VertretungsStatus != VertretungsStatus.KlientKrank)
{
var substitutionStartingDayCountCondition = SubstitutionStartingDayCountCondition(viewModel);
@@ -64,6 +69,10 @@ namespace BeWo.SchulbegleitenderDienst.SBDUtils
foreach (var viewModel in viewModels)
{
if (viewModel.Customer != null && viewModel.Customer.LastName == "Dau" || viewModel.Customer.LastName == "Sawan")
{
int tet = 0;
}
var isCustomerAbsenceWeekView = viewModel.WeekDayDictionary.Where(w => w.Value != null).All(a => a.Value.VertretungsStatus == VertretungsStatus.KlientKrank);
var isSubstitutionUnwanted = viewModel.WeekDayDictionary.Where(w => w.Value != null).All(a => SubstitutionStartingDayCountCondition(a.Value) || a.Value.Vertretung?.VertretenderMitarbeiterOid != null || a.Value.Customer != null && a.Value.Customer.SubstitutionNeed == SubstitutionNeed.NoSubstitutionWanted);
@@ -83,7 +92,7 @@ namespace BeWo.SchulbegleitenderDienst.SBDUtils
}
}
return new WeeklySubstitutionListObject(employeeSubstitutionList, customerSubstitutionList, customerSubstitutionList);
return new WeeklySubstitutionListObject(employeeSubstitutionList, customerSubstitutionList, unwantedSubstitutionList);
}
}

View File

@@ -22,7 +22,7 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GroupBox Grid.ColumnSpan="2" Padding="5" Style="{StaticResource ObjectEditGroupBox}" Header="Schulbegleitender Dienst">
<GroupBox Grid.ColumnSpan="3" Padding="5" Style="{StaticResource ObjectEditGroupBox}" Header="Schulbegleitender Dienst">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />

View File

@@ -27,7 +27,7 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GroupBox Grid.ColumnSpan="2" Padding="5" Style="{StaticResource ObjectEditGroupBox}" Header="Schulbegleitender Dienst">
<GroupBox Grid.ColumnSpan="3" Padding="5" Style="{StaticResource ObjectEditGroupBox}" Header="Schulbegleitender Dienst">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />

View File

@@ -843,7 +843,7 @@
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="True" AllowBestFit="True" BestFitMode="AllRows" ShowGroupPanel="False" CellValueChanged="AbsentEmployeesWeekViewDataGrid_OnCellValueChanged" MouseMove="TableView_MouseMove_Wochenansicht">
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="True" AllowBestFit="True" BestFitMode="AllRows" ShowGroupPanel="False" CellValueChanged="AbsentEmployeesWeekViewDataGrid_OnCellValueChanged" MouseMove="TableView_MouseMove_Wochenansicht" ShowGridMenu="GridDataControlWochenansichtMitarbeiter_OnShowGridMenu">
</dxg:TableView>
</dxg:GridControl.View>

View File

@@ -640,15 +640,42 @@ namespace BeWo.SchulbegleitenderDienst
}
}
private void GridDataControlWochenansichtMitarbeiter_OnShowGridMenu(object sender, GridMenuEventArgs e)
{
var barButtonItem2 = new BarButtonItem { Content = "Steckbrief anzeigen" };
barButtonItem2.ItemClick += ShowCharacteristics;
e.Customizations.Add(barButtonItem2);
//var selectedViewModel = (TagesansichtVM)GridDataControlWochenansichtMitarbeiter.SelectedItem;
}
private void ShowCharacteristics(object sender, RoutedEventArgs e)
{
var selectedItem = GridControlTagesansichtMitarbeiter.SelectedItem;
CompactCustomerDC selectedCustomer = null;
if(selectedItem != null)
if (ScrollViewerTagesansicht.Visibility == Visibility.Visible)
{
var selectedTagesansichtVM = (TagesansichtVM) selectedItem;
var url = $"{BeWoApp.SiteOfOrigin}/ReportView.aspx?type={ReportTypes.SBDCharacteristics}&customerOid={selectedTagesansichtVM.Customer.CustomerOid}";
TagesansichtVM selectedItem = GridControlTagesansichtMitarbeiter.SelectedItem as TagesansichtVM;
if (selectedItem != null)
{
selectedCustomer = selectedItem.Customer;
}
}
else if (ScrollViewerWochenansicht.Visibility == Visibility.Visible)
{
WochenansichtVM selectedItem = GridDataControlWochenansichtMitarbeiter.SelectedItem as WochenansichtVM;
if (selectedItem != null)
{
selectedCustomer = selectedItem.Customer;
}
}
if(selectedCustomer != null)
{
var url = $"{BeWoApp.SiteOfOrigin}/ReportView.aspx?type={ReportTypes.SBDCharacteristics}&customerOid={selectedCustomer.CustomerOid}";
//var tempToken = string.Empty;

View File

@@ -166,25 +166,27 @@ namespace BeWo.SchulbegleitenderDienst
var end = _Tagesansicht.Datum;
var assistanceTime = _Tagesansicht.AssistanceTimeEntry;
var assistanceTimeDates = DateTimeUtils.GetAssistanceTimeComparisonDateTime(assistanceTime.UhrzeitVon, assistanceTime.UhrzeitBis, start);
start = assistanceTimeDates.Start;
end = assistanceTimeDates.End;
if (_Tagesansicht.Vertretung != null)
if (assistanceTime != null)
{
start = _Tagesansicht.Vertretung.VertretungsZeitraumVon;
end = _Tagesansicht.Vertretung.VertretungsZeitraumBis;
var assistanceTimeDates = DateTimeUtils.GetAssistanceTimeComparisonDateTime(assistanceTime.UhrzeitVon, assistanceTime.UhrzeitBis, start);
start = assistanceTimeDates.Start;
end = assistanceTimeDates.End;
if (_Tagesansicht.Vertretung != null)
{
start = _Tagesansicht.Vertretung.VertretungsZeitraumVon;
end = _Tagesansicht.Vertretung.VertretungsZeitraumBis;
}
start = currentDate.Date;
end = currentDate.Date;
SubstitutionStart = start;
SubstitutionEnd = end;
}
start = currentDate.Date;
end = currentDate.Date;
SubstitutionStart = start;
SubstitutionEnd = end;
}
private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)

View File

@@ -1668,6 +1668,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Employee2SchedulerAppointmentDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.DataContracts.ValueListEntryDC, System.Collections.Generic.List<BS.Shared.DataContracts.ResourceDC>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<System.DateTime, System.Collections.Generic.List<BS.Shared.Core.DateTimeSpan>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<string, System.Collections.Generic.List<string>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.SignatureType, System.Collections.Generic.List<long>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<System.Collections.Generic.Dictionary<int, long>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<int, long>))]
@@ -4909,6 +4910,13 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/GetAllActiveEmployeeAbsenceTimesInIntervalBeW" +
"oFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.AbsenceTimeDC> GetAllActiveEmployeeAbsenceTimesInInterval(System.DateTime start, System.DateTime end, long employeeOid, System.Collections.Generic.List<long> selectedEmployeeOids);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/CheckResourceAvailabilityWithEmployeeInformat" +
"ion", ReplyAction="http://tempuri.org/IResourceService/CheckResourceAvailabilityWithEmployeeInformat" +
"ionResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/CheckResourceAvailabilityWithEmployeeInformat" +
"ionBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.Dictionary<string, System.Collections.Generic.List<string>> CheckResourceAvailabilityWithEmployeeInformation(System.DateTime start, System.DateTime end, System.Collections.Generic.List<long> resourceOids, System.Nullable<long> selectedAppointmentOid, System.Nullable<System.Guid> recurrenceId, int occurrenceIndex, bool shouldSkipResourceAvailability);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -5234,6 +5242,11 @@ namespace BeWo.ServiceProxy
{
return base.Channel.GetAllActiveEmployeeAbsenceTimesInInterval(start, end, employeeOid, selectedEmployeeOids);
}
public System.Collections.Generic.Dictionary<string, System.Collections.Generic.List<string>> CheckResourceAvailabilityWithEmployeeInformation(System.DateTime start, System.DateTime end, System.Collections.Generic.List<long> resourceOids, System.Nullable<long> selectedAppointmentOid, System.Nullable<System.Guid> recurrenceId, int occurrenceIndex, bool shouldSkipResourceAvailability)
{
return base.Channel.CheckResourceAvailabilityWithEmployeeInformation(start, end, resourceOids, selectedAppointmentOid, recurrenceId, occurrenceIndex, shouldSkipResourceAvailability);
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -5518,6 +5531,17 @@ namespace BeWo.ServiceProxy
"ult", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.Dictionary<string, string> GetDiagiosisStringsForICD10Codes(System.Collections.Generic.List<string> icd10Codes);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/DeleteSignature", ReplyAction="http://tempuri.org/IOperationsService/DeleteSignatureResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/DeleteSignatureBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void DeleteSignature(long signatureOid, long serviceRecordOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/CheckForConfirmationReceiptSignatureForServ" +
"iceRecord", ReplyAction="http://tempuri.org/IOperationsService/CheckForConfirmationReceiptSignatureForServ" +
"iceRecordResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/CheckForConfirmationReceiptSignatureForServ" +
"iceRecordBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
bool CheckForConfirmationReceiptSignatureForServiceRecord(long serviceRecordOid, BS.Shared.SignatureType signatureType);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/VertretungsMitarbeiterListeWoechentlich", ReplyAction="http://tempuri.org/IOperationsService/VertretungsMitarbeiterListeWoechentlichResp" +
"onse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/VertretungsMitarbeiterListeWoechentlichBeWo" +
@@ -6968,6 +6992,16 @@ namespace BeWo.ServiceProxy
return base.Channel.GetDiagiosisStringsForICD10Codes(icd10Codes);
}
public void DeleteSignature(long signatureOid, long serviceRecordOid)
{
base.Channel.DeleteSignature(signatureOid, serviceRecordOid);
}
public bool CheckForConfirmationReceiptSignatureForServiceRecord(long serviceRecordOid, BS.Shared.SignatureType signatureType)
{
return base.Channel.CheckForConfirmationReceiptSignatureForServiceRecord(serviceRecordOid, signatureType);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.VertretungsListeMitarbeiterItemsDC> VertretungsMitarbeiterListeWoechentlich(System.DateTime start, System.DateTime ende)
{
return base.Channel.VertretungsMitarbeiterListeWoechentlich(start, ende);
@@ -8993,6 +9027,10 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IReportService/CreateKalenderReportWithAbsenceTimesBeWoFaultFa" +
"ult", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.IO.MemoryStream CreateKalenderReportWithAbsenceTimes(System.Collections.Generic.List<long> appointmentOids, System.Nullable<long> employeeOid, System.Collections.Generic.List<BS.Shared.DataContracts.SchedulerAppointmentDC> serientermine, System.Collections.Generic.List<System.DateTime> selectedDates, System.Collections.Generic.List<BS.Shared.DataContracts.SchedulerAppointmentDC> mehrtaegigeTermine, System.Collections.Generic.List<long> absenceTimeOids);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IReportService/CreateInvoiceListReport", ReplyAction="http://tempuri.org/IReportService/CreateInvoiceListReportResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IReportService/CreateInvoiceListReportBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.IO.MemoryStream CreateInvoiceListReport(System.Collections.Generic.List<long> invoiceBaseOids);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -9108,6 +9146,11 @@ namespace BeWo.ServiceProxy
{
return base.Channel.CreateKalenderReportWithAbsenceTimes(appointmentOids, employeeOid, serientermine, selectedDates, mehrtaegigeTermine, absenceTimeOids);
}
public System.IO.MemoryStream CreateInvoiceListReport(System.Collections.Generic.List<long> invoiceBaseOids)
{
return base.Channel.CreateInvoiceListReport(invoiceBaseOids);
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

View File

@@ -31,7 +31,7 @@
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label x:Name="SearchFieldLabel" Grid.Column="0" Content="Suche" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Left" />
<TextBox x:Name="cbtv_search" Grid.Column="1" Margin="3" Height="23" Template="{StaticResource SearchTextBoxTemplate}" HorizontalAlignment="Stretch" />
<TextBox x:Name="cbtv_search" Grid.Column="1" Margin="3" Height="23" Template="{StaticResource SearchTextBoxTemplate}" HorizontalAlignment="Stretch" TextChanged="cbtv_search_TextChanged" />
</Grid>
<TreeView x:Name="Tree1" Margin="0" Grid.Row="1"
ItemTemplate="{DynamicResource treeitemtemplate}"
@@ -39,14 +39,14 @@
BorderThickness="0" Background="White"
Loaded="Tree1_OnLoaded"
dx:ThemeManager.ThemeName="None">
<TreeView.ItemsSource>
<!--<TreeView.ItemsSource>
<MultiBinding Converter="{StaticResource FilterDCConverter}">
<MultiBinding.Bindings>
<Binding Path="TreeViewSourceList" />
<Binding ElementName="cbtv_search" Path="Text" />
</MultiBinding.Bindings>
</MultiBinding>
</TreeView.ItemsSource>
</TreeView.ItemsSource>-->
<TreeView.Resources>
<Style x:Key="servicecat_treeitemstyle" TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding Path=IsExpanded, Mode=TwoWay}" />

View File

@@ -48,6 +48,7 @@ namespace BeWo.View.Controls
{
SetValue(ListProperty, value);
ShowCheckedValues();
Tree1.ItemsSource = value;
}
}
@@ -360,5 +361,125 @@ namespace BeWo.View.Controls
}
RatingPopup.IsOpen = false;
}
private void cbtv_search_TextChanged(object sender, TextChangedEventArgs e)
{
FilterTreeItems();
}
private void FilterTreeItems()
{
String searchtext = cbtv_search.Text;
foreach (var goal in Tree1.Items)
{
SetTreeItemVisibility(Tree1.ItemContainerGenerator, goal as SupportConceptGoalDC, searchtext);
//if (ig.Status != GeneratorStatus.ContainersGenerated)
//{
// return;
//}
//var n = ig.ContainerFromIndex(this.treeview_individualServiceAccountings.Items.Count - 1) as TreeViewItem;
//if (n != null)
//{
// n.IsSelected = true;
// new DispatcherTimer(
// TimeSpan.FromMilliseconds(200),
// DispatcherPriority.Background,
// (s1, e1) =>
// {
// ServiceCategoryTreeItem item = ig.ItemFromContainer(n) as ServiceCategoryTreeItem;
// this.EditItem(this.treeview_individualServiceAccountings, null, item);
// ((DispatcherTimer)s1).Stop();
// },
// this.Dispatcher).Start();
//}
//this.treeview_individualServiceAccountings.ItemContainerGenerator.StatusChanged -= this.ItemContainerGenerator_StatusChanged;
}
}
private void SetTreeItemVisibility(ItemContainerGenerator ig, SupportConceptGoalDC goal, string searchtext)
{
var item = ig.ContainerFromItem(goal) as TreeViewItem;
if (item == null)
{
Tree1.UpdateLayout();
item = ig.ContainerFromItem(goal) as TreeViewItem;
}
if (item == null)
return;
if (goal.Children == null || goal.Children.Count == 0)
{
if (IsTreeItemVisible(goal, searchtext))
{
item.Visibility = Visibility.Visible;
}
else
{
item.Visibility = Visibility.Collapsed;
}
}
else
{
foreach (var child in goal.Children)
{
SetTreeItemVisibility(item.ItemContainerGenerator, child, searchtext);
}
if (IsAtLeastOneChildVisible(goal.Children, searchtext))
{
item.Visibility = Visibility.Visible;
}
else
{
if (IsTreeItemVisible(goal, searchtext))
{
item.Visibility = Visibility.Visible;
}
else
{
item.Visibility = Visibility.Collapsed;
}
}
}
}
private bool IsTreeItemVisible(SupportConceptGoalDC goal, string searchtext)
{
if (!String.IsNullOrEmpty(searchtext) && (String.IsNullOrEmpty(goal.DetailDescription) || !goal.DetailDescription.ToLower().Contains(searchtext.ToLower())))
{
return false;
}
return true;
}
private bool IsAtLeastOneChildVisible(List<SupportConceptGoalDC> children, string searchtext)
{
foreach (var child in children)
{
bool visible = IsTreeItemVisible(child, searchtext) || IsAtLeastOneChildVisible(child.Children, searchtext);
if (visible)
{
return true;
}
}
return false;
}
}
}

View File

@@ -12,6 +12,7 @@
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<localView:YearMonthFilter Margin="3 0 0 3" VerticalAlignment="Bottom" HorizontalAlignment="Left" Grid.Column="0" x:Name="yearMonthFilter" FilterSpanChanged="YearMonthFilter_FilterSpanChanged" />
@@ -25,8 +26,8 @@
<dxg:GridControl Margin="3" Grid.ColumnSpan="3" Grid.Row="1" DataSource="{Binding VMList}" x:Name="datagrid_invoices" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<dxg:GridControl.Columns>
<dxg:GridColumn x:Name="ColumnButtons" AllowEditing="False" MinWidth="90" FieldName="ReportLink" Header=" ">
<dxg:GridColumn x:Name="ColumnChecked" FieldName="IsChecked" Header=" " MinWidth="30"></dxg:GridColumn>
<dxg:GridColumn x:Name="ColumnButtons" AllowEditing="False" MinWidth="90" FieldName="ReportLink" Header=" ">
<dxg:GridColumn.DisplayTemplate>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
@@ -96,7 +97,19 @@
</Grid>
</Grid>
<StackPanel Grid.Row="2" Orientation="Horizontal">
<Button Margin="10 3 0 0"
Name="button_checkAllLeistungen" Click="button_checkAll_Click"
HorizontalAlignment="Left">Alle auswählen</Button>
<Button Margin="10 3 0 0"
Name="button_uncheckAllLeistungen" Click="button_uncheckAll_Click"
HorizontalAlignment="Left">Alle abwählen</Button>
<Button Margin="10 3 0 0"
Name="button_aufklappenAllLeistungen" Click="button_printInvoices_Click"
HorizontalAlignment="Left">Alle ausgewählten Rechnungen drucken</Button>
</StackPanel>
</Grid>
</GroupBox>
</Grid>

View File

@@ -371,6 +371,77 @@ namespace BeWo.View.Detail.Accounting
//var data = srGridControl.rowhan
}
private void button_checkAll_Click(object sender, RoutedEventArgs e)
{
var visible = GetVisibleVMs();
foreach (var item in visible)
{
item.IsChecked = true;
}
}
private void button_uncheckAll_Click(object sender, RoutedEventArgs e)
{
var visible = GetVisibleVMs();
foreach (var item in visible)
{
item.IsChecked = false;
}
}
private void button_printInvoices_Click(object sender, RoutedEventArgs e)
{
var list = new List<InvoiceBaseVM>();
var items = datagrid_invoices.ItemsSource as IList<InvoiceBaseVM>;
if (items != null)
{
for (int i = 0; i < items.Count; i++)
{
var vm = datagrid_invoices.GetRow(i) as InvoiceBaseVM;
if (vm != null && vm.IsChecked)
{
list.Add(vm);
}
}
}
PrintInvoices(list);
}
private void PrintInvoices(List<InvoiceBaseVM> list)
{
var oidList = list.Select(i => i.DataContract.InvoiceBaseOid.Value).ToList();
ServiceFacade.DoReportServiceAsync(s => s.CreateInvoiceListReport(oidList), ms => BeWoApp.MainControl.Dispatch(() => BeWoUtils.ShowReportWindow(ms, "Rechnungen")));
}
private IList<InvoiceBaseVM> GetVisibleVMs()
{
var list = new List<InvoiceBaseVM>();
var items = datagrid_invoices.ItemsSource as IList<InvoiceBaseVM>;
if (items != null)
{
for (int i = 0; i < items.Count; i++)
{
if (datagrid_invoices.IsRowVisible(i))
{
var vm = datagrid_invoices.GetRow(i) as InvoiceBaseVM;
if (vm != null)
{
list.Add(vm);
}
}
}
}
return list;
}
}
}

View File

@@ -185,7 +185,9 @@
</dxg:GridColumn>
<dxg:GridColumn AllowEditing="False" FieldName="Employee.SimpleDescription" Header="{markup:Translate Betreuer(in)}" Width="150" SortOrder="Ascending"/>
<dxg:GridColumn x:Name="gridcolumn_employeerole" FieldName="Role" Header="Rolle" Width="200" />
<dxg:GridColumn FieldName="Notice" Header="Erläuterung" Width="250" />
<dxg:GridColumn FieldName="StartDate" Header="{markup:Translate Startdatum}" Width="200" />
<dxg:GridColumn FieldName="EndDate" Header="{markup:Translate Enddatum}" Width="200" />
<dxg:GridColumn FieldName="Notice" Header="Erläuterung" Width="250" />
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AutoWidth="true" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell" RowDoubleClick="TableView_OnRowDoubleClick" />

View File

@@ -74,7 +74,7 @@
<RowDefinition Height="23" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Text="Details" Margin="0 1" Grid.Row="1" Name="Details" VerticalAlignment="Bottom" TextElement.FontSize="16" TextElement.Foreground="{StaticResource TabItemHotTextBrush}" TextElement.FontFamily="Microsoft Sans Serif" />
<Grid Margin="0" Grid.Row="0" Grid.ColumnSpan="2" Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@@ -163,7 +163,8 @@
</Border>
</controls:PopupNonTopmost>
</Grid>
</Grid>
<TextBlock Text="{Binding Path=DetailText}" Margin="0 1" Grid.Row="1" Name="Details" VerticalAlignment="Bottom" TextElement.FontSize="16" TextElement.Foreground="{StaticResource TabItemHotTextBrush}" TextElement.FontFamily="Microsoft Sans Serif" />
</Grid>
</GroupBox.Header>
<dxg:GridControl Name="grid_Arbeitszeiten" Tag="{Binding}" ItemsSource="{Binding Path=ArbeitszeitEintraege.VMList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" CustomColumnSort="GridControl_OnCustomColumnSort">
<dxg:GridControl.Columns>

View File

@@ -10,6 +10,7 @@ using BS.Shared.Extensions;
using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;
using DevExpress.Xpf.Grid;
using System;
namespace BeWo.View
{
@@ -60,8 +61,11 @@ namespace BeWo.View
{
tabcontrol_Arbeitszeit.SelectedIndex = tabcontrol_Arbeitszeit.Items.Count - 1;
}
}
private void ButtonOpenAndAddArbeitszeitClick(object sender, RoutedEventArgs e)
{
ViewModel.AddNewVMToList();

View File

@@ -36,7 +36,15 @@ namespace BeWo.ViewModel
{
}
public override bool IsDirty => base.IsDirty || ArbeitszeitEintraege != null && ArbeitszeitEintraege.IsDirty;
public override bool IsDirty
{
get
{
FirePropertyChanged(nameof(DetailText)); // Hack um die Aktualisierung des Textes zu erzwingen
return base.IsDirty || ArbeitszeitEintraege != null && ArbeitszeitEintraege.IsDirty;
}
}
public CompactCustomerDC Customer
{
@@ -134,6 +142,30 @@ namespace BeWo.ViewModel
}
}
public String DetailText
{
get
{
decimal stunden = 0;
foreach (var ae in ArbeitszeitEintraege.VMList)
{
String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", DateTime.Now, ae.UhrzeitVon);
String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", DateTime.Now, ae.UhrzeitBis);
DateTime date1;
DateTime date2;
if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
{
stunden += (decimal)date2.Subtract(date1).TotalHours;
}
}
return String.Format("Gesamtstunden: {0:0.00}", stunden);
}
}
public ArbeitszeitEintragListVM ArbeitszeitEintraege
{
get => _ArbeitszeitEintraege;

View File

@@ -3,6 +3,7 @@
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using System;
namespace BeWo.ViewModel
{
@@ -22,6 +23,10 @@ namespace BeWo.ViewModel
public static string PropertyName_Chatpartner = "Chatpartner";
public static string PropertyName_StartDate = "StartDate";
public static string PropertyName_EndDate = "EndDate";
private CompactCustomerDC _Customer;
private CompactEmployeeDC _Employee;
@@ -32,6 +37,10 @@ namespace BeWo.ViewModel
private bool _Chatpartner;
private DateTime? _StartDate;
private DateTime? _EndDate;
public CustomerEmployeeRelationVM(CustomerEmployeeRelationDC pDC) : base(pDC, pDC.Employee2CustomerOid == null)
{
}
@@ -113,6 +122,34 @@ namespace BeWo.ViewModel
}
}
public DateTime? StartDate
{
get { return _StartDate; }
set
{
if (this.AreDifferent(this._StartDate, value))
{
_StartDate = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.StartDate, value), PropertyName_StartDate);
this.FirePropertyChanged(PropertyName_StartDate);
}
}
}
public DateTime? EndDate
{
get { return _EndDate; }
set
{
if (this.AreDifferent(this._EndDate, value))
{
_EndDate = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.EndDate, value), PropertyName_EndDate);
this.FirePropertyChanged(PropertyName_EndDate);
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public ValueListEntryDC Role
{
@@ -138,6 +175,8 @@ namespace BeWo.ViewModel
this._Role = pDataContract.RelationRole;
this._Notice = pDataContract.Notice;
_Chatpartner = pDataContract.Chatpartner;
_StartDate = pDataContract.StartDate;
_EndDate = pDataContract.EndDate;
}
}
@@ -148,6 +187,8 @@ namespace BeWo.ViewModel
pDataContract.RelationRole = this._Role;
pDataContract.Notice = this._Notice;
pDataContract.Chatpartner = _Chatpartner;
pDataContract.StartDate = _StartDate;
pDataContract.EndDate = _EndDate;
return pDataContract;
}

View File

@@ -128,6 +128,8 @@ namespace BeWo.ViewModel
private string _InvoiceTitle = string.Empty;
internal bool _IsPaid;
internal bool _IsChecked;
private string _Notice = string.Empty;
private long? _RecipientCostBearerOid;
@@ -185,6 +187,20 @@ namespace BeWo.ViewModel
#region Properties
public bool IsChecked
{
get { return _IsChecked; }
set
{
if (AreDifferent(_IsChecked, value))
{
_IsChecked = value;
FirePropertyChanged("IsChecked");
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public DateTime? AccountingPeriodEnd
{

View File

@@ -1702,12 +1702,9 @@ namespace BeWo.ViewModel.ListViewModel
if (BeWoApp.AppSettings.FilterGroupServiceCategories)
{
var serviceAccountings = ErstelleServiceCategorySchnittmenge(allInfos);
PrototypeVM.UpdateServiceAccountings(serviceAccountings, _Category2Services, false);
PrototypeVM.UpdateServiceAccountings(serviceAccountings, _Category2Services, true);
}
}
}
@@ -1759,11 +1756,15 @@ namespace BeWo.ViewModel.ListViewModel
{
if (info.ServiceAccountings != null && info.ServiceAccountings.Count == 0 && _Category2Services != null)
{
foreach (var descList in _Category2Services.Values)
foreach (var cat in _Category2Services.Keys)
{
foreach (var desc in descList)
if (cat.OhneHilfeplan.HasValue && cat.OhneHilfeplan.Value != AccountingvisibilityType.NichtKlientenbezogen)
{
info.ServiceAccountings.Add(new ServiceAccountingDC { ServiceDescription = desc });
var descList = _Category2Services[cat];
foreach (var desc in descList)
{
info.ServiceAccountings.Add(new ServiceAccountingDC { ServiceDescription = desc });
}
}
}
}

View File

@@ -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>

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using BS.Shared;
@@ -144,5 +145,9 @@ namespace BeWo.Data.Entities
}
}
}
public virtual DateTime? StartDate { get; set; }
public virtual DateTime? EndDate { get; set; }
}
}

View File

@@ -414,6 +414,8 @@ namespace BeWo.Data.Entities
public virtual bool IsMedicationAllowed { get; set; }
public virtual string LastModules { get; set; }
public virtual string Apikey
{
get

View File

@@ -18,6 +18,8 @@
<property column="EmployeeOid" type="Int64" name="EmployeeOid" update="false" insert="false" />
<property column="CustomerOid" type="Int64" name="CustomerOid" update="false" insert="false" />
<property column="Chatpartner" name="Chatpartner" />
<property name="StartDate" />
<property name="EndDate" />
<many-to-one name="Employee" column="EmployeeOid" class="BeWo.Data.Entities.Employee,BeWo.Data" cascade="none" />
<many-to-one name="Customer" column="CustomerOid" class="BeWo.Data.Entities.Customer,BeWo.Data" cascade="none" />

View File

@@ -25,7 +25,9 @@
<property column="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" name="SystemEntryID" />
<property name="IsSchedulerAllowed" />
<property name="IsMedicationAllowed" />
<property column="ApiKey" type="String" name="Apikey" length="256" />
<property name="LastModules" />
<property column="ApiKey" type="String" name="Apikey" length="256" />
</class>
</hibernate-mapping>

View File

@@ -953,3 +953,9 @@ ADD COLUMN `LicenseType` VARCHAR(128) NULL DEFAULT NULL;
ALTER TABLE `invoicebase`
ADD COLUMN `StornoInvoiceBaseOid` BIGINT NULL DEFAULT NULL;
ALTER TABLE `Employee2Customer` ADD COLUMN `StartDate` datetime NULL;
ALTER TABLE `Employee2Customer` ADD COLUMN `EndDate` datetime NULL;
ALTER TABLE `Mandator` ADD COLUMN `LastModules` MEDIUMTEXT NULL;

View File

@@ -802,7 +802,7 @@ namespace BeWo.Report.ReportObjects
return null;
}
private bool HatArbeitszeitImZeitraum(IList<Arbeitszeit> arbeitszeiten, DateTime start, DateTime ende)
protected bool HatArbeitszeitImZeitraum(IList<Arbeitszeit> arbeitszeiten, DateTime start, DateTime ende)
{
if (arbeitszeiten != null)
{
@@ -842,7 +842,7 @@ namespace BeWo.Report.ReportObjects
return soll;
}
private decimal GetArbeitszeitStundenFuerTag(Arbeitszeit az, DateTime tag)
protected decimal GetArbeitszeitStundenFuerTag(Arbeitszeit az, DateTime tag)
{
var day = tag.DayOfWeek;
decimal stunden = 0;

View File

@@ -14,6 +14,8 @@ namespace AkggMid
public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
{
private CustomVacationService customVacationService = new CustomVacationService();
bool istSchulassi = false;
bool angemeldeterUserDarfAllesSehen = true; // Schulassistenzen dürfen den Stand Ende August nicht sehen
public override List<DateTime> GetFeiertage(int year)
{
@@ -25,20 +27,51 @@ namespace AkggMid
public bool BerechneFerienTage { get; set; }
protected override void StarteBerechnung(DateTime berichtsAnfang, DateTime berichtsEnde, MitarbeiterstundenkontoRO.EmployeeDetail empDetail)
public override void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro)
{
base.CreateEmployeeDetails(ro);
foreach (var ep in ro.EmployeeDetailList)
{
if (istSchulassi && ro.ReportStartDate < new DateTime(2023, 9, 1))
{
ep.StundenSollMax = 0;
ep.StundenSollOhneUrlaubKrankheit = 0;
ep.UrlaubUndKrankheit = 0;
ep.FlsSoll = 0;
ep.FlsIst = 0;
ep.FlsDiff = 0;
ep.StundenGesamtIst = 0;
ep.RelationFlsZuMittelbar = 0;
ep.Ueberstunden = 0;
ep.UeberstundenVormonat = 0;
ep.UeberstundenGesamt = 0;
}
}
}
protected override void StarteBerechnung(DateTime berichtsAnfang, DateTime berichtsEnde, MitarbeiterstundenkontoRO.EmployeeDetail empDetail)
{
BerechneFerienTage = false;
istSchulassi = false;
var c = empDetail.Employee.GetValidContractForDate(berichtsAnfang);
if (c != null && c.EmploymentType != null && berichtsAnfang < new DateTime(2023, 9, 4))
{
//if (c != null && c.EmploymentType != null && berichtsAnfang < new DateTime(2023, 9, 4))
if (c != null && c.EmploymentType != null)
{
//if (c.EmploymentType.Name.Contains("Verwaltung") || c.EmploymentType.Name.Contains("Teamleitung"))
// {
// BerechneFerienTage = false;
// }
if (c.EmploymentType.Name == "Schulassistenz")
{
istSchulassi = true;
BerechneFerienTage = true;
if (BeWo.Data.Security.UserRightHelper.LoggedInUserHasRight(BS.Shared.UserRightType.Mitarbeiterstundenkonto_ViewAll))
{
istSchulassi = false;
}
}
}
@@ -88,5 +121,44 @@ namespace AkggMid
return dd;
}
public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList<ServiceRecord> records, DateTime monat, out decimal? ueberstunden, out decimal alteExtraUeberstunden)
{
DateTime stichTag = new DateTime(2023, 9, 1);
// if (monat.Year > 2022)
// {
// stichTag = new DateTime(2023, 1, 1);
// }
// if (monat.Year == 2020)
// {
// stichTag = new DateTime(2020, 1, 1);
// }
if (monat >= stichTag)
{
decimal? ueberstundenBisStichtag = 0;
decimal ueberstundenExtraBisStichtag = 0;
base.BerechneUeberstundenBis(edOrig, records, stichTag, out ueberstundenBisStichtag, out ueberstundenExtraBisStichtag);
var ed = base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden);
ueberstunden -= (ueberstundenBisStichtag ?? 0);
alteExtraUeberstunden -= ueberstundenExtraBisStichtag;
return ed;
}
return base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden);
// var ed = base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden);
//if (istSchulassi && monat < stichTag)
// {
// ueberstunden = 0;
// alteExtraUeberstunden = 0;
// }
//return ed;
}
}
}

View File

@@ -32,6 +32,9 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Mvvm.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<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" />

View File

@@ -70,6 +70,12 @@
<DependentUpon>CustomerDataReport.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Quittierungsbeleg.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Quittierungsbeleg.Designer.cs">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<Folder Include="UI\" />
@@ -98,6 +104,9 @@
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Quittierungsbeleg.resx">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,70 @@
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 Quittierungsbeleg : XtraReport, IBeWoReport<ServicesOverviewRO>
{
private Dictionary<string, Dictionary<String, bool>> key2TagesDict = new Dictionary<string, Dictionary<String, bool>>();
public Quittierungsbeleg()
{
InitializeComponent();
}
public void SetReportDataSource(ServicesOverviewRO pRO)
{
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
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")
{
sr.Notice = String.Format("{0:0}", sr.Minutes);
}
sr.ServiceDescription = "";
}
}
bindingSource1.DataSource = pRO;
}
}
}

View File

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

View File

@@ -589,8 +589,8 @@ namespace LebenshilfeFrankfurtOder
else
{
#if DEBUG
//reallyNewInvoices = invoices;
reallyNewInvoices = GetNewInvoices(invoices, start, start.AddMonths(1).AddTicks(-1));
reallyNewInvoices = invoices;
//reallyNewInvoices = GetNewInvoices(invoices, start, start.AddMonths(1).AddTicks(-1));
#else
reallyNewInvoices = GetNewInvoices(invoices, start, start.AddMonths(1).AddTicks(-1));
#endif

View File

@@ -44,7 +44,15 @@ namespace LebenshilfeFrankfurtOder.Invoicing
var invoiceCounter = 0;
//var sortedScs = supportConcepts2ServiceRecords.Keys.OrderBy(s => !String.IsNullOrEmpty(s.Customer.DebitorNumber) ? s.Customer.DebitorNumber : "zzzzz").ToList();
var sortedScs = supportConcepts2ServiceRecords.Keys.OrderBy(s => s.Customer.LastNameFirstName).ToList();
var sortedScs = supportConcepts2ServiceRecords.Keys.OrderBy(s =>
{
String name = s.Customer.LastNameFirstName;
if (s.CostBearerList.Count > 0)
{
name = String.Format("{0} {1}", s.CostBearerList[0].OrganisationName, name);
}
return name;
}).ToList();
foreach (var sc in sortedScs)

View File

@@ -4,6 +4,7 @@ using System.Linq;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using BS.Shared;
using BS.Shared.DataContracts;
namespace SHKServiceSBD
{
@@ -11,11 +12,17 @@ namespace SHKServiceSBD
{
protected override void StarteBerechnung(DateTime berichtsAnfang, DateTime berichtsEnde, MitarbeiterstundenkontoRO.EmployeeDetail empDetail)
{
SetzeBundesland(empDetail);
BerechneKindGesamtSollZeit(empDetail, berichtsAnfang, berichtsEnde);
BerechneSollZeiten(empDetail, berichtsAnfang, berichtsEnde);
}
private void SetzeBundesland(MitarbeiterstundenkontoRO.EmployeeDetail empDetail)
{
string bundesland = "hessen";
decimal bewilligteStunden = 0;
//Ermittle Bundesland und geplante Sollzeit anhand der Schule des betreuten Kindes;
foreach (var e2c in empDetail.Employee.Employee2CustomerList)
{
@@ -39,14 +46,83 @@ namespace SHKServiceSBD
}
}
}
}
}
this.vacationService.Bundesland = bundesland;
}
private void BerechneSollZeiten(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, DateTime berichtsAnfang, DateTime berichtsEnde)
{
//Ermittle hier folgendes und speicher es in Custom2:
//Abesenheit "MA krank in der Schulzeit":
//Wenn ein Kind zugeordnet ist, dann wird die Zeit von dem entsprechenden Tag aus der Betreuungszeit genommen und bei Krank eingetragen
//Wenn ein die Ma der Martinschule zugeordnet sind, dann wird die Zeit genommen, die in der Organisation Martinschule hinterlegt ist und bei Krank eingetragen
//Wenn kein Kind zugeordnet ist, dann Vertragliche Arbeitszeit, und bei Krank eingetragen
//Prüfe Team Martinsschule
foreach (var e2c in empDetail.Employee.Employee2CustomerList)
{
var kind = e2c.Customer;
BerechneKindSollZeit(empDetail, kind, berichtsAnfang, berichtsEnde);
}
}
private void BerechneKindGesamtSollZeit(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, DateTime berichtsAnfang, DateTime berichtsEnde)
{
foreach (var e2c in empDetail.Employee.Employee2CustomerList)
{
var kind = e2c.Customer;
BerechneKindSollZeit(empDetail, kind, berichtsAnfang, berichtsEnde);
}
}
private void BerechneKindSollZeit(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Customer kind, DateTime start, DateTime ende)
{
decimal soll = 0;
if (kind.Arbeitszeiten != null && kind.Arbeitszeiten.Count > 0)
{
foreach (var az in kind.Arbeitszeiten)
{
if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= ende) &&
(!az.GueltigBis.HasValue || az.GueltigBis.Value >= start))
{
foreach (var ae in az.ArbeitszeitEintraege)
{
if (ae.Employee == null || ae.Employee.Oid == empDetail.Employee.Oid)
{
String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", DateTime.Now, ae.UhrzeitVon);
String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", DateTime.Now, ae.UhrzeitBis);
DateTime date1;
DateTime date2;
if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
{
soll += (decimal)date2.Subtract(date1).TotalHours;
}
}
}
}
}
}
empDetail.Custom1 += soll;
}
public virtual bool IstSchule(String name)
{
if (!String.IsNullOrEmpty(name))
@@ -186,7 +262,7 @@ namespace SHKServiceSBD
{
if (IstAnrechenbareAbsenceTime(at))
{
dd.MinutesTotal = ed.SollProTag * 60;
if (IsKrankheitAbsenceTime(at))
{
dd.HoursSick = ed.SollProTag;
@@ -195,6 +271,10 @@ namespace SHKServiceSBD
{
dd.HoursInVacation = ed.SollProTag;
}
else
{
dd.MinutesTotal = ed.SollProTag * 60;
}
}
else
{
@@ -202,28 +282,45 @@ namespace SHKServiceSBD
}
}
}
if (dd.Feiertag == null)
{
var ft = GetFerienTag(dd.Date);
if (ft != null)
{
dd.Feiertag = new FeiertagDC();
dd.Feiertag.Datum = dd.Date;
dd.Feiertag.Name = ft.Name;
}
}
if (dd.IstFeiertag && dd.Date.DayOfWeek != DayOfWeek.Saturday && dd.Date.DayOfWeek != DayOfWeek.Sunday)
{
dd.MinutesTotal = ed.SollProTag * 60;
}
}
return list;
}
public override bool IstAnrechenbareAbsenceTime(AbsenceTime item)
{
if (item.AbsenceReason.Description.ToLower().IndexOf("ohne lohnfortzahlung") >= 0)
if ((item.AbsenceReason.Description.ToLower().IndexOf("ohne lohnfortzahlung") >= 0) || (item.AbsenceReason.Description.ToLower().IndexOf("unbezahlter urlaub") >= 0))
{
return false;
}
return base.IstAnrechenbareAbsenceTime(item);
}
public override bool IsKrankheitAbsenceTime(AbsenceTime absenceTime)
public override bool IsKrankheitAbsenceTime(AbsenceTime item)
{
if (absenceTime.AbsenceReason.Description.ToLower().IndexOf("ohne lohnfortzahlung") >= 0)
if ((item.AbsenceReason.Description.ToLower().IndexOf("ohne lohnfortzahlung") >= 0) || (item.AbsenceReason.Description.ToLower().IndexOf("unbezahlter urlaub") >= 0))
{
return false;
}
return base.IsKrankheitAbsenceTime(absenceTime);
return base.IsKrankheitAbsenceTime(item);
}
public override bool SollPauseBerechnen()
{
return true;
@@ -244,5 +341,20 @@ namespace SHKServiceSBD
return dd;
}
public override decimal GetFeiertagsFaktor(DateTime start)
{
if (GetFerienTag(start) != null)
{
return 1;
}
return base.GetFeiertagsFaktor(start);
}
public FerienDC GetFerienTag(DateTime start)
{
return vacationService.GetFerien(start, vacationService.Bundesland);
}
}
}

View File

@@ -86,6 +86,7 @@ namespace SHKServiceSBD
this.xrTableCell34 = new DevExpress.XtraReports.UI.XRTableCell();
this.cellSumHoursSickDecimal = new DevExpress.XtraReports.UI.XRTableCell();
this.cellSumHoursInVacationDecimal = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell32 = 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();
@@ -107,7 +108,6 @@ namespace SHKServiceSBD
this.xrTableCell57 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell58 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell26 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.Title = new DevExpress.XtraReports.UI.XRControlStyle();
this.FieldCaption = new DevExpress.XtraReports.UI.XRControlStyle();
this.PageInfo = new DevExpress.XtraReports.UI.XRControlStyle();
@@ -126,7 +126,7 @@ namespace SHKServiceSBD
this.fieldIstArbeitszeit = new DevExpress.XtraReports.UI.CalculatedField();
this.fieldUeberstundenGesamt = new DevExpress.XtraReports.UI.CalculatedField();
this.fieldPause = new DevExpress.XtraReports.UI.CalculatedField();
this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
@@ -530,10 +530,9 @@ namespace SHKServiceSBD
// xrTableCell14
//
this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Custom1")});
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.Custom1", "{0:0.00}")});
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.StylePriority.UseTextAlignment = false;
this.xrTableCell14.Text = "xrTableCell14";
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell14.Weight = 0.086403766181918723D;
//
@@ -693,6 +692,13 @@ namespace SHKServiceSBD
this.cellSumHoursInVacationDecimal.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.cellSumHoursInVacationDecimal.Weight = 0.067627767935509717D;
//
// xrTableCell32
//
this.xrTableCell32.Name = "xrTableCell32";
this.xrTableCell32.StylePriority.UseTextAlignment = false;
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell32.Weight = 0.0676277692731897D;
//
// xrTable1
//
this.xrTable1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
@@ -952,10 +958,6 @@ namespace SHKServiceSBD
this.xrTableCell26.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell26.Weight = 0.11143081848591821D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO);
//
// Title
//
this.Title.BackColor = System.Drawing.Color.White;
@@ -1092,12 +1094,9 @@ namespace SHKServiceSBD
this.fieldPause.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldPause.Name = "fieldPause";
//
// xrTableCell32
// bindingSource1
//
this.xrTableCell32.Name = "xrTableCell32";
this.xrTableCell32.StylePriority.UseTextAlignment = false;
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell32.Weight = 0.0676277692731897D;
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO);
//
// Mitarbeiterarbeitszeitkonto
//

View File

@@ -59,24 +59,36 @@ namespace SHKServiceSBD
}
klassenLeitung += org.Person.LastName;
}
if (!String.IsNullOrEmpty(org.Person.Communication1))
{
kontaktAnsprechperson = org.Person.Communication1;
}
else if (!String.IsNullOrEmpty(org.Organisation.Communication1))
{
kontaktAnsprechperson = org.Organisation.Communication1;
}
//var o = DAOFactory.GenericDAO.LoadByID<Organisation>(org.Organisation.OrganisationOid);
//sbSchule.Append(o.Notice);
}
}
}
foreach (var item in pRO.Customer.ContactInformations)
{
if (kontaktAnsprechperson.Length > 0)
{
kontaktAnsprechperson += "\n";
}
if (item.ContactType == BS.Shared.ContactType.business_Phone)
{
kontaktAnsprechperson += "Tel: " + item.ContactValue;
}
else if (item.ContactType == BS.Shared.ContactType.business_MobilePhone)
{
kontaktAnsprechperson += "Handy: " + item.ContactValue;
}
}
lblSchule.Text = sbSchule.ToString();
lblKlassenleitung.Text = klassenLeitung;
lblAnsprechperson.Text = kontaktAnsprechperson;
//if (!String.IsNullOrEmpty(klasse) && !klasse.Contains("Klasse"))
//{
// klasse = "Klasse " + klasse;
@@ -130,7 +142,6 @@ namespace SHKServiceSBD
}
lblFesteKraft.Text = kraft;
lblAnsprechperson.Text = "";
String vertretungsregelung = "Vertretung nicht erforderlich";
if (pRO.Customer.SubstitutionNeed == BS.Shared.SubstitutionNeed.SubstitutionNeeded)
@@ -181,9 +192,34 @@ namespace SHKServiceSBD
SetzeToken(pRO.Customer);
SetzeBetreuungsarten(pRO.Customer);
this.bindingSource1.DataSource = pRO;
}
private void SetzeBetreuungsarten(CustomerDC customer)
{
if (customer.CustomerCareTypes != null)
{
foreach (var item in customer.CustomerCareTypes)
{
if (item.DisplayName == "Pause")
{
chkPause.Checked = true;
}
else if (item.DisplayName == "Unterricht")
{
chkUnterricht.Checked = true;
}
else if (item.DisplayName == "Busbegleitung")
{
chkBus.Checked = true;
}
}
}
}
private void SetzeToken(CustomerDC customer)
{
String wunsch = "";

View File

@@ -83,6 +83,7 @@
<DependentUpon>SBDCharacteristicsReport.cs</DependentUpon>
</Compile>
<Compile Include="Service\CustomCustomerService.cs" />
<Compile Include="Service\CustomOperationService.cs" />
<Compile Include="Service\CustomVertretungsManager.cs" />
</ItemGroup>
<ItemGroup>

View File

@@ -0,0 +1,96 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
namespace DomizielAnsbach.Service
{
public class CustomOperationService : OperationService
{
private ServiceDescription leistungSchulbegleitung;
private ServiceDescription leistungWegezeit;
private ServiceDescription leistungSonderzeit;
private ServiceDescription leistungBusbegleitung;
protected override IList<ServiceRecord> CreateServiceRecords(Arbeitszeit arbeitszeit, DateTime datum, CostBearer2SupportConcept c2s, ServiceDescription defaultSd)
{
return base.CreateServiceRecords(arbeitszeit, datum, c2s, defaultSd);
}
public override ServiceRecord CreateServiceRecord(ArbeitszeitEintrag ae, DateTime datum, CostBearer2SupportConcept c2s, ServiceDescription defaultSd)
{
var leistung = GetLeistungSonderzeit();
if (!String.IsNullOrEmpty(ae.Notice))
{
//if (ae.Notice.ToLower().Contains("bus"))
//{
// leistung = GetLeistungBusbegleitung();
//}
//else
if (ae.Notice.StartsWith("Un")) // Unterricht, es gibt leider so viele Tippfehler in der Notice z.B. Unerricht, Unttericht etc. dass ich denke ein Prüfen auf "Un" genügt
{
leistung = GetDefaultServiceDescription();
}
//else if (ae.Notice.Contains("Befö"))
//{
// leistung = GetLeistungWegezeit(); // Beförderung mit allen fantasievollen Schreibweisen.
//}
}
var sr = base.CreateServiceRecord(ae, datum, c2s, leistung);
return sr;
}
public override ServiceDescription GetDefaultServiceDescription(CostBearer2SupportConcept c2s)
{
return GetDefaultServiceDescription();
}
public override ServiceDescription GetDefaultServiceDescription()
{
if (leistungSchulbegleitung == null)
{
leistungSchulbegleitung = DAOFactory.GenericDAO.LoadByID<ServiceDescription>(13);
}
return leistungSchulbegleitung;
}
private ServiceDescription GetLeistungWegezeit()
{
if (leistungWegezeit == null)
{
leistungWegezeit = DAOFactory.GenericDAO.LoadByID<ServiceDescription>(14);
}
return leistungWegezeit;
}
private ServiceDescription GetLeistungSonderzeit()
{
if (leistungSonderzeit == null)
{
leistungSonderzeit = DAOFactory.GenericDAO.LoadByID<ServiceDescription>(15);
}
return leistungSonderzeit;
}
private ServiceDescription GetLeistungBusbegleitung()
{
if (leistungBusbegleitung == null)
{
leistungBusbegleitung = DAOFactory.GenericDAO.LoadByID<ServiceDescription>(17);
}
return leistungBusbegleitung;
}
}
}

View File

@@ -28,7 +28,7 @@ namespace SHKService.Service
var vertretungenOhneBetreuung = vertretungenMartingSchuleUndOhneBetreuung.Where(v => v.EmployeeOid == null).ToList();
//Suche Mitarbeiter des Teams Martinschule. Prüfe ob mehr als 80 Prozent anwesend sind, sonst sollen die auch in Vertretungssuche auftauchen.
var team = DAOFactory.GenericDAO.GetAllActive<Team>().Where(t => t.Name == "Martinschule").FirstOrDefault();
var team = DAOFactory.GenericDAO.GetAllActive<Team>().Where(t => t.Name == "Martinsschule").FirstOrDefault();
if (team != null)
{
var list = new List<CompactVertreterEmployeeDC>();
@@ -100,7 +100,7 @@ namespace SHKService.Service
foreach (var t2c in c.Team2CustomerList)
{
if (t2c.Team.Name == "Martinschule")
if (t2c.Team.Name == "Martinsschule")
{
istInMartinschule = true;
}
@@ -138,6 +138,14 @@ namespace SHKService.Service
newItem.Absencetime.End = item.VertretungsZeitraumBis;
vertretungsListe.Add(newItem);
}
foreach (var item in vertretungsListe)
{
if (item.Employee == null)
{
item.Employee = new CompactEmployeeDC();
item.Employee.LastName = "Ohne Betreuung";
}
}
return vertretungsListe;
}
@@ -153,7 +161,7 @@ namespace SHKService.Service
};
newItem.Customer = new CompactCustomerDC(); // Erstelle Dummy Customer für die Martinschule
newItem.Customer.FirstName = "Martinschule";
newItem.Customer.FirstName = "Martinsschule";
newItem.DringlichkeitColor = "#FF8080";
newItem.Dringlichkeit = "";
@@ -212,6 +220,12 @@ namespace SHKService.Service
var abwesenendeEmployeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
vertretungsItem.Employee != null).Select(item => item.Employee.EmployeeOid);
//var employeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.Employee != null &&
// vertretungsItem.VertretungsStatus == VertretungsStatus.KlientKrank &&
// !ausgewaehlteVertreter.Contains(vertretungsItem.Employee.EmployeeOid)).Select(s => s.Employee.EmployeeOid);
//employeeOids = employeeOids.Where(e => !abwesenendeEmployeeOids.Contains(e));
var team = DAOFactory.GenericDAO.GetAllActive<Team>().Where(t => t.Name == "Vertretungsplanung").FirstOrDefault();
if (team != null)
@@ -232,11 +246,28 @@ namespace SHKService.Service
list.Add(dc);
}
}
//Füge alle Employees zu, deren Kind krank sind
var schonVorhandeneEmps = empsInResult.Select(e => e.Oid.Value).ToList();
var employeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.Employee != null &&
vertretungsItem.VertretungsStatus == VertretungsStatus.KlientKrank && !schonVorhandeneEmps.Contains(vertretungsItem.Employee.EmployeeOid)).Select(s => s.Employee.EmployeeOid).Distinct().ToList();
if (employeeOids.Count > 0)
{
var weitereEmps = DAOFactory.GenericDAO.LoadByIDs<Employee>(employeeOids);
list.AddRange(MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDCs(weitereEmps));
}
if (filter.CustomerOid.HasValue && filter.VerwendeEntfernungssuche)
{
GetDistanceForVertreterEmployees(filter.CustomerOid.Value, ref list, empsInResult);
}
return list;
}
return base.SucheVertreter(filter);

View File

@@ -78,5 +78,9 @@ namespace ReportingService.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
MemoryStream CreateKalenderReportWithAbsenceTimes(IEnumerable<long> appointmentOids, long? employeeOid, IEnumerable<SchedulerAppointmentDC> serientermine, IEnumerable<DateTime> selectedDates, IEnumerable<SchedulerAppointmentDC> mehrtaegigeTermine, List<long> absenceTimeOids);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
MemoryStream CreateInvoiceListReport(List<long> invoiceBaseOids);
}
}

View File

@@ -328,5 +328,10 @@ namespace ReportingService.ServiceImplementations
return report == null ? null : CreateReportStream(report);
}
public MemoryStream CreateInvoiceListReport(List<long> invoiceBaseOids)
{
return null;
}
}
}

View File

@@ -96,7 +96,6 @@ namespace BeWo.Service.Configuration
bool printerSettingsUsePaperKind = false;
if (mandator != null)
{
string val = GetSettingValue(mandator.Settings, "IsServiceRecordNoticeMandatory");

View File

@@ -21,6 +21,8 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.Employee2CustomerVersion = pEntity.Version;
pDataContract.Notice = pEntity.Notice;
pDataContract.Chatpartner = pEntity.Chatpartner;
pDataContract.StartDate = pEntity.StartDate;
pDataContract.EndDate = pEntity.EndDate;
return pDataContract;
}
@@ -44,6 +46,8 @@ namespace BeWo.Service.DCEntityMapper
pEntity.Oid = pDataContract.Employee2CustomerOid;
pEntity.Notice = pDataContract.Notice;
pEntity.Chatpartner = pDataContract.Chatpartner;
pEntity.StartDate = pDataContract.StartDate;
pEntity.EndDate = pDataContract.EndDate;
return pEntity;
}

View File

@@ -34,5 +34,7 @@ namespace BeWo.Service.Invoicing
public decimal ApprovedTotal { get; set; }
public String Notice { get; set; }
}
}

View File

@@ -15,8 +15,12 @@ namespace BeWo.Service.Invoicing
[IDSpecificClass(Identifier = "LWLBeWo67")]
class LWLBeWo67SettlementInvoiceCreation : SettlementInvoiceCreation
{
public override bool CanCreateInvoiceTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
{
return true;
}
public override void CreateInvoiceDetailsTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
public override void CreateInvoiceDetailsTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
{
String id = c2s.CostBearer.ID;
@@ -266,8 +270,6 @@ namespace BeWo.Service.Invoicing
decimal flsTotal = 0;
foreach (var ap in apList)
{
flsTotal += ap.ApprovedTotal;
}
return flsTotal;

View File

@@ -38,6 +38,7 @@ namespace BeWo.Service.Invoicing
fkAp.AmountPerUnit = ap.AmountPerUnit;
fkAp.BillingInterval = ap.BillingInterval;
fkAp.RateFactor = 0;
fkAp.Notice = "Fehlkontakte";
apListFehlkontakt.Add(fkAp);
}
si.ApprovedFLS = CalculateApprovedTotalFLS(apListFLS);
@@ -255,7 +256,7 @@ namespace BeWo.Service.Invoicing
{
rf = approvalPeriod.RateFactor.Value;
}
if (rf == 0)
if (!String.IsNullOrEmpty(approvalPeriod.Notice) && approvalPeriod.Notice == "Fehlkontakte")
{
hr *= 0.8m;
}

View File

@@ -39,7 +39,10 @@ namespace BeWo.Service.Plugins
srList = ErstelleStundenplanEintraege(span.StartDateTime.Date, span.EndDate.Date, c2s, vs);
DAOFactory.GenericDAO.Insert(srList);
if (ReturnMessage.Length > 0)
{
ReturnMessage += "\n";
}
ReturnMessage += String.Format("Es wurden {0} Einträge erstellt.", srList.Count);
}
else

View File

@@ -920,6 +920,18 @@ namespace BeWo.Service.ServiceImplementations
if (fetchContractState)
{
string contractState = GetContractState();
if (!String.IsNullOrEmpty(contractState) && contractState == "Fehler")
{
contractState = man.LastModules;
}
else
{
if (contractState != man.LastModules)
{
man.LastModules = contractState;
DAOFactory.GenericDAO.Update(man);
}
}
Dictionary<string, string> contractStateDict = GetSettingsValueDict(contractState);
foreach (var kv in contractStateDict)
@@ -958,6 +970,11 @@ namespace BeWo.Service.ServiceImplementations
}
}
if (!settingValueDict.ContainsKey("FilterGroupServiceCategories"))
{
settingValueDict.Add("FilterGroupServiceCategories", "0");
}
manDc.Settings = "";
@@ -2843,6 +2860,7 @@ namespace BeWo.Service.ServiceImplementations
tenant = SessionFacade.Tenant;
typ = "&t=1";
}
if (String.IsNullOrEmpty(tenant))
{
return "";
@@ -2884,7 +2902,7 @@ namespace BeWo.Service.ServiceImplementations
}
catch (Exception e)
{
return "Fehler";
}
finally
{

View File

@@ -1,4 +1,5 @@
using System.Runtime.Serialization;
using System;
using System.Runtime.Serialization;
using BS.Shared.DataContracts.Compact;
@@ -28,5 +29,11 @@ namespace BS.Shared.DataContracts
[DataMember]
public bool Chatpartner { get; set; }
[DataMember]
public DateTime? StartDate { get; set; }
[DataMember]
public DateTime? EndDate { get; set; }
}
}