Urbelege Gesendet

This commit is contained in:
2024-09-30 12:03:41 +02:00
parent d92c5097ac
commit 7f19262220
11 changed files with 92 additions and 22 deletions

View File

@@ -22,6 +22,7 @@ namespace BeWo.Converter
{
case GkvState.NoSend: return "Erstellt";
case GkvState.Waiting: return "Gesendet";
case GkvState.Waiting4Urbelege: return "Urbelege per Post";
case GkvState.Error: return "Fehler";
case GkvState.ErrorFatal: return "Fataler Fehler";
case GkvState.Paid: return "Bezahlt";

View File

@@ -6,7 +6,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BeWo.View.Controls"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" xmlns:viewmodel="clr-namespace:BeWo.ViewModel" d:DataContext="{d:DesignInstance Type=viewmodel:GkvAbrechnungVM}"
mc:Ignorable="d">
<Grid>
<Grid.ColumnDefinitions>
@@ -50,10 +50,12 @@
<TextBox Grid.Row="6" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding AbrechnungsZeitraumEnde}"/>
<Label Grid.Row="9" Grid.Column="0" Margin="3" Content="Erstellt am:"/>
<TextBox Grid.Row="9" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding ErstelltAm}"/>
<Label Grid.Row="14" Grid.Column="0" Margin="3" Content="Betrag:"/>
<TextBox Grid.Row="14" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding Betrag, StringFormat={}{0:0.00 €}}"/>
<Label Grid.Row="15" Grid.Column="0" Margin="3" Content="Bezahlt:"/>
<CheckBox Grid.Row="15" Grid.Column="2" Margin="3" HorizontalAlignment="Left" x:Name="Checkbox_Bezahlt" IsChecked="{Binding Bezahlt}"/>
<Label Grid.Row="13" Grid.Column="0" Margin="3" Content="Urbelege Gesendet:"/>
<CheckBox Grid.Row="13" Grid.Column="2" Margin="3" HorizontalAlignment="Left" x:Name="Checkbox_Urbelege" IsChecked="{Binding UrbelegeGesendet}"/>
<Label Grid.Row="14" Grid.Column="0" Margin="3" Content="Bezahlt:"/>
<CheckBox Grid.Row="14" Grid.Column="2" Margin="3" HorizontalAlignment="Left" x:Name="Checkbox_Bezahlt" IsChecked="{Binding Bezahlt}"/>
<Label Grid.Row="15" Grid.Column="0" Margin="3" Content="Betrag:"/>
<TextBox Grid.Row="15" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding Betrag, StringFormat={}{0:0.00 €}}"/>
<!--<TextBox Grid.Row="15" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding Bezahlt}"/>-->
<Label Grid.Row="16" Grid.Column="0" Margin="3" Content="Bemerkung:"/>
<TextBox Grid.Row="16" Grid.Column="2" Margin="3" Text="{Binding Notice}" x:Name="Textbox_Notice" MaxLength="1024" TextWrapping="Wrap" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" AcceptsReturn="True"/>

View File

@@ -102,7 +102,7 @@
DataSource="{Binding VMList}"
Visibility="Collapsed">
<dxg:GridControl.Effect>
<DropShadowEffect Color="#FFC7D9E2"/>
<DropShadowEffect Color="#FFC7D9E2" />
</dxg:GridControl.Effect>
<dxg:GridControl.Columns>
<dxg:GridColumn
@@ -227,6 +227,28 @@
Width="*"
FieldName="Fehlermeldung"
Header="Fehlermeldung" />
<dxg:GridColumn
x:Name="UrbelegeColumn"
Width="Auto"
FieldName="UrbelegeGesendet"
Header="Urbelege gesendet">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dxe:CheckEdit Name="PART_Editor" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn
x:Name="PaidColumn"
Width="Auto"
FieldName="Bezahlt"
Header="Bezahlt">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dxe:CheckEdit Name="PART_Editor" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn
AllowEditing="False"
FieldName="Betrag"
@@ -240,11 +262,6 @@
MaskType="Numeric" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn
x:Name="PaidColumn"
Width="Auto"
FieldName="Bezahlt"
Header="Bezahlt" />
<dxg:GridColumn
Width="3*"
MinWidth="200"
@@ -263,13 +280,12 @@
AllowBestFit="True"
BestFitMode="Smart"
CellValueChanged="gridView_CellValueChanged_1"
CellValueChanging="gridView_CellValueChanged"
CellValueChanging="gridView_CellValueChanging"
CustomRowAppearance="TableView_OnCustomRowAppearance"
Loaded="gridView_Loaded"
NavigationStyle="Cell"
RowMinHeight="24"
ScrollingMode="Smart"
ShowGroupPanel="False"
ShownEditor="gridView_ShownEditor"
SnapsToDevicePixels="True" />
</dxg:GridControl.View>

View File

@@ -310,14 +310,24 @@ namespace BeWo.View.Detail.Accounting
((TextEdit)gridView.ActiveEditor).SetPropertyValue("MaxLength", tag);
}
}
private void gridView_CellValueChanged(object sender, CellValueChangedEventArgs e)
private void gridView_CellValueChanging(object sender, CellValueChangedEventArgs e)
{
if (e.Column != null && e.Column.FieldName == "Bezahlt")
if (e.Column is null)
return;
if (e.Column.FieldName == nameof(GkvAbrechnungVM.Bezahlt))
{
if (e.Value is bool b && e.Row is GkvAbrechnungVM vm)
{
SaveBezahltChange(vm, b);
}
}
else if (e.Column.FieldName == nameof(GkvAbrechnungVM.UrbelegeGesendet))
{
if (e.Value is bool b && e.Row is GkvAbrechnungVM vm)
{
SaveUrbelegeGesendetChange(vm, b);
}
}
}
private void TableView_OnCustomRowAppearance(object sender, CustomRowAppearanceEventArgs e)
@@ -334,6 +344,11 @@ namespace BeWo.View.Detail.Accounting
e.Result = Brushes.Orange;
e.Handled = true;
}
else if (GkvAbrechnungVM.GetState(gkvAbrechnungVM) == GkvState.Waiting4Urbelege)
{
e.Result = Brushes.Green;
e.Handled = true;
}
}
}
@@ -348,10 +363,33 @@ namespace BeWo.View.Detail.Accounting
dc_in.Bezahlt = b;
var dc = ServiceFacade.DoAccountingServiceSync(x => x.UpdateGkvAbrechnung(dc_in));
ServiceFacade.DoAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), cb =>
{
Dispatcher.Invoke(() => {
vm.GkvAbrechnungVersion = cb.GkvAbrechnungVersion;
vm.Bezahlt = cb.Bezahlt;
});
}, false);
}
vm.GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
vm.Bezahlt = dc.Bezahlt;
private void SaveUrbelegeGesendetChange(GkvAbrechnungVM vm, bool b)
{
var dc_in = vm.CommitToDataContract();
dc_in.UrbelegeGesendet = b;
ServiceFacade.DoAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), cb =>
{
Dispatcher.Invoke(() => {
vm.GkvAbrechnungVersion = cb.GkvAbrechnungVersion;
vm.UrbelegeGesendet = cb.UrbelegeGesendet;
});
}, false);
//var dc = ServiceFacade.DoAccountingServiceSync(x => x.UpdateGkvAbrechnung(dc_in));
//vm.GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
//vm.UrbelegeGesendet = dc.UrbelegeGesendet;
}
private void SaveNoticeChange(GkvAbrechnungVM vm, string notice)
@@ -372,5 +410,5 @@ namespace BeWo.View.Detail.Accounting
}
}
}
}
}
}

View File

@@ -27,10 +27,9 @@ namespace BeWo.View.Master
InitRights();
#if DEBUG
if(DebugConfig.CurrentConfig is DebugConfig config && config.DebugConfigMode == DebugConfigMode.FeatureDakota)
if(DebugConfig.CurrentConfig is DebugConfig config && config.SelectView == UIContext.Finance)
{
tabitem_gkvabrechnung.Visibility = Visibility.Visible;
root.SelectedItem = tabitem_gkvabrechnung;
root.SelectedIndex = config.SelectIndex ?? 0;
}
#endif
}

View File

@@ -19,6 +19,7 @@ namespace BeWo.Data.Entities
public virtual DateTime? AbrechnungsZeitraumEnde { get; set; }
public virtual decimal Betrag { get; set; }
public virtual bool Bezahlt { get; set; }
public virtual bool UrbelegeGesendet { get; set; }
public virtual IList<InvoiceBase> InvoiceBases { get; set; }
public virtual IList<GkvTransferProtokoll> GkvTransferProtokolle { get; set; }
@@ -27,6 +28,7 @@ namespace BeWo.Data.Entities
GkvAbrechnungExtensions.GetState(
entity,
() => entity.Bezahlt,
() => entity.UrbelegeGesendet,
() => entity.GkvTransferProtokolle,
(x) => x.Fehlerdatum,
(x) => x.Fehlerlevel,

View File

@@ -20,6 +20,7 @@
<property column="Betrag" type="decimal" name="Betrag" />
<property column="Bezahlt" type="bool" name="Bezahlt" />
<property column="UrbelegeGesendet" type="bool" name="UrbelegeGesendet" />
<property column="ErstelltAm" type="DateTime" name="ErstelltAm" />

View File

@@ -0,0 +1,2 @@
ALTER TABLE `gkvabrechnung`
ADD COLUMN `UrbelegeGesendet` TINYINT NULL DEFAULT NULL AFTER `Bezahlt`;

View File

@@ -28,6 +28,7 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.Betrag = pEntity.Betrag;
pDataContract.Bezahlt = pEntity.Bezahlt;
pDataContract.UrbelegeGesendet = pEntity.UrbelegeGesendet;
pDataContract.ErstelltAm = pEntity.ErstelltAm;
pDataContract.InvoiceBases = MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewDCs(pEntity.InvoiceBases);
@@ -52,6 +53,7 @@ namespace BeWo.Service.DCEntityMapper
pEntity.Betrag = pDataContract.Betrag;
pEntity.Bezahlt = pDataContract.Bezahlt;
pEntity.UrbelegeGesendet = pDataContract.UrbelegeGesendet;
pEntity.ErstelltAm = pDataContract.ErstelltAm;

View File

@@ -29,6 +29,9 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
[DataMember]
public bool Bezahlt { get; set; }
[DataMember]
public bool UrbelegeGesendet { get; set; }
[DataMember]
public DateTime ErstelltAm { get; set; }

View File

@@ -12,6 +12,7 @@ namespace BS.Shared.Extensions
public static GkvState GetState(this GkvAbrechnungDC gkvAbrechnungDC) => GetState(
gkvAbrechnungDC,
() => gkvAbrechnungDC.Bezahlt,
() => gkvAbrechnungDC.UrbelegeGesendet,
() => gkvAbrechnungDC.TransferProtokolle,
(x) => x.Fehlerdatum,
(x) => x.Fehlerlevel,
@@ -20,6 +21,7 @@ namespace BS.Shared.Extensions
public static GkvState GetState<T2>(
object gkvAbrechnung,
Func<bool> bezahlt,
Func<bool> urbelege,
Func<IList<T2>> protokoll,
Func<T2, DateTime?> fehlerdatum,
Func<T2, GkvTransferFehlerlevel> fehlerlevel,
@@ -45,6 +47,8 @@ namespace BS.Shared.Extensions
}
// Kein Fehler
if (!urbelege())
return GkvState.Waiting4Urbelege;
if (DateTime.Now - created(last_transfer) > TimeSpan.FromDays(28))
{