Merge branch 'feature_rene_13_dakota' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -984,6 +984,7 @@
|
||||
<Compile Include="Converter\BoolVisibilityMultiConverter.cs" />
|
||||
<Compile Include="Converter\NullableBoolToBoolConverter.cs" />
|
||||
<Compile Include="Converter\Object2ToStringConverter.cs" />
|
||||
<Compile Include="Converter\RadioBoolToIntConverter.cs" />
|
||||
<Compile Include="Converter\TestDebugConverter.cs" />
|
||||
<Compile Include="Converter\ParticipationBrushConverter.cs" />
|
||||
<Compile Include="Converter\ArchiveRight2VisibilityConverter.cs" />
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<ErrorReportUrlHistory />
|
||||
<FallbackCulture>de-DE</FallbackCulture>
|
||||
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||
<ProjectView>ShowAllFiles</ProjectView>
|
||||
<ProjectView>ProjectFiles</ProjectView>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<EnableSecurityDebugging>false</EnableSecurityDebugging>
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
<conv:DeleteForGoodRight2VisibilityConverter x:Key="DeleteForGoodRight2VisibilityConverter" />
|
||||
<conv:AnonymizationRight2VisibilityConverter x:Key="AnonymizationRight2VisibilityConverter" />
|
||||
<conv:GkvState2StringConverter x:Key="GkvState2StringConverter" />
|
||||
<conv:RadioBoolToIntConverter x:Key="RadioBoolToIntConverter" />
|
||||
<conv:EnumTranslationConverter x:Key="EnumTranslationConverter" />
|
||||
|
||||
<Style x:Key="SupportConceptDetailStyle" TargetType="{x:Type ListBoxItem}">
|
||||
|
||||
@@ -19,12 +19,18 @@ namespace BeWo.Converter
|
||||
{
|
||||
return v;
|
||||
}
|
||||
// RE:
|
||||
// EnumTranslationConverter, aber betrachtet nicht alle?
|
||||
// Brauche hier eig nur EnumTranslations.Gkv2Translation
|
||||
if (EnumTranslations.AllTranslations.TryGetValue(e, out string vv))
|
||||
{
|
||||
return vv;
|
||||
}
|
||||
|
||||
return e;
|
||||
}
|
||||
|
||||
return null;
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
|
||||
@@ -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";
|
||||
|
||||
23
BeWo/Converter/RadioBoolToIntConverter.cs
Normal file
23
BeWo/Converter/RadioBoolToIntConverter.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace BeWo.Converter
|
||||
{
|
||||
public class RadioBoolToIntConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return value?.Equals(int.Parse(parameter.ToString()));
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return value?.Equals(true) == true ? int.Parse(parameter.ToString()) : Binding.DoNothing;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,8 @@ namespace BeWo
|
||||
SimpleAutoLogin,
|
||||
FeatureCustomerWohnhilfe,
|
||||
FeatureWohnheimWohneinheit,
|
||||
FeatureAuswertungenQuittierungsbelege
|
||||
FeatureAuswertungenQuittierungsbelege,
|
||||
FeatureDakota
|
||||
}
|
||||
|
||||
public class DebugConfig
|
||||
@@ -77,5 +78,13 @@ namespace BeWo
|
||||
AutoLogin = true,
|
||||
SelectView = UIContext.Report
|
||||
};
|
||||
|
||||
public static DebugConfig Feature_Dakota => new DebugConfig()
|
||||
{
|
||||
DebugConfigMode = DebugConfigMode.FeatureDakota,
|
||||
AutoLogin = true,
|
||||
SelectView = UIContext.Finance,
|
||||
SelectIndex = 8
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace BeWo
|
||||
//proxy anmeldedaten
|
||||
public string proxyname;
|
||||
public string proxyUsername;
|
||||
public string proxypasswd;
|
||||
public string proxypasswd;
|
||||
|
||||
private List<BeWoProfile> _ProfileList;
|
||||
public List<BeWoProfile> ProfileList
|
||||
@@ -69,7 +69,7 @@ namespace BeWo
|
||||
get { return _ProfileList; }
|
||||
set { _ProfileList = value; }
|
||||
}
|
||||
|
||||
|
||||
public LoginControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -77,24 +77,24 @@ namespace BeWo
|
||||
DateTime dt = new DateTime(2017, 1, 1);
|
||||
if (DateTime.Now > dt)
|
||||
dt = DateTime.Now;
|
||||
|
||||
|
||||
txtCopyright.Text = String.Format("Copyright {0:yyyy} | ownSoft GmbH", dt);
|
||||
|
||||
|
||||
var checkPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\profiles.txt";
|
||||
if (File.Exists(checkPath))
|
||||
{
|
||||
//Nimm lokalen Profilpfad wenn er existiert. Wird z.B. bei Kunden mit Citrix Server genutzt, die keine Clickonce Installation vornehmen
|
||||
_ProfilesFilePath = checkPath;
|
||||
}
|
||||
else
|
||||
{
|
||||
_ProfilesFilePath = Path.Combine(BeWoApp.GetAndCreateUserAppDataPath(), "profiles.txt");
|
||||
}
|
||||
if (File.Exists(checkPath))
|
||||
{
|
||||
//Nimm lokalen Profilpfad wenn er existiert. Wird z.B. bei Kunden mit Citrix Server genutzt, die keine Clickonce Installation vornehmen
|
||||
_ProfilesFilePath = checkPath;
|
||||
}
|
||||
else
|
||||
{
|
||||
_ProfilesFilePath = Path.Combine(BeWoApp.GetAndCreateUserAppDataPath(), "profiles.txt");
|
||||
}
|
||||
|
||||
_ConfigFilePath = Path.Combine(BeWoApp.GetAndCreateUserAppDataPath(), "bwp.config");
|
||||
|
||||
ProfileList = new List<BeWoProfile>();
|
||||
BeWoProfile selectedProfile = null;
|
||||
BeWoProfile selectedProfile = null;
|
||||
HeightFrom = gridLogin.Height;
|
||||
HeightTo = gridLogin.Height + 64;
|
||||
LineYCoordFrom = linkLine.Y1;
|
||||
@@ -102,31 +102,31 @@ namespace BeWo
|
||||
|
||||
DataContext = this;
|
||||
|
||||
|
||||
|
||||
ReadProxyName();
|
||||
|
||||
try
|
||||
{
|
||||
ReadProfileList();
|
||||
|
||||
ReadProfileList();
|
||||
|
||||
#if DEBUG
|
||||
|
||||
|
||||
var uri = new Uri("https://localhost/Host/?k=demo&s=localhost/service");
|
||||
|
||||
var paramDic = BeWoUtils.ParseQuery(uri.Query);
|
||||
string v1, v2;
|
||||
paramDic.TryGetValue("k", out v1);
|
||||
paramDic.TryGetValue("s", out v2);
|
||||
BeWoApp.Tenant = v1;
|
||||
BeWoApp.ServerName = v2;
|
||||
if (ProfileList.Count > 0)
|
||||
ProfileList.Insert(0, new BeWoProfile(v1, v2, BeWoApp.Tenant));
|
||||
else
|
||||
ProfileList.Add(new BeWoProfile(v1, v2, BeWoApp.Tenant));
|
||||
SaveProfileListToFile();
|
||||
var paramDic = BeWoUtils.ParseQuery(uri.Query);
|
||||
string v1, v2;
|
||||
paramDic.TryGetValue("k", out v1);
|
||||
paramDic.TryGetValue("s", out v2);
|
||||
BeWoApp.Tenant = v1;
|
||||
BeWoApp.ServerName = v2;
|
||||
if (ProfileList.Count > 0)
|
||||
ProfileList.Insert(0, new BeWoProfile(v1, v2, BeWoApp.Tenant));
|
||||
else
|
||||
ProfileList.Add(new BeWoProfile(v1, v2, BeWoApp.Tenant));
|
||||
SaveProfileListToFile();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#else
|
||||
@@ -171,29 +171,29 @@ namespace BeWo
|
||||
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
//string ipaddress = "";
|
||||
|
||||
// --------------
|
||||
}
|
||||
|
||||
|
||||
//string ipaddress = "";
|
||||
|
||||
// --------------
|
||||
|
||||
if (ProfileList.Count == 0 || String.IsNullOrEmpty(ProfileList[0].Tenant))
|
||||
ShowEnterTenantDialog();
|
||||
ShowEnterTenantDialog();
|
||||
|
||||
//if (ProfileList.Count == 0)
|
||||
//ProfileList.Add(new BeWoProfile("Ungültiges Profil", "Bitte geben Sie hier einen gültigen Server an. Z.B. app1", "Kundennummer"));
|
||||
BeWoProfile firstProfile = null;
|
||||
if (ProfileList.Count > 0)
|
||||
firstProfile = ProfileList[0];
|
||||
ProfileList.Sort((a, b) => a.Name.CompareTo(b.Name));
|
||||
profileSelectionComboBox.ItemsSource = ProfileList;
|
||||
//ProfileList.Add(new BeWoProfile("Ungültiges Profil", "Bitte geben Sie hier einen gültigen Server an. Z.B. app1", "Kundennummer"));
|
||||
BeWoProfile firstProfile = null;
|
||||
if (ProfileList.Count > 0)
|
||||
firstProfile = ProfileList[0];
|
||||
ProfileList.Sort((a, b) => a.Name.CompareTo(b.Name));
|
||||
profileSelectionComboBox.ItemsSource = ProfileList;
|
||||
|
||||
|
||||
|
||||
if (ProfileList.Count > 0)
|
||||
{
|
||||
#if DEBUG
|
||||
@@ -207,10 +207,10 @@ namespace BeWo
|
||||
selectedProfile = firstProfile;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//if (profileSelectionComboBox.SelectedItem == null)
|
||||
profileSelectionComboBox.SelectedItem = selectedProfile;
|
||||
profileSelectionComboBox.SelectedItem = selectedProfile;
|
||||
|
||||
TextBox_Username.Focus();
|
||||
|
||||
@@ -218,9 +218,9 @@ namespace BeWo
|
||||
{
|
||||
TextBox_Username.Text = "demo";
|
||||
PasswordBox_Password.Password = "demo";
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//this.lblTenant.Content = BeWoApp.Tenant;
|
||||
lblVersion.Content = BeWoApp.Version;
|
||||
|
||||
@@ -233,9 +233,9 @@ namespace BeWo
|
||||
|
||||
//linkLine.Margin = new Thickness(linkLine.Margin.Left, linkLine.Margin.Top + 25, linkLine.Margin.Right, linkLine.Margin.Bottom);
|
||||
//gridLogin.Height += 25;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void PinCertificate()
|
||||
{
|
||||
@@ -265,7 +265,7 @@ namespace BeWo
|
||||
{
|
||||
if (certificate == null || chain == null)
|
||||
return false;
|
||||
|
||||
|
||||
bool chainContainsPk = false;
|
||||
|
||||
foreach (var element in chain.ChainElements)
|
||||
@@ -458,7 +458,7 @@ namespace BeWo
|
||||
while (!myFile.EndOfStream)
|
||||
{
|
||||
var data = myFile.ReadLine();
|
||||
|
||||
|
||||
if (!String.IsNullOrEmpty(data))
|
||||
{
|
||||
if (data.Contains("selected"))
|
||||
@@ -484,65 +484,65 @@ namespace BeWo
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void ReadProfileList()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (File.Exists(_ProfilesFilePath))
|
||||
{
|
||||
var myFile = new StreamReader(_ProfilesFilePath, Encoding.Default);
|
||||
{
|
||||
try
|
||||
{
|
||||
if (File.Exists(_ProfilesFilePath))
|
||||
{
|
||||
var myFile = new StreamReader(_ProfilesFilePath, Encoding.Default);
|
||||
|
||||
while (!myFile.EndOfStream)
|
||||
{
|
||||
var data = myFile.ReadLine()?.Split('|');
|
||||
while (!myFile.EndOfStream)
|
||||
{
|
||||
var data = myFile.ReadLine()?.Split('|');
|
||||
|
||||
if (data?.Length >= 3)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(data[1]) && !String.IsNullOrEmpty(data[2]))
|
||||
ProfileList.Add(new BeWoProfile(data[0], data[1], data[2]));
|
||||
}
|
||||
}
|
||||
myFile.Close();
|
||||
}
|
||||
if (data?.Length >= 3)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(data[1]) && !String.IsNullOrEmpty(data[2]))
|
||||
ProfileList.Add(new BeWoProfile(data[0], data[1], data[2]));
|
||||
}
|
||||
}
|
||||
myFile.Close();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private string GetNumericServerName(string serverName)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(serverName))
|
||||
{
|
||||
int snOut = 0;
|
||||
if (!Int32.TryParse(serverName, out snOut))
|
||||
{
|
||||
String nname = serverName.Replace("app", "");
|
||||
if (nname.IndexOf('.') > 0)
|
||||
{
|
||||
return nname.Substring(0, nname.IndexOf('.'));
|
||||
}
|
||||
}
|
||||
}
|
||||
return serverName;
|
||||
}
|
||||
private string GetNumericServerName(string serverName)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(serverName))
|
||||
{
|
||||
int snOut = 0;
|
||||
if (!Int32.TryParse(serverName, out snOut))
|
||||
{
|
||||
String nname = serverName.Replace("app", "");
|
||||
if (nname.IndexOf('.') > 0)
|
||||
{
|
||||
return nname.Substring(0, nname.IndexOf('.'));
|
||||
}
|
||||
}
|
||||
}
|
||||
return serverName;
|
||||
}
|
||||
|
||||
private void ShowEnterTenantDialog()
|
||||
{
|
||||
BeWoProfile p = null;
|
||||
|
||||
|
||||
var cancel = false;
|
||||
var tenant = String.Empty;
|
||||
while (p == null && !cancel)
|
||||
{
|
||||
var dlg = new EnterTenantDialog {Tenant = tenant};
|
||||
var dlg = new EnterTenantDialog { Tenant = tenant };
|
||||
var result = dlg.ShowDialog();
|
||||
if (result.HasValue && result.Value)
|
||||
{
|
||||
@@ -551,14 +551,14 @@ namespace BeWo
|
||||
{
|
||||
tenant = tenant.Trim();
|
||||
}
|
||||
var server = GetServerFromTenant(tenant);
|
||||
var server = GetServerFromTenant(tenant);
|
||||
if (!String.IsNullOrEmpty(server))
|
||||
{
|
||||
p = new BeWoProfile(tenant, server, tenant);
|
||||
if (ProfileList.Count > 0)
|
||||
ProfileList.Insert(0, p);
|
||||
else
|
||||
ProfileList.Add(p);
|
||||
if (ProfileList.Count > 0)
|
||||
ProfileList.Insert(0, p);
|
||||
else
|
||||
ProfileList.Add(p);
|
||||
SaveProfileListToFile();
|
||||
}
|
||||
else
|
||||
@@ -574,14 +574,14 @@ namespace BeWo
|
||||
}
|
||||
|
||||
|
||||
private string GetServerFromTenant(string tenant)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (tenant == "demo")
|
||||
{
|
||||
return "app1.bewoplaner.de";
|
||||
}
|
||||
private string GetServerFromTenant(string tenant)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (tenant == "demo")
|
||||
{
|
||||
return "app1.bewoplaner.de";
|
||||
}
|
||||
//Server URL über Kundennummer:
|
||||
//https://bewoplaner.beyondsoft.de/getserver.php?CustomerID=1234567890
|
||||
|
||||
@@ -590,28 +590,28 @@ namespace BeWo
|
||||
//https://bewoplaner.beyondsoft.de/getcontractstate.php?CustomerID=1234567890
|
||||
|
||||
|
||||
|
||||
|
||||
String url = String.Format(GETSERVER_URL, tenant);
|
||||
using (WebClient client = new WebClient())
|
||||
{
|
||||
//MessageBox.Show(hostAddress);
|
||||
byte[] response = client.UploadValues(url, "POST", new NameValueCollection());
|
||||
using (WebClient client = new WebClient())
|
||||
{
|
||||
//MessageBox.Show(hostAddress);
|
||||
byte[] response = client.UploadValues(url, "POST", new NameValueCollection());
|
||||
|
||||
String server = System.Text.Encoding.ASCII.GetString(response);
|
||||
String server = System.Text.Encoding.ASCII.GetString(response);
|
||||
|
||||
return server;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//MessageBox.Show(String.Format("Fehler beim Prüfen der Kundennummer: {0}\n\n{1}", ex.Message, ex.StackTrace));
|
||||
return null;
|
||||
}
|
||||
return server;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//MessageBox.Show(String.Format("Fehler beim Prüfen der Kundennummer: {0}\n\n{1}", ex.Message, ex.StackTrace));
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private BeWoProfile GenerateProfileFromUri(Uri uri)
|
||||
{
|
||||
|
||||
@@ -711,10 +711,12 @@ namespace BeWo
|
||||
TextBox_Username.Focus();
|
||||
}
|
||||
|
||||
if(DebugConfig.CurrentConfig is object && DebugConfig.CurrentConfig.AutoLogin)
|
||||
#if DEBUG
|
||||
if (DebugConfig.CurrentConfig is object && DebugConfig.CurrentConfig.AutoLogin)
|
||||
{
|
||||
button_login_Click(this, new RoutedEventArgs());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
private void ShowModalBackground()
|
||||
@@ -732,43 +734,43 @@ namespace BeWo
|
||||
private void button_login_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
if (!String.IsNullOrEmpty(proxyname))
|
||||
{
|
||||
var webProxy = WebProxy.GetDefaultProxy();
|
||||
webProxy.UseDefaultCredentials = true;
|
||||
System.Net.WebRequest.DefaultWebProxy = new WebProxy(proxyname, true);
|
||||
if (!String.IsNullOrEmpty(proxyname))
|
||||
{
|
||||
var webProxy = WebProxy.GetDefaultProxy();
|
||||
webProxy.UseDefaultCredentials = true;
|
||||
System.Net.WebRequest.DefaultWebProxy = new WebProxy(proxyname, true);
|
||||
|
||||
if (String.IsNullOrEmpty(proxyUsername))
|
||||
{
|
||||
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
|
||||
}
|
||||
else
|
||||
{
|
||||
WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(proxyUsername, proxypasswd);
|
||||
}
|
||||
}
|
||||
if (String.IsNullOrEmpty(proxyUsername))
|
||||
{
|
||||
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
|
||||
}
|
||||
else
|
||||
{
|
||||
WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(proxyUsername, proxypasswd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (ProfileList.Count == 0 || profileSelectionComboBox.SelectedItem == null)
|
||||
{
|
||||
MessageBox.Show(
|
||||
"Es wurde kein gültiges Profil gefunden. Bitte erstellen Sie zunächst ein Profil. Klicken Sie dazu auf 'Erweitert' und anschließend auf den Button 'Profile bearbeiten'",
|
||||
"Ungültiges Profil", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
}
|
||||
else
|
||||
{
|
||||
var profile = profileSelectionComboBox.SelectedItem as BeWoProfile;
|
||||
if (ProfileList.Count == 0 || profileSelectionComboBox.SelectedItem == null)
|
||||
{
|
||||
MessageBox.Show(
|
||||
"Es wurde kein gültiges Profil gefunden. Bitte erstellen Sie zunächst ein Profil. Klicken Sie dazu auf 'Erweitert' und anschließend auf den Button 'Profile bearbeiten'",
|
||||
"Ungültiges Profil", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
}
|
||||
else
|
||||
{
|
||||
var profile = profileSelectionComboBox.SelectedItem as BeWoProfile;
|
||||
|
||||
isNet45OrNewer = IsNet45OrNewer();
|
||||
isNet45OrNewer = IsNet45OrNewer();
|
||||
|
||||
if (!isNet45OrNewer)
|
||||
{
|
||||
if (!CheckStatusMessage(String.Format(GETNETMESSAGE_URL, profile.Tenant, BeWoApp.ShortVersion)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!isNet45OrNewer)
|
||||
{
|
||||
if (!CheckStatusMessage(String.Format(GETNETMESSAGE_URL, profile.Tenant, BeWoApp.ShortVersion)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
if (!CheckStatusMessage(String.Format(GETSTATUSMESSAGE_URL + "&pre", profile.Tenant, BeWoApp.ShortVersion)))
|
||||
@@ -784,30 +786,30 @@ namespace BeWo
|
||||
|
||||
|
||||
ChangeServerAndTenant(profile);
|
||||
var lWaitLayer = new WaitLayer2();
|
||||
grid_root.Children.Add(lWaitLayer);
|
||||
var lWaitLayer = new WaitLayer2();
|
||||
grid_root.Children.Add(lWaitLayer);
|
||||
|
||||
string lUserName = TextBox_Username.Text;
|
||||
string lPassword = PasswordBox_Password.Password;
|
||||
string lPIN = PINTextBox.Text;
|
||||
string lTenant = BeWoApp.Tenant;
|
||||
|
||||
|
||||
if (!String.IsNullOrEmpty(lPIN))
|
||||
{
|
||||
lPIN += "_" + System.Environment.MachineName;
|
||||
}
|
||||
Action<WaitLayer2, String, String, String, String> action = Login;
|
||||
action.BeginInvoke(lWaitLayer, lUserName, lPassword, lTenant, lPIN, cb => {}, null);
|
||||
}
|
||||
string lUserName = TextBox_Username.Text;
|
||||
string lPassword = PasswordBox_Password.Password;
|
||||
string lPIN = PINTextBox.Text;
|
||||
string lTenant = BeWoApp.Tenant;
|
||||
|
||||
|
||||
if (!String.IsNullOrEmpty(lPIN))
|
||||
{
|
||||
lPIN += "_" + System.Environment.MachineName;
|
||||
}
|
||||
Action<WaitLayer2, String, String, String, String> action = Login;
|
||||
action.BeginInvoke(lWaitLayer, lUserName, lPassword, lTenant, lPIN, cb => { }, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void Login(WaitLayer2 lWaitLayer, String lUserName, String lPassword, String lTenant, String lPIN)
|
||||
{
|
||||
{
|
||||
try
|
||||
{
|
||||
//1. Versuch
|
||||
UserValidationResult result = TryLogin(lWaitLayer, lUserName, lPassword, lTenant, lPIN );
|
||||
UserValidationResult result = TryLogin(lWaitLayer, lUserName, lPassword, lTenant, lPIN);
|
||||
|
||||
//2. Versuch
|
||||
if (result == UserValidationResult.UnkownError)
|
||||
@@ -815,7 +817,7 @@ namespace BeWo
|
||||
ServiceFacade.DoOperationsServiceAsync(op => op.ResetTenant(lTenant),
|
||||
delegate
|
||||
{
|
||||
result = TryLogin(lWaitLayer ,lUserName, lPassword, lTenant, lPIN);
|
||||
result = TryLogin(lWaitLayer, lUserName, lPassword, lTenant, lPIN);
|
||||
|
||||
if (result == UserValidationResult.UnkownError)
|
||||
{
|
||||
@@ -823,7 +825,7 @@ namespace BeWo
|
||||
ServiceFacade.DoOperationsServiceAsync(op => op.ResetAllTenants(),
|
||||
delegate
|
||||
{
|
||||
result = TryLogin(lWaitLayer,lUserName, lPassword, lTenant, lPIN);
|
||||
result = TryLogin(lWaitLayer, lUserName, lPassword, lTenant, lPIN);
|
||||
|
||||
if (result == UserValidationResult.UnkownError)
|
||||
{
|
||||
@@ -862,37 +864,37 @@ namespace BeWo
|
||||
MessageBox.Show("Die Kundennummer '" + lTenant + "' ist ungültig.", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
});
|
||||
}
|
||||
String pin = lPIN;
|
||||
|
||||
if (!String.IsNullOrEmpty(lPIN) && lPIN.IndexOf('_') >= 0)
|
||||
{
|
||||
pin = lPIN.Substring(0, lPIN.IndexOf('_'));
|
||||
}
|
||||
String pin = lPIN;
|
||||
|
||||
if (result == UserValidationResult.IncorrectPin)
|
||||
{
|
||||
this.Dispatch(delegate
|
||||
{
|
||||
grid_root.Children.Remove(lWaitLayer);
|
||||
MessageBox.Show("Die Pin '" + pin + "' ist unbekannt!", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
});
|
||||
}
|
||||
if (result == UserValidationResult.PinAlreadyUsed)
|
||||
{
|
||||
this.Dispatch(delegate
|
||||
{
|
||||
grid_root.Children.Remove(lWaitLayer);
|
||||
MessageBox.Show("Die Pin '" + pin + "' wurde bereits verwendet!", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
});
|
||||
}
|
||||
if (result == UserValidationResult.PinExpired)
|
||||
{
|
||||
this.Dispatch(delegate
|
||||
{
|
||||
grid_root.Children.Remove(lWaitLayer);
|
||||
MessageBox.Show("Die Pin '" + pin + "' ist bereits abgelaufen!", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
});
|
||||
}
|
||||
if (!String.IsNullOrEmpty(lPIN) && lPIN.IndexOf('_') >= 0)
|
||||
{
|
||||
pin = lPIN.Substring(0, lPIN.IndexOf('_'));
|
||||
}
|
||||
|
||||
if (result == UserValidationResult.IncorrectPin)
|
||||
{
|
||||
this.Dispatch(delegate
|
||||
{
|
||||
grid_root.Children.Remove(lWaitLayer);
|
||||
MessageBox.Show("Die Pin '" + pin + "' ist unbekannt!", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
});
|
||||
}
|
||||
if (result == UserValidationResult.PinAlreadyUsed)
|
||||
{
|
||||
this.Dispatch(delegate
|
||||
{
|
||||
grid_root.Children.Remove(lWaitLayer);
|
||||
MessageBox.Show("Die Pin '" + pin + "' wurde bereits verwendet!", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
});
|
||||
}
|
||||
if (result == UserValidationResult.PinExpired)
|
||||
{
|
||||
this.Dispatch(delegate
|
||||
{
|
||||
grid_root.Children.Remove(lWaitLayer);
|
||||
MessageBox.Show("Die Pin '" + pin + "' ist bereits abgelaufen!", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
});
|
||||
}
|
||||
if (result == UserValidationResult.PasswordExpired)
|
||||
{
|
||||
//this.Dispatch(delegate
|
||||
@@ -919,7 +921,7 @@ namespace BeWo
|
||||
private UserValidationResult TryLogin(WaitLayer2 lWaitLayer, string lUserName, string lPassword, string tenant, string lPin)
|
||||
{
|
||||
UserValidationResult? result = null;
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(lUserName) && !string.IsNullOrEmpty(lPassword))
|
||||
{
|
||||
String tempUsername = lUserName;
|
||||
@@ -945,7 +947,7 @@ namespace BeWo
|
||||
clr = e.Message;
|
||||
}
|
||||
|
||||
|
||||
|
||||
tempUsername = String.Format("{0}//Version={1};CLRVersion={2};BeWoVersion={3};IsNet45OrNewer={4}", lUserName, version, clr, bewoVersion, isNet45OrNewer);
|
||||
try
|
||||
{
|
||||
@@ -953,7 +955,7 @@ namespace BeWo
|
||||
{
|
||||
try
|
||||
{
|
||||
return s.IsUserValid(tempUsername, lPassword, lPin);
|
||||
return s.IsUserValid(tempUsername, lPassword, lPin);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
@@ -969,7 +971,7 @@ namespace BeWo
|
||||
LoginResult(lWaitLayer, r, lUserName, lPassword, tenant, lPin);
|
||||
});
|
||||
|
||||
|
||||
|
||||
}, true);
|
||||
}
|
||||
catch (FaultException<BeWoFault>)
|
||||
@@ -979,7 +981,7 @@ namespace BeWo
|
||||
}
|
||||
else
|
||||
{
|
||||
if(result == null)
|
||||
if (result == null)
|
||||
result = UserValidationResult.UserUnknown;
|
||||
}
|
||||
|
||||
@@ -991,9 +993,9 @@ namespace BeWo
|
||||
return result.Value;
|
||||
}
|
||||
|
||||
private void LoginResult( WaitLayer2 lWaitLayer, UserValidationResult result, String lUserName, String lPassword, String tenant, String lPIN)
|
||||
private void LoginResult(WaitLayer2 lWaitLayer, UserValidationResult result, String lUserName, String lPassword, String tenant, String lPIN)
|
||||
{
|
||||
|
||||
|
||||
if (result == UserValidationResult.UserValid || result == UserValidationResult.UserValidTwoFactorAuthenticationNeeded || result == UserValidationResult.TwoFactorAuthenticationFailedNoChatCodeAllowLogin)
|
||||
{
|
||||
if (result == UserValidationResult.UserValidTwoFactorAuthenticationNeeded || result == UserValidationResult.TwoFactorAuthenticationFailedNoChatCodeAllowLogin)
|
||||
@@ -1010,7 +1012,7 @@ namespace BeWo
|
||||
message = Translator.Translate("Kein Chat Code für die Zwei Faktor Authentifizierung gefunden");
|
||||
dlg.ShowCodeField = false;
|
||||
}
|
||||
|
||||
|
||||
if (message.Contains("<") && message.Contains(">"))
|
||||
{
|
||||
dlg.SetXaml(message);
|
||||
@@ -1036,14 +1038,14 @@ namespace BeWo
|
||||
|
||||
BeWoApp.UserName = lUserName;
|
||||
BeWoApp.UserPassword = lPassword;
|
||||
|
||||
|
||||
BeWoApp.PasswortStrength = BeWoUtils.CheckPasswordSecurity(lPassword);
|
||||
|
||||
ServiceFacade.DoUserServiceAsync(s2 => s2.LoadUserByNameAndPassword(lUserName, lPassword),
|
||||
r2 =>
|
||||
{
|
||||
BeWoApp.LoggedOnUser = r2;
|
||||
|
||||
|
||||
ServiceFacade.DoOperationsServiceAsync(s => s.GetMandator(),
|
||||
m =>
|
||||
{
|
||||
@@ -1078,7 +1080,7 @@ namespace BeWo
|
||||
}
|
||||
grid_root.Children.Remove(lWaitLayer);
|
||||
MessageBox.Show(msg, "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
|
||||
|
||||
var pav = new PasswortAenderungsView();
|
||||
pav.ShowDialog();
|
||||
|
||||
@@ -1086,7 +1088,8 @@ namespace BeWo
|
||||
{
|
||||
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
LoginSuccessful?.Invoke(this, new EventArgs());
|
||||
}
|
||||
});
|
||||
@@ -1153,14 +1156,14 @@ namespace BeWo
|
||||
|
||||
}
|
||||
|
||||
private void button_configureProxy_Click(object sender, RoutedEventArgs rea)
|
||||
{
|
||||
private void button_configureProxy_Click(object sender, RoutedEventArgs rea)
|
||||
{
|
||||
ProxyLoginView proxyLogin = new ProxyLoginView();
|
||||
proxyLogin.WindowStartupLocation = WindowStartupLocation.CenterScreen;
|
||||
|
||||
proxyLogin.ShowDialog();
|
||||
ReadProxyName();
|
||||
}
|
||||
proxyLogin.WindowStartupLocation = WindowStartupLocation.CenterScreen;
|
||||
|
||||
proxyLogin.ShowDialog();
|
||||
ReadProxyName();
|
||||
}
|
||||
|
||||
// TODO: Verschlüsselung einbauen!
|
||||
private void ReadProxyName()
|
||||
@@ -1171,15 +1174,15 @@ namespace BeWo
|
||||
|
||||
try
|
||||
{
|
||||
var filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\proxy.dat";
|
||||
if (!File.Exists(filePath))
|
||||
{
|
||||
filePath = Path.Combine(BeWoApp.GetAndCreateUserAppDataPath(), "proxy.dat");
|
||||
}
|
||||
var filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\proxy.dat";
|
||||
if (!File.Exists(filePath))
|
||||
{
|
||||
filePath = Path.Combine(BeWoApp.GetAndCreateUserAppDataPath(), "proxy.dat");
|
||||
}
|
||||
|
||||
var allLines = File.ReadAllLines(filePath);
|
||||
|
||||
foreach(var linex in allLines)
|
||||
foreach (var linex in allLines)
|
||||
{
|
||||
var decryptedLine = EncryptionUtils.DecryptString(linex);
|
||||
datai[counter] = decryptedLine;
|
||||
@@ -1195,20 +1198,22 @@ namespace BeWo
|
||||
//}
|
||||
|
||||
//file.Close();
|
||||
|
||||
|
||||
proxyname = datai[0];
|
||||
proxyUsername = datai[1];
|
||||
proxypasswd = datai[2];
|
||||
|
||||
proxyTextBox.Text = proxyname;
|
||||
|
||||
}catch(IOException i){
|
||||
}
|
||||
catch (IOException i)
|
||||
{
|
||||
//Fehlermeldung
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void SaveSelectedProfile(BeWoProfile profile)
|
||||
{
|
||||
try
|
||||
@@ -1217,7 +1222,7 @@ namespace BeWo
|
||||
{
|
||||
#if DEBUG
|
||||
sw.WriteLine("selected={0}|{1}|{2}", profile.Name, profile.Server, profile.Tenant);
|
||||
|
||||
|
||||
#else
|
||||
if (profile.Tenant != "demo")
|
||||
{
|
||||
@@ -1297,26 +1302,26 @@ namespace BeWo
|
||||
}
|
||||
|
||||
profile.Tenant = profile.Tenant.Trim();
|
||||
|
||||
//if (BeWoApp.Tenant == "7635986435")
|
||||
//{
|
||||
// if (profile.Server != "3")
|
||||
// {
|
||||
// profile.Server = "3";
|
||||
// SaveProfileListToFile();
|
||||
// }
|
||||
|
||||
//}
|
||||
//if (BeWoApp.Tenant == "7635986435")
|
||||
//{
|
||||
// if (profile.Server != "3")
|
||||
// {
|
||||
// profile.Server = "3";
|
||||
// SaveProfileListToFile();
|
||||
// }
|
||||
|
||||
var server = GetServerFromTenant(profile.Tenant);
|
||||
if (!String.IsNullOrEmpty(server) && server != profile.Server)
|
||||
{
|
||||
profile.Server = server;
|
||||
SaveProfileListToFile();
|
||||
}
|
||||
//}
|
||||
|
||||
BeWoApp.Tenant = profile.Tenant;
|
||||
BeWoApp.ServerName = GetNumericServerName(profile.Server);
|
||||
var server = GetServerFromTenant(profile.Tenant);
|
||||
if (!String.IsNullOrEmpty(server) && server != profile.Server)
|
||||
{
|
||||
profile.Server = server;
|
||||
SaveProfileListToFile();
|
||||
}
|
||||
|
||||
BeWoApp.Tenant = profile.Tenant;
|
||||
BeWoApp.ServerName = GetNumericServerName(profile.Server);
|
||||
BeWoApp.ServerAddress = profile.Server;
|
||||
|
||||
#if DEBUG
|
||||
@@ -1337,15 +1342,15 @@ namespace BeWo
|
||||
"Ungültiges Profil", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ShowProfileStackPanel(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (profileLabel.Visibility == Visibility.Visible)
|
||||
{
|
||||
profileLabel.Visibility = Visibility.Collapsed;
|
||||
profileStackPanel.Visibility = Visibility.Collapsed;
|
||||
proxyLabel.Visibility = Visibility.Collapsed;
|
||||
proxyStackPanel.Visibility = Visibility.Collapsed;
|
||||
proxyLabel.Visibility = Visibility.Collapsed;
|
||||
proxyStackPanel.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1401,8 +1406,8 @@ namespace BeWo
|
||||
showProfileSelectionBtn.Content = "Ausblenden";
|
||||
profileLabel.Visibility = Visibility.Visible;
|
||||
profileStackPanel.Visibility = Visibility.Visible;
|
||||
proxyLabel.Visibility = Visibility.Visible;
|
||||
proxyStackPanel.Visibility = Visibility.Visible;
|
||||
proxyLabel.Visibility = Visibility.Visible;
|
||||
proxyStackPanel.Visibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1425,17 +1430,17 @@ namespace BeWo
|
||||
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
|
||||
private bool pwvViewOffen;
|
||||
private void PasswortVergessenLinkOnRequestNavigate(object sender, RequestNavigateEventArgs e)
|
||||
{
|
||||
if (pwvViewOffen) return;
|
||||
private bool pwvViewOffen;
|
||||
private void PasswortVergessenLinkOnRequestNavigate(object sender, RequestNavigateEventArgs e)
|
||||
{
|
||||
if (pwvViewOffen) return;
|
||||
|
||||
var p = new PwVergessenView();
|
||||
p.Closed += (s, ex) => { pwvViewOffen = false; };
|
||||
p.Show();
|
||||
var p = new PwVergessenView();
|
||||
p.Closed += (s, ex) => { pwvViewOffen = false; };
|
||||
p.Show();
|
||||
|
||||
pwvViewOffen = true;
|
||||
}
|
||||
pwvViewOffen = true;
|
||||
}
|
||||
|
||||
private void UIElement_OnKeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
@@ -1445,7 +1450,7 @@ namespace BeWo
|
||||
{
|
||||
PinEinblenden();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1476,8 +1481,8 @@ namespace BeWo
|
||||
Name = pname;
|
||||
Server = pserver;
|
||||
Tenant = ptenant;
|
||||
if (Name == null)
|
||||
Name = String.Empty;
|
||||
if (Name == null)
|
||||
Name = String.Empty;
|
||||
if (!String.IsNullOrEmpty(Tenant))
|
||||
{
|
||||
Tenant = Tenant.Trim();
|
||||
|
||||
@@ -50,7 +50,8 @@ namespace BeWo
|
||||
Wohnheim,
|
||||
Vertretungen,
|
||||
CustomerTeam,
|
||||
Scheduling
|
||||
Scheduling,
|
||||
Finance
|
||||
}
|
||||
|
||||
public partial class MainControl
|
||||
@@ -295,6 +296,9 @@ namespace BeWo
|
||||
case UIContext.Scheduling:
|
||||
view = new SchedulingMasterView();
|
||||
break;
|
||||
case UIContext.Finance:
|
||||
view = new FinanceView();
|
||||
break;
|
||||
}
|
||||
_Views[uiContext] = view;
|
||||
}
|
||||
@@ -901,7 +905,7 @@ namespace BeWo
|
||||
{
|
||||
if (DoSaveCheck())
|
||||
{
|
||||
NavigateTo(new FinanceView());
|
||||
NavigateTo(GetViewForUIContext(UIContext.Finance));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,11 +36,11 @@ namespace BeWo.View
|
||||
return beWoWindow;
|
||||
}
|
||||
|
||||
public static BeWoWindow GetGkvAbrechnungDetailWindow(GkvAbrechnungVM vM, double height = 600, double width = 1200)
|
||||
public static BeWoWindow GetGkvAbrechnungDetailWindow(GkvAbrechnungVM vM, double height = 800, double width = 600)
|
||||
{
|
||||
var detail = new GkvAbrechnungDetailControl(vM);
|
||||
|
||||
var beWoWindow = GetGenericBeWoWindow("GKV-Abrechnung Nr. " + vM.GkvAbrechnungOid + ": Details", 100, height, 1000, 100, width, 1600);
|
||||
var beWoWindow = GetGenericBeWoWindow("GKV-Abrechnung Nr. " + vM.GkvAbrechnungOid + ": Details", 100, height, 1000, 400, width, 1600);
|
||||
beWoWindow.GroupBoxContent = detail;
|
||||
|
||||
return beWoWindow;
|
||||
|
||||
@@ -1,143 +1,452 @@
|
||||
<UserControl x:Class="BeWo.View.Controls.GkvAbrechnungDetailControl"
|
||||
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
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"
|
||||
mc:Ignorable="d">
|
||||
<UserControl
|
||||
x:Class="BeWo.View.Controls.GkvAbrechnungDetailControl"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
|
||||
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
|
||||
xmlns:local="clr-namespace:BeWo.View.Controls"
|
||||
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:viewmodel="clr-namespace:BeWo.ViewModel"
|
||||
d:DataContext="{d:DesignInstance Type=viewmodel:GkvAbrechnungVM}"
|
||||
mc:Ignorable="d">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<TabControl Background="#eeeeee" BorderThickness="0">
|
||||
<TabItem Header="Allgemein">
|
||||
<Grid Background="#eeeeee" Margin="0" HorizontalAlignment="Stretch" MaxWidth="700">
|
||||
<Grid
|
||||
MaxWidth="700"
|
||||
Margin="0"
|
||||
HorizontalAlignment="Stretch"
|
||||
Background="#eeeeee">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="3*"/>
|
||||
<ColumnDefinition Width="auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="3*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Margin="3" Content="GKV-Abrechnung Nr.:"/>
|
||||
<TextBox Grid.Row="0" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding GkvAbrechnungOid}"/>
|
||||
<Label Grid.Row="5" Grid.Column="0" Margin="3" Content="Abrechnungsbeginn:"/>
|
||||
<TextBox Grid.Row="5" Grid.Column="2" Margin="3" IsReadOnly="True" Text="{Binding AbrechnungsZeitraumStart}"/>
|
||||
<Label Grid.Row="6" Grid.Column="0" Margin="3" Content="Abrechnungsende:"/>
|
||||
<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="0"
|
||||
Grid.Column="0"
|
||||
Margin="3"
|
||||
Content="GKV-Abrechnung Nr.:" />
|
||||
<TextBox
|
||||
Grid.Row="0"
|
||||
Grid.Column="2"
|
||||
Margin="3"
|
||||
IsReadOnly="True"
|
||||
Text="{Binding GkvAbrechnungOid}" />
|
||||
<Label
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Margin="3"
|
||||
Content="Abrechnungsbeginn:" />
|
||||
<TextBox
|
||||
Grid.Row="5"
|
||||
Grid.Column="2"
|
||||
Margin="3"
|
||||
IsReadOnly="True"
|
||||
Text="{Binding AbrechnungsZeitraumStart}" />
|
||||
<Label
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Margin="3"
|
||||
Content="Abrechnungsende:" />
|
||||
<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="10"
|
||||
Grid.Column="0"
|
||||
Margin="3"
|
||||
Content="Verfahrensstufe:" />
|
||||
|
||||
<StackPanel
|
||||
Grid.Row="10"
|
||||
Grid.Column="2"
|
||||
Margin="3"
|
||||
Orientation="Horizontal">
|
||||
<RadioButton
|
||||
Margin="3"
|
||||
GroupName="a"
|
||||
IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=0}">
|
||||
Test
|
||||
</RadioButton>
|
||||
<RadioButton
|
||||
Margin="3"
|
||||
GroupName="a"
|
||||
IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=1}">
|
||||
Erprobung
|
||||
</RadioButton>
|
||||
<RadioButton
|
||||
Margin="3"
|
||||
GroupName="a"
|
||||
IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=2}">
|
||||
Echt
|
||||
</RadioButton>
|
||||
</StackPanel>
|
||||
|
||||
<Label
|
||||
Grid.Row="13"
|
||||
Grid.Column="0"
|
||||
Margin="3"
|
||||
Content="Urbelege Gesendet:" />
|
||||
<CheckBox
|
||||
x:Name="Checkbox_Urbelege"
|
||||
Grid.Row="13"
|
||||
Grid.Column="2"
|
||||
Margin="3"
|
||||
HorizontalAlignment="Left"
|
||||
IsChecked="{Binding UrbelegeGesendet}" />
|
||||
<Label
|
||||
Grid.Row="14"
|
||||
Grid.Column="0"
|
||||
Margin="3"
|
||||
Content="Bezahlt:" />
|
||||
<CheckBox
|
||||
x:Name="Checkbox_Bezahlt"
|
||||
Grid.Row="14"
|
||||
Grid.Column="2"
|
||||
Margin="3"
|
||||
HorizontalAlignment="Left"
|
||||
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"/>
|
||||
<Label
|
||||
Grid.Row="16"
|
||||
Grid.Column="0"
|
||||
Margin="3"
|
||||
Content="Bemerkung:" />
|
||||
<TextBox
|
||||
x:Name="Textbox_Notice"
|
||||
Grid.Row="16"
|
||||
Grid.Column="2"
|
||||
Margin="3"
|
||||
AcceptsReturn="True"
|
||||
HorizontalScrollBarVisibility="Disabled"
|
||||
MaxLength="1024"
|
||||
Text="{Binding Notice}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto" />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem x:Name="tabitem_rechnungen" Header="Enthaltene Rechnungen">
|
||||
<dxg:GridControl Margin="3" x:Name="datagrid_invoices" DataSource="{Binding InvoiceBases2}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
|
||||
<dxg:GridControl
|
||||
x:Name="datagrid_invoices"
|
||||
Margin="3"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
DataSource="{Binding InvoiceBases2}">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn x:Name="ColumnChecked" FieldName="IsChecked" Header=" " MinWidth="30"></dxg:GridColumn>
|
||||
<dxg:GridColumn x:Name="ColumnButtons" AllowEditing="False" FieldName="ReportLink" Header=" ">
|
||||
<dxg:GridColumn
|
||||
x:Name="ColumnChecked"
|
||||
MinWidth="30"
|
||||
FieldName="IsChecked"
|
||||
Header=" " />
|
||||
<dxg:GridColumn
|
||||
x:Name="ColumnButtons"
|
||||
AllowEditing="False"
|
||||
FieldName="ReportLink"
|
||||
Header=" ">
|
||||
<dxg:GridColumn.DisplayTemplate>
|
||||
<ControlTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button Margin="1" ToolTip="Formular anzeigen" x:Name="btn_report" Height="20" Width="20" VerticalAlignment="Center">
|
||||
<Button
|
||||
x:Name="btn_report"
|
||||
Width="20"
|
||||
Height="20"
|
||||
Margin="1"
|
||||
VerticalAlignment="Center"
|
||||
ToolTip="Formular anzeigen">
|
||||
<TextBlock Padding="0">
|
||||
<Hyperlink TextDecorations="None" TargetName="_NewWindow" NavigateUri="{Binding DisplayText, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" RequestNavigate="Hyperlink_OnRequestNavigate">
|
||||
<TextBlock Padding="0" Text="¥" Foreground="#FFFFFF" FontSize="15" FontFamily="Webdings" Height="17" Width="16" VerticalAlignment="Center" HorizontalAlignment="Left" />
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
<Hyperlink
|
||||
NavigateUri="{Binding DisplayText, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
|
||||
RequestNavigate="Hyperlink_OnRequestNavigate"
|
||||
TextDecorations="None"
|
||||
TargetName="_NewWindow">
|
||||
<TextBlock
|
||||
Width="16"
|
||||
Height="17"
|
||||
Padding="0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Webdings"
|
||||
FontSize="15"
|
||||
Foreground="#FFFFFF"
|
||||
Text="¥" />
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</ControlTemplate>
|
||||
</dxg:GridColumn.DisplayTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="TypeString" Header="Art der Rechnung" Width="150" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="CustomerName" Header="{markup:Translate Klient/in}" Width="100" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AccountingPeriodString" SortFieldName="AccountingPeriodStart" Header="Zeitraum" Width="100" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="InvoiceNumber" Header="Nummer" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="InvoiceDate" Header="Datum" EditSettings="{dxe:DateSettings DisplayFormat=d}" MinWidth="70" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="RecipientString" Header="{markup:Translate EmpfängerSingular}" />
|
||||
<dxg:GridColumn
|
||||
Width="150"
|
||||
AllowEditing="False"
|
||||
FieldName="TypeString"
|
||||
Header="Art der Rechnung"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
Width="100"
|
||||
AllowEditing="False"
|
||||
FieldName="CustomerName"
|
||||
Header="{markup:Translate Klient/in}"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
Width="100"
|
||||
AllowEditing="False"
|
||||
FieldName="AccountingPeriodString"
|
||||
Header="Zeitraum"
|
||||
ReadOnly="True"
|
||||
SortFieldName="AccountingPeriodStart" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="InvoiceNumber"
|
||||
Header="Nummer"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
MinWidth="70"
|
||||
AllowEditing="False"
|
||||
EditSettings="{dxe:DateSettings DisplayFormat=d}"
|
||||
FieldName="InvoiceDate"
|
||||
Header="Datum"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="RecipientString"
|
||||
Header="{markup:Translate EmpfängerSingular}"
|
||||
ReadOnly="True" />
|
||||
<!--<dxg:GridColumn FieldName="AccountingPeriodString" Header="Abrechnungszeitraum" />-->
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="TotalAmount" Header="Betrag" MinWidth="70">
|
||||
<dxg:GridColumn
|
||||
MinWidth="70"
|
||||
AllowEditing="False"
|
||||
FieldName="TotalAmount"
|
||||
Header="Betrag"
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c" Mask="c" MaskType="Numeric"></dxe:TextEditSettings>
|
||||
<dxe:TextEditSettings
|
||||
DisplayFormat="c"
|
||||
Mask="c"
|
||||
MaskType="Numeric" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Notice" Header="Bemerkung" MinWidth="200" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" x:Name="PaidColumn" FieldName="IsPaid" Header="Bezahlt"></dxg:GridColumn>
|
||||
<dxg:GridColumn
|
||||
MinWidth="200"
|
||||
AllowEditing="False"
|
||||
FieldName="Notice"
|
||||
Header="Bemerkung"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
x:Name="PaidColumn"
|
||||
AllowEditing="False"
|
||||
FieldName="IsPaid"
|
||||
Header="Bezahlt"
|
||||
ReadOnly="True" />
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView NavigationStyle="Cell" x:Name="gridView" BestFitMode="Smart"
|
||||
AllowBestFit="True" ShowGroupPanel="False" ScrollingMode="Smart" SnapsToDevicePixels="True"
|
||||
Loaded="gridView_Loaded"
|
||||
Margin="3,22,3,3" />
|
||||
<dxg:TableView
|
||||
x:Name="gridView"
|
||||
Margin="3,22,3,3"
|
||||
AllowBestFit="True"
|
||||
BestFitMode="Smart"
|
||||
Loaded="gridView_Loaded"
|
||||
NavigationStyle="Cell"
|
||||
ScrollingMode="Smart"
|
||||
ShowGroupPanel="False"
|
||||
SnapsToDevicePixels="True" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</TabItem>
|
||||
<TabItem Header="Protokoll">
|
||||
<dxg:GridControl Margin="3" x:Name="datagrid_transfer" DataSource="{Binding TransferProtokolle}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
|
||||
<dxg:GridControl
|
||||
x:Name="datagrid_transfer"
|
||||
Margin="3"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
DataSource="{Binding TransferProtokolle}">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="GkvTransferProtokollOid" Header="Oid" Tag="Debug"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="GkvTransferProtokollVersion" Header="Version" Tag="Debug"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AbsenderBezeichnung" Header="Absender"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="EmpfangerBezeichnung" Header="Empfänger"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="IKLeistungserbringer" Header="Leistungserbringer"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="IKKrankenkasse" Header="Krankenkasse"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="IKKostentrager" Header="Kostentrager"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Rechnungsnummer" Header="Rec.Nr."></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Datenaustauschreferenz" Header="Dat. ref."></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Transfernummer" Header="TNr."></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Transfername" Header="TName"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="ErstelltAm" Header="Erstellt">
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="GkvTransferProtokollOid"
|
||||
Header="Oid"
|
||||
ReadOnly="True"
|
||||
Tag="Debug" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="GkvTransferProtokollVersion"
|
||||
Header="Version"
|
||||
ReadOnly="True"
|
||||
Tag="Debug" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="AbsenderBezeichnung"
|
||||
Header="Absender"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="EmpfangerBezeichnung"
|
||||
Header="Empfänger"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="IKLeistungserbringer"
|
||||
Header="Leistungserbringer"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="IKKrankenkasse"
|
||||
Header="Krankenkasse"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="IKKostentrager"
|
||||
Header="Kostentrager"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="Rechnungsnummer"
|
||||
Header="Rec.Nr."
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="Datenaustauschreferenz"
|
||||
Header="Dat. ref."
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="Transfernummer"
|
||||
Header="TNr."
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="Transfername"
|
||||
Header="TName"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="ErstelltAm"
|
||||
Header="Erstellt"
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="g" Mask="c" MaskType="DateTime"></dxe:TextEditSettings>
|
||||
<dxe:TextEditSettings
|
||||
DisplayFormat="g"
|
||||
Mask="c"
|
||||
MaskType="DateTime" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Dateityp" Header="Typ" Width="100"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Dateiname" Header="Dateiname" Width="80"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Dateigrosse" Header="Größe" Width="70"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="SentSuccess" Header="Dakota Übertragen"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Fehlertitel" Header="Fehlertitel"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Fehlerdatum" Header="Fehlerdatum" Width="100">
|
||||
<dxg:GridColumn
|
||||
Width="100"
|
||||
AllowEditing="False"
|
||||
FieldName="Dateityp"
|
||||
Header="Typ"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
Width="80"
|
||||
AllowEditing="False"
|
||||
FieldName="Dateiname"
|
||||
Header="Dateiname"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
Width="70"
|
||||
AllowEditing="False"
|
||||
FieldName="Dateigrosse"
|
||||
Header="Größe"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="SentSuccess"
|
||||
Header="Dakota Übertragen"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="Fehlertitel"
|
||||
Header="Fehlertitel"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
Width="100"
|
||||
AllowEditing="False"
|
||||
FieldName="Fehlerdatum"
|
||||
Header="Fehlerdatum"
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="g" Mask="c" MaskType="DateTime"></dxe:TextEditSettings>
|
||||
<dxe:TextEditSettings
|
||||
DisplayFormat="g"
|
||||
Mask="c"
|
||||
MaskType="DateTime" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Fehlernachricht" Header="Fehlernachricht" MinWidth="200"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Fehlerlevel" Header="Fehlerlevel"></dxg:GridColumn>
|
||||
<dxg:GridColumn
|
||||
MinWidth="200"
|
||||
AllowEditing="False"
|
||||
FieldName="Fehlernachricht"
|
||||
Header="Fehlernachricht"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="Fehlerlevel"
|
||||
Header="Fehlerlevel"
|
||||
ReadOnly="True" />
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView NavigationStyle="Cell" BestFitMode="Smart" x:Name="gridView2"
|
||||
AllowBestFit="True" ShowGroupPanel="False" ScrollingMode="Smart" SnapsToDevicePixels="True"
|
||||
Loaded="gridView_Loaded"
|
||||
Margin="3,22,3,3"/>
|
||||
<dxg:TableView
|
||||
x:Name="gridView2"
|
||||
Margin="3,22,3,3"
|
||||
AllowBestFit="True"
|
||||
BestFitMode="Smart"
|
||||
Loaded="gridView_Loaded"
|
||||
NavigationStyle="Cell"
|
||||
ScrollingMode="Smart"
|
||||
ShowGroupPanel="False"
|
||||
SnapsToDevicePixels="True" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</TabItem>
|
||||
|
||||
@@ -1,19 +1,48 @@
|
||||
<UserControl x:Class="BeWo.View.YearMonthFilter" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid>
|
||||
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" SharedSizeGroup="a" />
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="b" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<UserControl
|
||||
x:Class="BeWo.View.YearMonthFilter"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid>
|
||||
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" SharedSizeGroup="a" />
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="b" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<CheckBox Name="checkbox_yearfilter" IsChecked="True" Content="Nach Jahr filtern" />
|
||||
<CheckBox Name="checkbox_monthfilter" IsEnabled="{Binding Path=IsChecked, ElementName=checkbox_yearfilter}" Grid.Column="1" IsChecked="True" Content="Nach Monat filtern" Margin="8,0,0,0" />
|
||||
<ComboBox x:Name="combobox_year" IsEnabled="{Binding Path=IsChecked, ElementName=checkbox_yearfilter}" Grid.Row="1" Margin="0,3,0,0" Height="20" MinWidth="80" VerticalContentAlignment="Center" Background="White" />
|
||||
<ComboBox x:Name="combobox_month" IsEnabled="{Binding Path=IsChecked, ElementName=checkbox_monthfilter}" Grid.Column="1" Grid.Row="1" Margin="8,3,0,0" Height="20" MinWidth="120" VerticalContentAlignment="Center" Background="White" />
|
||||
|
||||
</Grid>
|
||||
<CheckBox
|
||||
Name="checkbox_yearfilter"
|
||||
Content="Nach Jahr filtern"
|
||||
IsChecked="True" />
|
||||
<CheckBox
|
||||
Name="checkbox_monthfilter"
|
||||
Grid.Column="1"
|
||||
Margin="8,0,0,0"
|
||||
Content="Nach Monat filtern"
|
||||
IsChecked="True"
|
||||
IsEnabled="{Binding Path=IsChecked, ElementName=checkbox_yearfilter}" />
|
||||
<ComboBox
|
||||
x:Name="combobox_year"
|
||||
Grid.Row="1"
|
||||
Height="20"
|
||||
MinWidth="80"
|
||||
Margin="0,3,0,0"
|
||||
VerticalContentAlignment="Center"
|
||||
Background="White"
|
||||
IsEnabled="{Binding Path=IsChecked, ElementName=checkbox_yearfilter}" />
|
||||
<ComboBox
|
||||
x:Name="combobox_month"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Height="20"
|
||||
MinWidth="120"
|
||||
Margin="8,3,0,0"
|
||||
VerticalContentAlignment="Center"
|
||||
Background="White"
|
||||
IsEnabled="{Binding Path=IsChecked, ElementName=checkbox_monthfilter}" />
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -1,28 +1,52 @@
|
||||
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" x:Class="BeWo.View.CostRatePeriodControl" VerticalAlignment="Top" x:Name="UserControl" Background="{x:Null}">
|
||||
<UserControl.Resources>
|
||||
<DataTemplate x:Key="CostRateItemTemplate">
|
||||
<Border BorderThickness="0 1 0 0" BorderBrush="Gray" Margin="0 2 0 0">
|
||||
<Grid Grid.Row="2" Grid.ColumnSpan="2" Margin="0 2 0 0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="c1" />
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="c2" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="Gültig bis" Margin="0,4,3,0" />
|
||||
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" Grid.Column="1" x:Name="datepicker_validUntil" EditValue="{Binding Path=EndDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Height="23" />
|
||||
</Grid>
|
||||
<dxe:TextEdit Height="23" HorizontalAlignment="Stretch" MaskType="Numeric" MaskUseAsDisplayFormat="True" Grid.Column="1" Margin="3,0,0,0" EditValue="{Binding Path=CostRateValue, UpdateSourceTrigger=PropertyChanged}"
|
||||
Mask="########0.00##"/>
|
||||
<UserControl
|
||||
x:Class="BeWo.View.CostRatePeriodControl"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
|
||||
x:Name="UserControl"
|
||||
VerticalAlignment="Top"
|
||||
Background="{x:Null}">
|
||||
<UserControl.Resources>
|
||||
<DataTemplate x:Key="CostRateItemTemplate">
|
||||
<Border
|
||||
Margin="0,2,0,0"
|
||||
BorderBrush="Gray"
|
||||
BorderThickness="0,1,0,0">
|
||||
<Grid
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="0,2,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="c1" />
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="c2" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Margin="0,4,3,0" Text="Gültig bis" />
|
||||
<dxe:DateEdit
|
||||
x:Name="datepicker_validUntil"
|
||||
Grid.Column="1"
|
||||
Height="23"
|
||||
EditValue="{Binding Path=EndDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
MaskType="DateTimeAdvancingCaret" />
|
||||
</Grid>
|
||||
<dxe:TextEdit
|
||||
Grid.Column="1"
|
||||
Height="23"
|
||||
Margin="3,0,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
EditValue="{Binding Path=CostRateValue, UpdateSourceTrigger=PropertyChanged}"
|
||||
Mask="########0.00##"
|
||||
MaskType="Numeric"
|
||||
MaskUseAsDisplayFormat="True" />
|
||||
<!--<dxe:TextEdit Height="23" HorizontalAlignment="Stretch" MaskType="Numeric" MaskUseAsDisplayFormat="True" Grid.Column="1" Margin="3,0,0,0" EditValue="{Binding Path=CostRateValue, UpdateSourceTrigger=PropertyChanged}" >
|
||||
<dxe:TextEdit.Mask>
|
||||
<MultiBinding Converter="{StaticResource CostRatePeriodValueConverter}" UpdateSourceTrigger="PropertyChanged">
|
||||
@@ -33,59 +57,168 @@
|
||||
</MultiBinding>
|
||||
</dxe:TextEdit.Mask>
|
||||
</dxe:TextEdit>-->
|
||||
|
||||
<TextBlock Padding="0 4 0 0" Height="23" x:Name="lblOldUnitName" Text="{Binding Text, ElementName=lblActualUnitName}" Grid.Row="1" Visibility="{Binding Visibility, ElementName=lblActualUnitName}" />
|
||||
<TextBox Height="23" x:Name="txtOldUnitName" Grid.Row="1" Text="{Binding UnitName, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding Visibility, ElementName=lblActualUnitName}" Grid.Column="1" Margin="3,3,0,0" HorizontalAlignment="Stretch" />
|
||||
<Button x:Name="button_deleteCostRatePeriod" Grid.RowSpan="2" VerticalAlignment="Bottom" Grid.Column="2" Width="20" Height="20" HorizontalAlignment="Right" Style="{DynamicResource CloseButtonStyle}" Click="button_deleteCostRatePeriod_Click" Margin="3,0,0,3" />
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</UserControl.Resources>
|
||||
<Grid x:Name="LayoutRoot" Grid.IsSharedSizeScope="True">
|
||||
<Border x:Name="border" BorderBrush="#FF6A6A6A" BorderThickness="0" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Margin="3 0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" MinWidth="160" SharedSizeGroup="c1" />
|
||||
<ColumnDefinition Width="Auto" MinWidth="70" SharedSizeGroup="c2" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Height="23" x:Name="lblActualValue" Text="Aktueller Stundensatz (€)" Padding="0,4,0,0" />
|
||||
<TextBlock Height="23" Padding="0 4 0 0" x:Name="lblActualUnitName" Text="UnitName" Grid.Row="1" Visibility="Collapsed" />
|
||||
<TextBlock x:Name="lblValidUntil" Text="(gültig ab 01.01.2009)" Grid.Row="2" Margin="0,-3,0,0" />
|
||||
<TextBox Height="23" x:Name="txtActualUnitName" Text="{Binding UnitName, UpdateSourceTrigger=PropertyChanged}" Visibility="Collapsed" Grid.Column="1" Grid.Row="1" Margin="3,3,0,0" HorizontalAlignment="Stretch" />
|
||||
<dxe:TextEdit Height="23" HorizontalAlignment="Stretch" MaskType="Numeric" MaskUseAsDisplayFormat="True" Grid.Column="1" Margin="3,0,0,0" EditValue="{Binding Path=CostRateValue, UpdateSourceTrigger=PropertyChanged}"
|
||||
Mask="########0.00##"/>
|
||||
|
||||
|
||||
<Button x:Name="button_addCostRatePeriod" HorizontalAlignment="Center" Grid.Column="2" Width="21" Height="21" Margin="3,0,0,0" VerticalAlignment="Center" Click="button_addCostRatePeriod_Click">
|
||||
<Grid Width="18" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<Line X1="4" X2="12" Y1="8" Y2="8" Fill="{x:Null}" Stroke="#FFFFFFFF" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeThickness="2" HorizontalAlignment="Center" VerticalAlignment="Center" Width="16" Height="16" />
|
||||
<Line X1="8" X2="8" Y1="4" Y2="12" Fill="{x:Null}" Stroke="#FFFFFFFF" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeThickness="2" HorizontalAlignment="Center" VerticalAlignment="Center" Width="16" Height="16" />
|
||||
</Grid>
|
||||
</Button>
|
||||
</Grid>
|
||||
<ListBox x:Name="listBoxOldValues" IsSynchronizedWithCurrentItem="True" Grid.Row="3" Grid.ColumnSpan="3" Margin="0,3,0,0" BorderBrush="Transparent" BorderThickness="0" ItemTemplate="{DynamicResource CostRateItemTemplate}" Background="{x:Null}">
|
||||
<ListBox.ItemContainerStyle>
|
||||
<Style TargetType="{x:Type ListBoxItem}">
|
||||
<Setter Property="Focusable" Value="false" />
|
||||
</Style>
|
||||
</ListBox.ItemContainerStyle>
|
||||
<ListBox.Resources>
|
||||
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
|
||||
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
|
||||
</ListBox.Resources>
|
||||
</ListBox>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<TextBlock
|
||||
x:Name="lblOldUnitName"
|
||||
Grid.Row="1"
|
||||
Height="23"
|
||||
Padding="0,4,0,0"
|
||||
Text="{Binding Text, ElementName=lblActualUnitName}"
|
||||
Visibility="{Binding Visibility, ElementName=lblActualUnitName}" />
|
||||
<TextBox
|
||||
x:Name="txtOldUnitName"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Height="23"
|
||||
Margin="3,3,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
Text="{Binding UnitName, UpdateSourceTrigger=PropertyChanged}"
|
||||
Visibility="{Binding Visibility, ElementName=lblActualUnitName}" />
|
||||
<Button
|
||||
x:Name="button_deleteCostRatePeriod"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="2"
|
||||
Width="20"
|
||||
Height="20"
|
||||
Margin="3,0,0,3"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Click="button_deleteCostRatePeriod_Click"
|
||||
Style="{DynamicResource CloseButtonStyle}" />
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</UserControl.Resources>
|
||||
<Grid x:Name="LayoutRoot" Grid.IsSharedSizeScope="True">
|
||||
<Border
|
||||
x:Name="border"
|
||||
Padding="0"
|
||||
BorderBrush="#FF6A6A6A"
|
||||
BorderThickness="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Margin="3,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition
|
||||
Width="Auto"
|
||||
MinWidth="160"
|
||||
SharedSizeGroup="c1" />
|
||||
<ColumnDefinition
|
||||
Width="Auto"
|
||||
MinWidth="70"
|
||||
SharedSizeGroup="c2" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock
|
||||
x:Name="lblActualValue"
|
||||
Height="23"
|
||||
Padding="0,4,0,0"
|
||||
Text="Aktueller Stundensatz (€)" />
|
||||
<TextBlock
|
||||
x:Name="lblActualUnitName"
|
||||
Grid.Row="1"
|
||||
Height="23"
|
||||
Padding="0,4,0,0"
|
||||
Text="UnitName"
|
||||
Visibility="Collapsed" />
|
||||
<TextBlock
|
||||
x:Name="lblValidUntil"
|
||||
Grid.Row="2"
|
||||
Margin="0,-3,0,0"
|
||||
Text="(gültig ab 01.01.2009)" />
|
||||
<TextBox
|
||||
x:Name="txtActualUnitName"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Height="23"
|
||||
Margin="3,3,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
Text="{Binding UnitName, UpdateSourceTrigger=PropertyChanged}"
|
||||
Visibility="Collapsed" />
|
||||
<dxe:TextEdit
|
||||
Grid.Column="1"
|
||||
Height="23"
|
||||
Margin="3,0,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
EditValue="{Binding Path=CostRateValue, UpdateSourceTrigger=PropertyChanged}"
|
||||
Mask="########0.00##"
|
||||
MaskType="Numeric"
|
||||
MaskUseAsDisplayFormat="True" />
|
||||
|
||||
|
||||
<Button
|
||||
x:Name="button_addCostRatePeriod"
|
||||
Grid.Column="2"
|
||||
Width="21"
|
||||
Height="21"
|
||||
Margin="3,0,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Click="button_addCostRatePeriod_Click">
|
||||
<Grid
|
||||
Width="18"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center">
|
||||
<Line
|
||||
Width="16"
|
||||
Height="16"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Fill="{x:Null}"
|
||||
Stroke="#FFFFFFFF"
|
||||
StrokeEndLineCap="Round"
|
||||
StrokeStartLineCap="Round"
|
||||
StrokeThickness="2"
|
||||
X1="4"
|
||||
X2="12"
|
||||
Y1="8"
|
||||
Y2="8" />
|
||||
<Line
|
||||
Width="16"
|
||||
Height="16"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Fill="{x:Null}"
|
||||
Stroke="#FFFFFFFF"
|
||||
StrokeEndLineCap="Round"
|
||||
StrokeStartLineCap="Round"
|
||||
StrokeThickness="2"
|
||||
X1="8"
|
||||
X2="8"
|
||||
Y1="4"
|
||||
Y2="12" />
|
||||
</Grid>
|
||||
</Button>
|
||||
</Grid>
|
||||
<ListBox
|
||||
x:Name="listBoxOldValues"
|
||||
Grid.Row="3"
|
||||
Grid.ColumnSpan="3"
|
||||
Margin="0,3,0,0"
|
||||
Background="{x:Null}"
|
||||
BorderBrush="Transparent"
|
||||
BorderThickness="0"
|
||||
IsSynchronizedWithCurrentItem="True"
|
||||
ItemTemplate="{DynamicResource CostRateItemTemplate}">
|
||||
<ListBox.ItemContainerStyle>
|
||||
<Style TargetType="{x:Type ListBoxItem}">
|
||||
<Setter Property="Focusable" Value="false" />
|
||||
</Style>
|
||||
</ListBox.ItemContainerStyle>
|
||||
<ListBox.Resources>
|
||||
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
|
||||
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
|
||||
</ListBox.Resources>
|
||||
</ListBox>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -1,102 +1,293 @@
|
||||
<localView:BeWoView x:Class="BeWo.View.Detail.Accounting.GkvAbrechnungOverview"
|
||||
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:localView="clr-namespace:BeWo.View"
|
||||
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
|
||||
xmlns:localViewDetail="clr-namespace:BeWo.View.Detail.Accounting"
|
||||
xmlns:val="clr-namespace:BeWo.Validation"
|
||||
xmlns:proxy="clr-namespace:BeWo.ServiceProxy"
|
||||
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls" xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:r="clr-namespace:BeWo.Security" VerticalAlignment="Stretch" Focusable="True" xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic">
|
||||
<localView:BeWoView
|
||||
x:Class="BeWo.View.Detail.Accounting.GkvAbrechnungOverview"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic"
|
||||
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
|
||||
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
|
||||
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
|
||||
xmlns:localView="clr-namespace:BeWo.View"
|
||||
xmlns:localViewDetail="clr-namespace:BeWo.View.Detail.Accounting"
|
||||
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
|
||||
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
|
||||
xmlns:proxy="clr-namespace:BeWo.ServiceProxy"
|
||||
xmlns:r="clr-namespace:BeWo.Security"
|
||||
xmlns:s="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
|
||||
xmlns:val="clr-namespace:BeWo.Validation"
|
||||
Width="Auto"
|
||||
Height="Auto"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
Focusable="True">
|
||||
|
||||
<Grid>
|
||||
<GroupBox x:Name="groupbox_editArea" Grid.Row="0" Header="GKV-Abrechnungen" Style="{DynamicResource ObjectEditGroupBox}">
|
||||
<Grid>
|
||||
<GroupBox
|
||||
x:Name="groupbox_editArea"
|
||||
Grid.Row="0"
|
||||
Header="GKV-Abrechnungen"
|
||||
Style="{DynamicResource ObjectEditGroupBox}">
|
||||
|
||||
<Grid Grid.IsSharedSizeScope="True" Margin="0,3,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<Grid Margin="0,3,0,0" Grid.IsSharedSizeScope="True">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<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" />
|
||||
<StackPanel Orientation="Vertical" Grid.Column="1" Margin="12,5,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||
<RadioButton x:Name="radioFilterByInvoiceDate" Content="Nach Erstelldatum filtern" IsChecked="True" Click="radioFilterByInvoiceDate_Click" ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Erstelldatum"/>
|
||||
<RadioButton x:Name="radioFilterByAccountingDate" Content="Nach Abrechnungszeitraum filtern" Click="radioFilterByInvoiceDate_Click" ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Abrechnungszeitraum. Es werden alle Abrechnungen angezeigt, die den ausgewählten Monat bzw. Jahr beinhalten."/>
|
||||
<localView:YearMonthFilter
|
||||
x:Name="yearMonthFilter"
|
||||
Grid.Column="0"
|
||||
Margin="3,0,0,3"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Bottom"
|
||||
FilterSpanChanged="YearMonthFilter_FilterSpanChanged" />
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Margin="12,5,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
Orientation="Vertical">
|
||||
<RadioButton
|
||||
x:Name="radioFilterByInvoiceDate"
|
||||
Click="radioFilterByInvoiceDate_Click"
|
||||
Content="Nach Erstelldatum filtern"
|
||||
IsChecked="True"
|
||||
ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Erstelldatum" />
|
||||
<RadioButton
|
||||
x:Name="radioFilterByAccountingDate"
|
||||
Click="radioFilterByInvoiceDate_Click"
|
||||
Content="Nach Abrechnungszeitraum filtern"
|
||||
ToolTip="Filtert die angezeigten GKV-Abrechnungen nach ihrem Abrechnungszeitraum. Es werden alle Abrechnungen angezeigt, die den ausgewählten Monat bzw. Jahr beinhalten." />
|
||||
</StackPanel>
|
||||
<Grid Grid.Column="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="auto" />
|
||||
<ColumnDefinition Width="auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button x:Name="button_new" Grid.Column="2" Content="Neue Abrechnung" Margin="3" Click="NewButton_OnClick" Height="24" VerticalAlignment="Bottom" ToolTip="Neue GKV-Abrechnung erstellen" />
|
||||
<Button x:Name="button_reload" Grid.Column="1" Content="Aktualisieren" Margin="3" Click="ReloadButton_OnClick" Height="24" VerticalAlignment="Bottom" Width="80" ToolTip="Aktualisiere die Liste aller GKV-Abrechnungen"/>
|
||||
<Button
|
||||
x:Name="button_new"
|
||||
Grid.Column="2"
|
||||
Height="24"
|
||||
Margin="3"
|
||||
VerticalAlignment="Bottom"
|
||||
Click="NewButton_OnClick"
|
||||
Content="Neue Abrechnung"
|
||||
ToolTip="Neue GKV-Abrechnung erstellen" />
|
||||
<Button
|
||||
x:Name="button_reload"
|
||||
Grid.Column="1"
|
||||
Width="80"
|
||||
Height="24"
|
||||
Margin="3"
|
||||
VerticalAlignment="Bottom"
|
||||
Click="ReloadButton_OnClick"
|
||||
Content="Aktualisieren"
|
||||
ToolTip="Aktualisiere die Liste aller GKV-Abrechnungen" />
|
||||
</Grid>
|
||||
|
||||
<dxg:GridControl Margin="3" Grid.ColumnSpan="3" Grid.Row="1" DataSource="{Binding VMList}" x:Name="datagrid_gkvAbrechnungen" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Visibility="Collapsed">
|
||||
<dxg:GridControl
|
||||
x:Name="datagrid_gkvAbrechnungen"
|
||||
Grid.Row="1"
|
||||
Grid.ColumnSpan="3"
|
||||
Margin="3"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
DataSource="{Binding VMList}"
|
||||
Visibility="Collapsed">
|
||||
<dxg:GridControl.Effect>
|
||||
<DropShadowEffect Color="#FFC7D9E2" />
|
||||
</dxg:GridControl.Effect>
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn x:Name="ColumnChecked" FieldName="IsChecked" Header=" " MinWidth="30" Width="120" Visible="False"></dxg:GridColumn>
|
||||
<dxg:GridColumn x:Name="ColumnButtons" AllowEditing="False" Width="Auto" FieldName="ReportLink" Header=" ">
|
||||
<dxg:GridColumn
|
||||
x:Name="ColumnChecked"
|
||||
Width="120"
|
||||
MinWidth="30"
|
||||
FieldName="IsChecked"
|
||||
Header=" "
|
||||
Visible="False" />
|
||||
<dxg:GridColumn
|
||||
x:Name="ColumnButtons"
|
||||
Width="Auto"
|
||||
AllowEditing="False"
|
||||
FieldName="ReportLink"
|
||||
Header=" ">
|
||||
<dxg:GridColumn.DisplayTemplate>
|
||||
<ControlTemplate>
|
||||
<StackPanel Orientation="Horizontal" Margin="1">
|
||||
<Button Click="btn_details_Click" Content="¥" Padding="0" Margin="1" ToolTip="Details anzeigen" Foreground="#FFFFFF" FontSize="11" FontFamily="Webdings" x:Name="btn_details" Height="18" Width="20" VerticalAlignment="Center" />
|
||||
<StackPanel Margin="1" Orientation="Horizontal">
|
||||
<Button
|
||||
x:Name="btn_details"
|
||||
Width="20"
|
||||
Height="18"
|
||||
Margin="1"
|
||||
Padding="0"
|
||||
VerticalAlignment="Center"
|
||||
Click="btn_details_Click"
|
||||
Content="¥"
|
||||
FontFamily="Webdings"
|
||||
FontSize="11"
|
||||
Foreground="#FFFFFF"
|
||||
ToolTip="Details anzeigen" />
|
||||
<!--<Button Click="btn_nutz_Click" Content="¥" Padding="0" Margin="1" ToolTip="Nutzdatendatei" Foreground="#BBBBBB" FontSize="10" FontFamily="Webdings" x:Name="btn_nutz" Height="17" Width="20" VerticalAlignment="Center" />
|
||||
<Button Click="btn_auf_Click" Content="¥" Padding="0" Margin="1" ToolTip="Auftragsdatei" Foreground="#BBBBBB" FontSize="10" FontFamily="Webdings" x:Name="btn_auf" Height="17" Width="20" VerticalAlignment="Center" />-->
|
||||
<Button Click="btn_send_Click" Content="*" Padding="0" Margin="1" ToolTip="Senden" Foreground="#ffffff" FontSize="11" FontFamily="Wingdings" x:Name="btn_send" Height="18" Width="20" VerticalAlignment="Center"/>
|
||||
<Button Click="btn_force_send_Click" Content="r" Padding="0" Margin="1" ToolTip="DEBUG: Protokolle Löschen" Foreground="#FFFF00" FontSize="11" FontFamily="Wingdings" x:Name="btn_force_send" Height="18" Width="20" VerticalAlignment="Center" Visibility="Collapsed"/>
|
||||
<Button Click="btn_delete_Click" Content="r" Padding="0" Margin="1" ToolTip="Löschen" Foreground="#FF0000" FontSize="11" FontFamily="Webdings" x:Name="btn_delete" Height="18" Width="20" VerticalAlignment="Center" />
|
||||
<Button
|
||||
x:Name="btn_send"
|
||||
Width="20"
|
||||
Height="18"
|
||||
Margin="1"
|
||||
Padding="0"
|
||||
VerticalAlignment="Center"
|
||||
Click="btn_send_Click"
|
||||
Content="*"
|
||||
FontFamily="Wingdings"
|
||||
FontSize="11"
|
||||
Foreground="#ffffff"
|
||||
ToolTip="Senden" />
|
||||
<Button
|
||||
x:Name="btn_delete"
|
||||
Width="20"
|
||||
Height="18"
|
||||
Margin="1"
|
||||
Padding="0"
|
||||
VerticalAlignment="Center"
|
||||
Click="btn_delete_Click"
|
||||
Content="r"
|
||||
FontFamily="Webdings"
|
||||
FontSize="11"
|
||||
Foreground="#FF0000"
|
||||
ToolTip="Löschen" />
|
||||
</StackPanel>
|
||||
</ControlTemplate>
|
||||
</dxg:GridColumn.DisplayTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="RecipientString" Width="177" Header="{markup:Translate EmpfängerSingular}" />
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AbrechnungsZeitraum" Header="Abrechnungszeitraum" Width="Auto"/>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="ErstelltAm" Header="Erstelldatum" Width="Auto">
|
||||
<dxg:GridColumn
|
||||
Width="177"
|
||||
AllowEditing="False"
|
||||
FieldName="RecipientString"
|
||||
Header="{markup:Translate EmpfängerSingular}"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
Width="Auto"
|
||||
AllowEditing="False"
|
||||
FieldName="AbrechnungsZeitraum"
|
||||
Header="Abrechnungszeitraum"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
Width="Auto"
|
||||
AllowEditing="False"
|
||||
FieldName="ErstelltAm"
|
||||
Header="Erstelldatum"
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayFormat="d" HorizontalContentAlignment="Right"/>
|
||||
<dxe:DateEditSettings HorizontalContentAlignment="Right" DisplayFormat="d" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="GkvState" Header="Status" Width="Auto">
|
||||
<dxg:GridColumn
|
||||
Width="Auto"
|
||||
AllowEditing="False"
|
||||
FieldName="Verfahrensstufe"
|
||||
Header="Verfahrensstufe"
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayTextConverter="{StaticResource GkvState2StringConverter}"/>
|
||||
<dxe:DateEditSettings DisplayTextConverter="{StaticResource EnumTranslationConverter}" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="LastTransferDateTime" Header="Gesendet Am" Width="Auto">
|
||||
<dxg:GridColumn
|
||||
Width="Auto"
|
||||
AllowEditing="False"
|
||||
FieldName="GkvState"
|
||||
Header="Status"
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayFormat="d" HorizontalContentAlignment="Right"/>
|
||||
<dxe:DateEditSettings DisplayTextConverter="{StaticResource GkvState2StringConverter}" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn x:Name="FehlermeldungColumn" FieldName="Fehlermeldung" Header="Fehlermeldung" Width="*"></dxg:GridColumn>
|
||||
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Betrag" Header="Betrag">
|
||||
<dxg:GridColumn
|
||||
Width="Auto"
|
||||
AllowEditing="False"
|
||||
FieldName="LastTransferDateTime"
|
||||
Header="Gesendet Am"
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c" Mask="c" MaskType="Numeric" HorizontalContentAlignment="Right"></dxe:TextEditSettings>
|
||||
<dxe:DateEditSettings HorizontalContentAlignment="Right" DisplayFormat="d" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn x:Name="PaidColumn" FieldName="Bezahlt" Header="Bezahlt" Width="Auto"></dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="Notice" Header="Bemerkung" MinWidth="200" Width="3*" Tag="1024">
|
||||
<dxg:GridColumn
|
||||
x:Name="FehlermeldungColumn"
|
||||
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"
|
||||
Header="Betrag"
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings
|
||||
HorizontalContentAlignment="Right"
|
||||
DisplayFormat="c"
|
||||
Mask="c"
|
||||
MaskType="Numeric" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn
|
||||
Width="3*"
|
||||
MinWidth="200"
|
||||
FieldName="Notice"
|
||||
Header="Bemerkung"
|
||||
Tag="1024">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings TextWrapping="Wrap" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView NavigationStyle="Cell" Loaded="gridView_Loaded" x:Name="gridView" BestFitMode="Smart"
|
||||
AllowBestFit="True" ShowGroupPanel="False" ScrollingMode="Smart" SnapsToDevicePixels="True" ShownEditor="gridView_ShownEditor"
|
||||
CellValueChanging="gridView_CellValueChanged"
|
||||
CustomRowAppearance="TableView_OnCustomRowAppearance"
|
||||
Margin="3,22,3,3" CellValueChanged="gridView_CellValueChanged_1" RowMinHeight="24"
|
||||
/>
|
||||
<dxg:TableView
|
||||
x:Name="gridView"
|
||||
Margin="3,22,3,3"
|
||||
AllowBestFit="True"
|
||||
BestFitMode="Smart"
|
||||
CellValueChanged="gridView_CellValueChanged_1"
|
||||
CellValueChanging="gridView_CellValueChanging"
|
||||
CustomRowAppearance="TableView_OnCustomRowAppearance"
|
||||
Loaded="gridView_Loaded"
|
||||
NavigationStyle="Cell"
|
||||
RowMinHeight="24"
|
||||
ScrollingMode="Smart"
|
||||
ShownEditor="gridView_ShownEditor"
|
||||
SnapsToDevicePixels="True" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
|
||||
</localView:BeWoView>
|
||||
@@ -34,7 +34,7 @@ namespace BeWo.View.Detail.Accounting
|
||||
private readonly NewGkvAbrechnungPopUpView _NewGkvAbrechnungPopUpView;
|
||||
private readonly GkvAbrechnungListVM _Viewmodel;
|
||||
|
||||
public GkvAbrechnungOverview(GkvAbrechnungListVM vm)
|
||||
public GkvAbrechnungOverview()
|
||||
{
|
||||
UpdateDataGridFilterCommand = new DelegateCommand(UpdateDataGridFilter);
|
||||
|
||||
@@ -42,9 +42,9 @@ namespace BeWo.View.Detail.Accounting
|
||||
|
||||
DownloadLinkEngine = new DownloadLinkEngine();
|
||||
|
||||
_Viewmodel = vm;
|
||||
_Viewmodel = new GkvAbrechnungListVM();
|
||||
|
||||
DataContext = vm;
|
||||
DataContext = _Viewmodel;
|
||||
|
||||
//datagrid_gkvAbrechnungen.FixedFilter = new BinaryOperator("Datenaustauschreferenz", 1);
|
||||
|
||||
@@ -66,10 +66,7 @@ namespace BeWo.View.Detail.Accounting
|
||||
|
||||
private void CheckRights()
|
||||
{
|
||||
//if (!BeWoApp.AppSettings.AllowStorno)
|
||||
//{
|
||||
// ColumnButtons.MinWidth = 67;
|
||||
//}
|
||||
|
||||
}
|
||||
private void RefreshGkvAbrechnungenList()
|
||||
{
|
||||
@@ -204,27 +201,6 @@ namespace BeWo.View.Detail.Accounting
|
||||
}
|
||||
}
|
||||
|
||||
private void btn_force_send_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
#if DEBUG
|
||||
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
|
||||
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
|
||||
|
||||
if(vm.TransferProtokolle is object && vm.TransferProtokolle.Any())
|
||||
{
|
||||
vm.TransferProtokolle.Clear();
|
||||
|
||||
var result_dc = ServiceFacade.DoAccountingServiceSync(x => x.UpdateGkvAbrechnung(vm.CommitToDataContract()));
|
||||
|
||||
vm.TransferProtokolle = result_dc.TransferProtokolle?.ToList();
|
||||
vm.GkvAbrechnungVersion = result_dc.GkvAbrechnungVersion;
|
||||
}
|
||||
}
|
||||
|
||||
private void btn_send_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
|
||||
@@ -313,14 +289,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)
|
||||
@@ -337,6 +323,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,10 +342,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)
|
||||
@@ -375,5 +389,5 @@ namespace BeWo.View.Detail.Accounting
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -240,10 +240,10 @@
|
||||
|
||||
<dxsch:DataSource.AppointmentMappings>
|
||||
<dxsch:AppointmentMappings
|
||||
AllDay="AllDay"
|
||||
End="EndDateDisplay"
|
||||
LabelId="Customer.CustomerOid"
|
||||
ResourceId="Wohneinheit.Oid"
|
||||
AllDay="AllDay"
|
||||
Start="StartDate"
|
||||
Subject="Customer.VollerName" />
|
||||
</dxsch:DataSource.AppointmentMappings>
|
||||
|
||||
@@ -136,6 +136,6 @@
|
||||
</dxg:GridControl>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<local:WohneinheitBelegungEditPopup x:Name="popup_newBelegung"/>
|
||||
<local:WohneinheitBelegungEditPopup x:Name="popup_newBelegung" />
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
||||
@@ -22,11 +22,11 @@
|
||||
Style="{StaticResource ObjectEditGroupBox}">
|
||||
<ListBox
|
||||
Name="PhotosListBox"
|
||||
ContextMenuOpening="PhotosListBox_ContextMenuOpening"
|
||||
ItemsSource="{Binding VMList}"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
SelectedIndex="0"
|
||||
ContextMenuOpening="PhotosListBox_ContextMenuOpening"
|
||||
Style="{StaticResource PhotoListBox}">
|
||||
<ListBox.ContextMenu>
|
||||
<ContextMenu>
|
||||
|
||||
@@ -86,9 +86,9 @@
|
||||
<ScrollViewer
|
||||
Grid.Column="2"
|
||||
Margin="5"
|
||||
Padding="5"
|
||||
DataContext="{Binding SelectedVM}"
|
||||
VerticalScrollBarVisibility="Visible"
|
||||
Padding="5"
|
||||
Visibility="{Binding Path=., Converter={StaticResource ObjectVisibilityConverter}}">
|
||||
<StackPanel Orientation="Vertical">
|
||||
<GroupBox
|
||||
@@ -255,7 +255,7 @@
|
||||
Text="{Binding Path=Zusatznotiz, UpdateSourceTrigger=PropertyChanged}" />
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<local:WohneinheitGrundrissControl Visibility="{Binding Path=DataContext.PermissionWohneinheitGalleryView, ElementName=root_grid,Converter={StaticResource BoolVisibilityConverter}}" DataContext="{Binding ImageListVM}" />
|
||||
<local:WohneinheitGrundrissControl DataContext="{Binding ImageListVM}" Visibility="{Binding Path=DataContext.PermissionWohneinheitGalleryView, ElementName=root_grid, Converter={StaticResource BoolVisibilityConverter}}" />
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
<localView:BeWoView x:Class="BeWo.View.Master.DokumenteView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
|
||||
xmlns:localView="clr-namespace:BeWo.View"
|
||||
xmlns:master="clr-namespace:BeWo.View.Master"
|
||||
xmlns:dxa="http://schemas.devexpress.com/winfx/2008/xaml/accordion"
|
||||
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
|
||||
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
|
||||
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
|
||||
xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys"
|
||||
xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
|
||||
xmlns:controls="clr-namespace:BeWo.View.Controls"
|
||||
Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True">
|
||||
<localView:BeWoView
|
||||
x:Class="BeWo.View.Master.DokumenteView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:controls="clr-namespace:BeWo.View.Controls"
|
||||
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
|
||||
xmlns:dxa="http://schemas.devexpress.com/winfx/2008/xaml/accordion"
|
||||
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
|
||||
xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys"
|
||||
xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
|
||||
xmlns:localView="clr-namespace:BeWo.View"
|
||||
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
|
||||
xmlns:master="clr-namespace:BeWo.View.Master"
|
||||
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
|
||||
Width="Auto"
|
||||
Height="Auto"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
Focusable="True">
|
||||
|
||||
<localView:BeWoView.Resources>
|
||||
<Style TargetType="dxg:RowControl">
|
||||
@@ -22,64 +27,78 @@
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
<ContextMenu x:Name="contextMenu" x:Key="cm" MenuItem.Click="ContextMenu_Click" Opened="ContextMenu_Opened">
|
||||
<MenuItem Header="Neuer Ordner" >
|
||||
<ContextMenu
|
||||
x:Key="cm"
|
||||
x:Name="contextMenu"
|
||||
MenuItem.Click="ContextMenu_Click"
|
||||
Opened="ContextMenu_Opened">
|
||||
<MenuItem Header="Neuer Ordner">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\Ressources\Icons\new.png"/>
|
||||
<Image Source="..\Ressources\Icons\new.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Umbenennen">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\Ressources\Icons\Rename24.png"/>
|
||||
<Image Source="..\Ressources\Icons\Rename24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<Separator />
|
||||
<MenuItem Header="Löschen" >
|
||||
<MenuItem Header="Löschen">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\Ressources\Icons\Delete24.png"/>
|
||||
<Image Source="..\Ressources\Icons\Delete24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</ContextMenu>
|
||||
|
||||
|
||||
<ContextMenu x:Name="TemplateContextMenu" x:Key="templatecm" MenuItem.Click="TemplateContextMenu_Click" Opened="TemplateContextMenu_Opened">
|
||||
<MenuItem Header="Neuer Ordner" >
|
||||
|
||||
|
||||
<ContextMenu
|
||||
x:Key="templatecm"
|
||||
x:Name="TemplateContextMenu"
|
||||
MenuItem.Click="TemplateContextMenu_Click"
|
||||
Opened="TemplateContextMenu_Opened">
|
||||
<MenuItem Header="Neuer Ordner">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\Ressources\Icons\Add24.png"/>
|
||||
<Image Source="..\Ressources\Icons\Add24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Umbenennen">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\Ressources\Icons\Rename24.png"/>
|
||||
<Image Source="..\Ressources\Icons\Rename24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<Separator />
|
||||
<MenuItem Header="Neue Vorlage" >
|
||||
<MenuItem Header="Neue Vorlage">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\Ressources\Icons\DocumentWithAdd.png"/>
|
||||
<Image Source="..\Ressources\Icons\DocumentWithAdd.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<Separator />
|
||||
<MenuItem Header="Löschen" >
|
||||
<MenuItem Header="Löschen">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\Ressources\Icons\Delete24.png"/>
|
||||
<Image Source="..\Ressources\Icons\Delete24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</ContextMenu>
|
||||
<master:DeleteButtonVisibilityConverter x:Key="DeleteButtonVisibilityConverter" />
|
||||
<master:EditButtonVisibilityConverter x:Key="EditButtonVisibilityConverter" />
|
||||
|
||||
|
||||
</localView:BeWoView.Resources>
|
||||
|
||||
|
||||
|
||||
|
||||
<Grid>
|
||||
|
||||
<Grid>
|
||||
<uc:ShadowChrome>
|
||||
<GroupBox Style="{StaticResource MainContentGroupBoxStyle}">
|
||||
<GroupBox.Header>
|
||||
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" Margin="0,11,0,0">
|
||||
<Image Source="..\..\Ressources\Icons\Folder.png" RenderTransformOrigin="0.5,0.5" Width="32">
|
||||
<StackPanel
|
||||
Margin="0,11,0,0"
|
||||
VerticalAlignment="Bottom"
|
||||
Orientation="Horizontal">
|
||||
<Image
|
||||
Width="32"
|
||||
RenderTransformOrigin="0.5,0.5"
|
||||
Source="..\..\Ressources\Icons\Folder.png">
|
||||
<Image.RenderTransform>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="1.3" ScaleY="1.3" />
|
||||
@@ -89,34 +108,66 @@
|
||||
</TransformGroup>
|
||||
</Image.RenderTransform>
|
||||
</Image>
|
||||
<TextBox Text="Dokumente" Margin="10,0,0,0" Background="{x:Null}" Foreground="{DynamicResource MainGroupBoxForegroundBrush}" FontSize="22" BorderBrush="{x:Null}" VerticalAlignment="Stretch" Padding="0,0,0,0" BorderThickness="0,0,0,0" />
|
||||
<TextBox
|
||||
Margin="10,0,0,0"
|
||||
Padding="0,0,0,0"
|
||||
VerticalAlignment="Stretch"
|
||||
Background="{x:Null}"
|
||||
BorderBrush="{x:Null}"
|
||||
BorderThickness="0,0,0,0"
|
||||
FontSize="22"
|
||||
Foreground="{DynamicResource MainGroupBoxForegroundBrush}"
|
||||
Text="Dokumente" />
|
||||
</StackPanel>
|
||||
</GroupBox.Header>
|
||||
<Grid Background="{StaticResource ObjectEditBackgroundBrush}">
|
||||
<TabControl Visibility="Visible">
|
||||
<TabItem Visibility="Visible">
|
||||
<TabItem.Header>
|
||||
<TextBlock Text="{markup:Translate Alle Dokumente}" TextElement.FontSize="16" TextElement.Foreground="{StaticResource TabItemHotTextBrush}" TextElement.FontFamily="Microsoft Sans Serif" Padding="3"></TextBlock>
|
||||
<TextBlock
|
||||
Padding="3"
|
||||
Text="{markup:Translate Alle Dokumente}"
|
||||
TextElement.FontFamily="Microsoft Sans Serif"
|
||||
TextElement.FontSize="16"
|
||||
TextElement.Foreground="{StaticResource TabItemHotTextBrush}" />
|
||||
</TabItem.Header>
|
||||
|
||||
<dxlc:LayoutControl Orientation="Horizontal">
|
||||
<dxlc:LayoutGroup dxlc:LayoutControl.AllowHorizontalSizing="True" Width="300">
|
||||
<dxlc:LayoutGroup Width="300" dxlc:LayoutControl.AllowHorizontalSizing="True">
|
||||
<Grid Margin="0,0,0,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Label Content="Suche" Margin="0,0,0,0" />
|
||||
<TextBox Height="20" Grid.Column="1" x:Name="textbox_searchForFileName" Margin="3,2,0,5" HorizontalContentAlignment="Stretch" TabIndex="0" Template="{DynamicResource SearchTextBoxTemplate}" BorderThickness="0,0,0,0" KeyDown="TextBox_KeyDown"/>
|
||||
<Label Margin="0,0,0,0" Content="Suche" />
|
||||
<TextBox
|
||||
x:Name="textbox_searchForFileName"
|
||||
Grid.Column="1"
|
||||
Height="20"
|
||||
Margin="3,2,0,5"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
BorderThickness="0,0,0,0"
|
||||
KeyDown="TextBox_KeyDown"
|
||||
TabIndex="0"
|
||||
Template="{DynamicResource SearchTextBoxTemplate}" />
|
||||
|
||||
<dxg:TreeListControl Grid.Row="1" Grid.ColumnSpan="2" x:Name="documents_treeview_control" Margin="0 0 2 4" VerticalAlignment="Stretch" dx:ThemeManager.ThemeName="Office2010Black">
|
||||
<dxg:TreeListControl
|
||||
x:Name="documents_treeview_control"
|
||||
Grid.Row="1"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="0,0,2,4"
|
||||
VerticalAlignment="Stretch"
|
||||
dx:ThemeManager.ThemeName="Office2010Black">
|
||||
<dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListColumn FieldName="Name" AllowSorting="False" Width="300">
|
||||
<dxg:TreeListColumn
|
||||
Width="300"
|
||||
AllowSorting="False"
|
||||
FieldName="Name">
|
||||
<!--<dxg:TreeListColumn.CellStyle>
|
||||
<Style TargetType="dxg:LightweightCellEditor" BasedOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=LightweightCellStyle}}">
|
||||
<Style.Triggers>
|
||||
@@ -130,10 +181,25 @@
|
||||
</dxg:TreeListColumn>
|
||||
</dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListControl.View>
|
||||
<dxg:TreeListView x:Name="DocumentsTreeView" PreviewMouseLeftButtonDown="DocumentsTreeView_PreviewMouseLeftButtonDown" ShowColumnHeaders="False" ShowIndicator="False" ShowHorizontalLines="False" ShowVerticalLines="False"
|
||||
FocusedRowChanged="DocumentsTreeView_FocusedRowChanged" LostFocus="DocumentsTreeView_LostFocus"
|
||||
NodeExpanding="DocumentsTreeView_NodeExpanding" AllowEditing="False" ShowNodeImages="True" PrintNodeImages="True" AutoWidth="True"
|
||||
KeyFieldName="{Binding DocumentTreeItemVM.DocTreeItemOid}" ParentFieldName="Binding DocumentTreeItemVM.ParentOid" ContextMenu="{StaticResource cm}" VerticalScrollbarVisibility="Auto" HorizontalScrollbarVisibility="Auto">
|
||||
<dxg:TreeListView
|
||||
x:Name="DocumentsTreeView"
|
||||
AllowEditing="False"
|
||||
AutoWidth="True"
|
||||
ContextMenu="{StaticResource cm}"
|
||||
FocusedRowChanged="DocumentsTreeView_FocusedRowChanged"
|
||||
HorizontalScrollbarVisibility="Auto"
|
||||
KeyFieldName="{Binding DocumentTreeItemVM.DocTreeItemOid}"
|
||||
LostFocus="DocumentsTreeView_LostFocus"
|
||||
NodeExpanding="DocumentsTreeView_NodeExpanding"
|
||||
ParentFieldName="Binding DocumentTreeItemVM.ParentOid"
|
||||
PreviewMouseLeftButtonDown="DocumentsTreeView_PreviewMouseLeftButtonDown"
|
||||
PrintNodeImages="True"
|
||||
ShowColumnHeaders="False"
|
||||
ShowHorizontalLines="False"
|
||||
ShowIndicator="False"
|
||||
ShowNodeImages="True"
|
||||
ShowVerticalLines="False"
|
||||
VerticalScrollbarVisibility="Auto">
|
||||
<!--<dxg:TreeListView.RowStyle>
|
||||
<Style BasedOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=RowStyle}}" TargetType="dxg:rows">
|
||||
<Style.Triggers>
|
||||
@@ -151,7 +217,10 @@
|
||||
</Grid>
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup dxlc:LayoutControl.AllowHorizontalSizing="True">
|
||||
<Grid Grid.Column="1" Grid.Row="0" Grid.RowSpan="2">
|
||||
<Grid
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
@@ -160,7 +229,12 @@
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<GroupBox x:Name="GroupBoxDokumentenListe" Grid.ColumnSpan="2" Padding="5" Style="{StaticResource ObjectEditGroupBox}" Header="">
|
||||
<GroupBox
|
||||
x:Name="GroupBoxDokumentenListe"
|
||||
Grid.ColumnSpan="2"
|
||||
Padding="5"
|
||||
Header=""
|
||||
Style="{StaticResource ObjectEditGroupBox}">
|
||||
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -176,10 +250,29 @@
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Button Name="button_uploadDocument" Click="button_OpenUploadDocument_Click" Grid.Column="0" Grid.Row="0">Datei hochladen</Button>
|
||||
<controls:PopupNonTopmost Grid.Row="0" Topmost="False" x:Name="popup_UploadFiles" Width="350" StaysOpen="True" Placement="MousePoint">
|
||||
<Border Background="White" Padding="3" BorderThickness="1" BorderBrush="Gray">
|
||||
<GroupBox x:Name="groupbox_uploadDocument" Header="Dokument hochladen" Style="{StaticResource ObjectEditGroupBox}">
|
||||
<Button
|
||||
Name="button_uploadDocument"
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Click="button_OpenUploadDocument_Click">
|
||||
Datei hochladen
|
||||
</Button>
|
||||
<controls:PopupNonTopmost
|
||||
x:Name="popup_UploadFiles"
|
||||
Grid.Row="0"
|
||||
Width="350"
|
||||
Placement="MousePoint"
|
||||
StaysOpen="True"
|
||||
Topmost="False">
|
||||
<Border
|
||||
Padding="3"
|
||||
Background="White"
|
||||
BorderBrush="Gray"
|
||||
BorderThickness="1">
|
||||
<GroupBox
|
||||
x:Name="groupbox_uploadDocument"
|
||||
Header="Dokument hochladen"
|
||||
Style="{StaticResource ObjectEditGroupBox}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
@@ -195,15 +288,49 @@
|
||||
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label VerticalAlignment="Center" Content="{markup:Translate Datei}" />
|
||||
<uc:PopUpEdit IsReadOnly="True" DeleteButtonVisibility="Collapsed"
|
||||
Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" Margin="3" Height="23" x:Name="popupedit_file"
|
||||
PopUpClick="popupedit_file_PopUpClick_1" Cursor="Arrow" />
|
||||
<Label Content="Beschreibung" Grid.Row="2" Grid.Column="0" VerticalAlignment="Top" />
|
||||
<TextBox x:Name="textbox_beschreibung" Grid.Row="2" Grid.Column="1" Height="50" Margin="3" Grid.ColumnSpan="2" />
|
||||
<Button Grid.Row="4" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Bottom" Height="25"
|
||||
Margin="3" Content="Hochladen" x:Name="button_uploadFile" Click="button_uploadDocument_Click" />
|
||||
<Button Grid.Row="4" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Height="25"
|
||||
Margin="3" Content="Abbrechen" x:Name="button_cancelFileUpload" Click="button_cancelFileUpload_Click" />
|
||||
<uc:PopUpEdit
|
||||
x:Name="popupedit_file"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="2"
|
||||
Height="23"
|
||||
Margin="3"
|
||||
Cursor="Arrow"
|
||||
DeleteButtonVisibility="Collapsed"
|
||||
IsReadOnly="True"
|
||||
PopUpClick="popupedit_file_PopUpClick_1" />
|
||||
<Label
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Top"
|
||||
Content="Beschreibung" />
|
||||
<TextBox
|
||||
x:Name="textbox_beschreibung"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="2"
|
||||
Height="50"
|
||||
Margin="3" />
|
||||
<Button
|
||||
x:Name="button_uploadFile"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Height="25"
|
||||
Margin="3"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Click="button_uploadDocument_Click"
|
||||
Content="Hochladen" />
|
||||
<Button
|
||||
x:Name="button_cancelFileUpload"
|
||||
Grid.Row="4"
|
||||
Grid.Column="2"
|
||||
Height="25"
|
||||
Margin="3"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Bottom"
|
||||
Click="button_cancelFileUpload_Click"
|
||||
Content="Abbrechen" />
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Border>
|
||||
@@ -211,8 +338,20 @@
|
||||
<!--<Label Grid.Column="1" Margin="25 1 0 0" FontSize="13">Beschreibung</Label>
|
||||
<TextBox Name="textbox_fileNotice" Margin="3" Height="23" Grid.Column="2" Grid.Row="0" />-->
|
||||
|
||||
<ProgressBar Height="20" Margin="2" Name="progressbar_upload" Grid.Row="1" Grid.ColumnSpan="3" Minimum="0" Maximum="1" />
|
||||
<Label HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="2" Grid.ColumnSpan="3" Name="text_progress" />
|
||||
<ProgressBar
|
||||
Name="progressbar_upload"
|
||||
Grid.Row="1"
|
||||
Grid.ColumnSpan="3"
|
||||
Height="20"
|
||||
Margin="2"
|
||||
Maximum="1"
|
||||
Minimum="0" />
|
||||
<Label
|
||||
Name="text_progress"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
|
||||
|
||||
@@ -242,46 +381,106 @@
|
||||
</Grid>-->
|
||||
|
||||
</GroupBox>
|
||||
<dxg:GridControl Grid.Row="1" Margin="2,3,5,5" DataSource="{Binding SelectedItem.Files, ElementName=treeview}" x:Name="datagrid_documents" Grid.Column="1">
|
||||
<dxg:GridControl
|
||||
x:Name="datagrid_documents"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Margin="2,3,5,5"
|
||||
DataSource="{Binding SelectedItem.Files, ElementName=treeview}">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn FieldName="FileName" Header="" FixedWidth="True" Width="24" ReadOnly="True" Visible="{Binding Converter={StaticResource DeleteButtonVisibilityConverter}}">
|
||||
<dxg:GridColumn
|
||||
Width="24"
|
||||
FieldName="FileName"
|
||||
FixedWidth="True"
|
||||
Header=""
|
||||
ReadOnly="True"
|
||||
Visible="{Binding Converter={StaticResource DeleteButtonVisibilityConverter}}">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Button Content="r" FontFamily="Webdings" Click="DeleteButton_Click" Width="20" Height="20" VerticalAlignment="Center" ToolTip="Löschen" />
|
||||
<Button
|
||||
Width="20"
|
||||
Height="20"
|
||||
VerticalAlignment="Center"
|
||||
Click="DeleteButton_Click"
|
||||
Content="r"
|
||||
FontFamily="Webdings"
|
||||
ToolTip="Löschen" />
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn Header="" FixedWidth="True" Width="24" ReadOnly="True" Visible="{Binding Converter={StaticResource EditButtonVisibilityConverter}}">
|
||||
<dxg:GridColumn
|
||||
Width="24"
|
||||
FixedWidth="True"
|
||||
Header=""
|
||||
ReadOnly="True"
|
||||
Visible="{Binding Converter={StaticResource EditButtonVisibilityConverter}}">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Button Content="!" FontFamily="Wingdings" Click="EditButton_Click" Width="20" Height="20" VerticalAlignment="Center" ToolTip="Bearbeiten"/>
|
||||
<Button
|
||||
Width="20"
|
||||
Height="20"
|
||||
VerticalAlignment="Center"
|
||||
Click="EditButton_Click"
|
||||
Content="!"
|
||||
FontFamily="Wingdings"
|
||||
ToolTip="Bearbeiten" />
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="InsertedOn" AllowEditing="False" Header="hinterlegt am" Width="*" />
|
||||
<dxg:GridColumn FieldName="InsertedBy" AllowEditing="False" Header="hinterlegt von" Width="*" />
|
||||
<dxg:GridColumn FieldName="FileName" AllowEditing="False" Header="Dateiname" Width="*" />
|
||||
<dxg:GridColumn FieldName="Description" AllowEditing="False" Header="Beschreibung" Width="*" />
|
||||
<dxg:GridColumn FieldName="URL" Header="Herunterladen" Width="100" MinWidth="90" x:Name="ColumnDownload">
|
||||
<dxg:GridColumn
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="InsertedOn"
|
||||
Header="hinterlegt am" />
|
||||
<dxg:GridColumn
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="InsertedBy"
|
||||
Header="hinterlegt von" />
|
||||
<dxg:GridColumn
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="FileName"
|
||||
Header="Dateiname" />
|
||||
<dxg:GridColumn
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="Description"
|
||||
Header="Beschreibung" />
|
||||
<dxg:GridColumn
|
||||
x:Name="ColumnDownload"
|
||||
Width="100"
|
||||
MinWidth="90"
|
||||
FieldName="URL"
|
||||
Header="Herunterladen">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock>
|
||||
<Hyperlink TargetName="inexistent" NavigateUri="{Binding Path=Value, Converter={StaticResource DownloadURLConverter}}" RequestNavigate="Hyperlink_OnRequestNavigate">
|
||||
<TextBlock Text="herunterladen" />
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
<Hyperlink
|
||||
NavigateUri="{Binding Path=Value, Converter={StaticResource DownloadURLConverter}}"
|
||||
RequestNavigate="Hyperlink_OnRequestNavigate"
|
||||
TargetName="inexistent">
|
||||
<TextBlock Text="herunterladen" />
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView AutoWidth="false" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell" x:Name="DocumentTableView"/>
|
||||
<dxg:TableView
|
||||
x:Name="DocumentTableView"
|
||||
AutoWidth="false"
|
||||
NavigationStyle="Cell"
|
||||
ShowGroupPanel="False"
|
||||
ShowGroupedColumns="false"
|
||||
ShowTotalSummary="False" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</Grid>
|
||||
</dxlc:LayoutGroup>
|
||||
</dxlc:LayoutControl>
|
||||
<!-- Hier kommt das Dokumentenzeug hin wenn Templates wieder angeschaltet werden/-->
|
||||
<!-- Hier kommt das Dokumentenzeug hin wenn Templates wieder angeschaltet werden/ -->
|
||||
|
||||
</TabItem>
|
||||
|
||||
@@ -289,33 +488,57 @@
|
||||
|
||||
<TabItem Selector.IsSelected="True">
|
||||
<TabItem.Header>
|
||||
<TextBlock Text="{markup:Translate Vorlagen}" TextElement.FontSize="16" TextElement.Foreground="{StaticResource TabItemHotTextBrush}" TextElement.FontFamily="Microsoft Sans Serif" Padding="3"></TextBlock>
|
||||
<TextBlock
|
||||
Padding="3"
|
||||
Text="{markup:Translate Vorlagen}"
|
||||
TextElement.FontFamily="Microsoft Sans Serif"
|
||||
TextElement.FontSize="16"
|
||||
TextElement.Foreground="{StaticResource TabItemHotTextBrush}" />
|
||||
</TabItem.Header>
|
||||
<dxlc:LayoutControl Orientation="Horizontal">
|
||||
<dxlc:LayoutGroup dxlc:LayoutControl.AllowHorizontalSizing="True" Width="300">
|
||||
<Grid Margin="0,0,0,0" >
|
||||
<Grid.RowDefinitions>
|
||||
<dxlc:LayoutGroup Width="300" dxlc:LayoutControl.AllowHorizontalSizing="True">
|
||||
<Grid Margin="0,0,0,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
|
||||
<dxg:TreeListControl x:Name="template_treeview_control" Grid.Column="0" DefaultSorting="Name" Margin="2,3,2,5" VerticalAlignment="Stretch" dx:ThemeManager.ThemeName="Office2010Black">
|
||||
<dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListColumn FieldName="Name" AllowSorting="True"/>
|
||||
</dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListControl.View>
|
||||
<dxg:TreeListView x:Name="TemplateTreeView" PreviewMouseLeftButtonDown="TemplateTreeView_PreviewMouseLeftButtonDown" ShowColumnHeaders="False" AutoWidth="True"
|
||||
ShowIndicator="False" ShowHorizontalLines="False" ShowVerticalLines="False" FocusedRowChanged="TemplateTreeView_FocusedRowChanged"
|
||||
LostFocus="TemplateTreeView_LostFocus" NodeExpanding="templateTreeListView_NodeExpanding" AllowEditing="False" ShowNodeImages="True" PrintNodeImages="True"
|
||||
KeyFieldName="{Binding DocumentTreeItemVM.DocTreeItemOid}" ParentFieldName="Binding DocumentTreeItemVM.ParentOid" ContextMenu="{StaticResource templatecm}"
|
||||
VerticalScrollbarVisibility="Auto" HorizontalScrollbarVisibility="Auto">
|
||||
</dxg:TreeListView>
|
||||
</dxg:TreeListControl.View>
|
||||
</dxg:TreeListControl>
|
||||
<!--
|
||||
<dxg:TreeListControl
|
||||
x:Name="template_treeview_control"
|
||||
Grid.Column="0"
|
||||
Margin="2,3,2,5"
|
||||
VerticalAlignment="Stretch"
|
||||
dx:ThemeManager.ThemeName="Office2010Black"
|
||||
DefaultSorting="Name">
|
||||
<dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListColumn AllowSorting="True" FieldName="Name" />
|
||||
</dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListControl.View>
|
||||
<dxg:TreeListView
|
||||
x:Name="TemplateTreeView"
|
||||
AllowEditing="False"
|
||||
AutoWidth="True"
|
||||
ContextMenu="{StaticResource templatecm}"
|
||||
FocusedRowChanged="TemplateTreeView_FocusedRowChanged"
|
||||
HorizontalScrollbarVisibility="Auto"
|
||||
KeyFieldName="{Binding DocumentTreeItemVM.DocTreeItemOid}"
|
||||
LostFocus="TemplateTreeView_LostFocus"
|
||||
NodeExpanding="templateTreeListView_NodeExpanding"
|
||||
ParentFieldName="Binding DocumentTreeItemVM.ParentOid"
|
||||
PreviewMouseLeftButtonDown="TemplateTreeView_PreviewMouseLeftButtonDown"
|
||||
PrintNodeImages="True"
|
||||
ShowColumnHeaders="False"
|
||||
ShowHorizontalLines="False"
|
||||
ShowIndicator="False"
|
||||
ShowNodeImages="True"
|
||||
ShowVerticalLines="False"
|
||||
VerticalScrollbarVisibility="Auto" />
|
||||
</dxg:TreeListControl.View>
|
||||
</dxg:TreeListControl>
|
||||
<!--
|
||||
<Grid Grid.Column="2" Grid.Row="0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
@@ -348,9 +571,9 @@
|
||||
<ProgressBar Height="20" Margin="2" Name="progressbar_upload" Grid.Row="1" Grid.ColumnSpan="3" Minimum="0" Maximum="1" />
|
||||
<Label HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="2" Grid.ColumnSpan="3" Name="text_progress" />
|
||||
</Grid>
|
||||
-->
|
||||
-->
|
||||
|
||||
<!--
|
||||
<!--
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
@@ -374,42 +597,93 @@
|
||||
<ProgressBar Height="20" Margin="3" Name="progressbar_upload" Grid.Row="2" Grid.ColumnSpan="5" Minimum="0" Maximum="1" />
|
||||
<Label VerticalAlignment="Center" Grid.Row="2" Grid.ColumnSpan="5" HorizontalAlignment="Center" Name="text_progress" />
|
||||
</Grid>
|
||||
|
||||
|
||||
|
||||
|
||||
</GroupBox>
|
||||
-->
|
||||
|
||||
</Grid>
|
||||
-->
|
||||
|
||||
</Grid>
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup dxlc:LayoutControl.AllowHorizontalSizing="True">
|
||||
<dxg:GridControl Grid.Row="0" Margin="2,3,5,5" DataSource="{Binding SelectedItem.Files, ElementName=treeview}" x:Name="datagrid_templates" Grid.Column="1">
|
||||
<dxg:GridControl
|
||||
x:Name="datagrid_templates"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Margin="2,3,5,5"
|
||||
DataSource="{Binding SelectedItem.Files, ElementName=treeview}">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn FieldName="FileName" Header="" FixedWidth="True" Width="24" ReadOnly="True">
|
||||
<dxg:GridColumn
|
||||
Width="24"
|
||||
FieldName="FileName"
|
||||
FixedWidth="True"
|
||||
Header=""
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Button Content="r" FontFamily="Webdings" Click="TemplateDeleteButton_Click" Width="20" Height="20" VerticalAlignment="Center" Margin="1"/>
|
||||
<Button
|
||||
Width="20"
|
||||
Height="20"
|
||||
Margin="1"
|
||||
VerticalAlignment="Center"
|
||||
Click="TemplateDeleteButton_Click"
|
||||
Content="r"
|
||||
FontFamily="Webdings" />
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="Name" AllowEditing="False" Header="Dateiname" Width="*" />
|
||||
<dxg:GridColumn FieldName="Beschreibung" AllowEditing="False" Header="Beschreibung" Width="*" />
|
||||
<dxg:GridColumn FieldName="FileEdit" Header="" FixedWidth="True" Width="80" ReadOnly="True">
|
||||
<dxg:GridColumn
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="Name"
|
||||
Header="Dateiname" />
|
||||
<dxg:GridColumn
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="Beschreibung"
|
||||
Header="Beschreibung" />
|
||||
<dxg:GridColumn
|
||||
Width="80"
|
||||
FieldName="FileEdit"
|
||||
FixedWidth="True"
|
||||
Header=""
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Button Content="Bearbeiten" Click="EditTemplate_Click" Width="75" Height="20" VerticalAlignment="Center" />
|
||||
<Button
|
||||
Width="75"
|
||||
Height="20"
|
||||
VerticalAlignment="Center"
|
||||
Click="EditTemplate_Click"
|
||||
Content="Bearbeiten" />
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="PrintFile" Header="" FixedWidth="True" Width="80" ReadOnly="True">
|
||||
<dxg:GridColumn
|
||||
Width="80"
|
||||
FieldName="PrintFile"
|
||||
FixedWidth="True"
|
||||
Header=""
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Button Content="Drucken" Click="PrintTemplate_Click" Width="75" Height="20" VerticalAlignment="Center" />
|
||||
<Button
|
||||
Width="75"
|
||||
Height="20"
|
||||
VerticalAlignment="Center"
|
||||
Click="PrintTemplate_Click"
|
||||
Content="Drucken" />
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView AutoWidth="false" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell" x:Name="TemplateTableView"/>
|
||||
<dxg:TableView
|
||||
x:Name="TemplateTableView"
|
||||
AutoWidth="false"
|
||||
NavigationStyle="Cell"
|
||||
ShowGroupPanel="False"
|
||||
ShowGroupedColumns="false"
|
||||
ShowTotalSummary="False" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</dxlc:LayoutGroup>
|
||||
@@ -418,9 +692,9 @@
|
||||
</TabControl>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
|
||||
</uc:ShadowChrome>
|
||||
|
||||
</Grid>
|
||||
|
||||
|
||||
</localView:BeWoView>
|
||||
@@ -1,4 +1,4 @@
|
||||
<localView:BeWoView x:Class="BeWo.View.Master.FinanceView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls" xmlns:val="clr-namespace:BeWo.Validation" xmlns:localView="clr-namespace:BeWo.View" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True">
|
||||
<localView:BeWoView x:Class="BeWo.View.Master.FinanceView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls" xmlns:val="clr-namespace:BeWo.Validation" xmlns:localView="clr-namespace:BeWo.View" xmlns:accounting="clr-namespace:BeWo.View.Detail.Accounting" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True">
|
||||
|
||||
<Grid>
|
||||
<uc:ShadowChrome>
|
||||
@@ -40,7 +40,9 @@
|
||||
Selector.Selected="tabitem_collectiveinvoice_Selected" />
|
||||
<TabItem Header="Allgemeine Rechnungen" Name="tabitem_otherinvoice" Selector.Selected="tabitem_otherinvoice_Selected" />
|
||||
<TabItem Header="Rechnungsübersicht" Name="tabitem_overviewinvoice" Selector.Selected="tabitem_overviewinvoice_Selected" />
|
||||
<TabItem Header="GKV-Abrechnungen" Name="tabitem_gkvabrechnung" Selector.Selected="tabitem_gkvabrechnung_Selected" />
|
||||
<TabItem Header="GKV-Abrechnungen" Name="tabitem_gkvabrechnung">
|
||||
<accounting:GkvAbrechnungOverview/>
|
||||
</TabItem>
|
||||
<TabItem Header="Digitale Abrechnung" Name="tabitem_gkvabrechnung_alt" Selector.Selected="tabitem_gkvabrechnung_alt_Selected" />
|
||||
<TabItem Header="Bargeldverwaltung" Name="tabitem_bargeldverwaltung" Selector.Selected="tabitem_bargeldverwaltung_Selected"/>
|
||||
<TabItem Header="Dokumente" Name="tabitem_documents" Selector.Selected="tabitem_documents_Selected" />
|
||||
|
||||
@@ -25,6 +25,13 @@ namespace BeWo.View.Master
|
||||
InitializeComponent();
|
||||
|
||||
InitRights();
|
||||
|
||||
#if DEBUG
|
||||
if(DebugConfig.CurrentConfig is DebugConfig config && config.SelectView == UIContext.Finance)
|
||||
{
|
||||
root.SelectedIndex = config.SelectIndex ?? 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public override bool IsDirty
|
||||
@@ -146,14 +153,16 @@ namespace BeWo.View.Master
|
||||
tabitem_gkvabrechnung_alt.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
foreach (TabItem tabitem in root.Items)
|
||||
{
|
||||
if (tabitem.Visibility == Visibility.Visible)
|
||||
{
|
||||
tabitem.IsSelected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
root.SelectedIndex = 0;
|
||||
|
||||
//foreach (TabItem tabitem in root.Items)
|
||||
//{
|
||||
// if (tabitem.Visibility == Visibility.Visible)
|
||||
// {
|
||||
// tabitem.IsSelected = true;
|
||||
// break;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
private void tabitem_equityinvoice_Selected(object sender, RoutedEventArgs e)
|
||||
@@ -245,14 +254,6 @@ namespace BeWo.View.Master
|
||||
}
|
||||
}
|
||||
|
||||
private void tabitem_gkvabrechnung_Selected(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_OpenViews.ContainsKey(tabitem_gkvabrechnung) || _SavePerformed)
|
||||
{
|
||||
AddView(tabitem_gkvabrechnung, new GkvAbrechnungOverview(new GkvAbrechnungListVM(null)));
|
||||
}
|
||||
}
|
||||
|
||||
private void tabitem_gkvabrechnung_alt_Selected(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!_OpenViews.ContainsKey(tabitem_gkvabrechnung_alt) || _SavePerformed)
|
||||
|
||||
@@ -16,381 +16,433 @@ using DevExpress.Xpf.Core;
|
||||
|
||||
namespace BeWo.ViewModel
|
||||
{
|
||||
public class GkvAbrechnungVM : AbstractDCMapperVM<GkvAbrechnungDC>
|
||||
{
|
||||
public static string PropertyName_AbrechnungsZeitraumStart = "AbrechnungsZeitraumStart";
|
||||
public static string PropertyName_AbrechnungsZeitraumEnde = "AbrechnungsZeitraumEnde";
|
||||
|
||||
public static string PropertyName_ErstelltAm = "ErstelltAm";
|
||||
|
||||
private long? _GkvAbrechnungOid;
|
||||
private long? _GkvAbrechnungVersion;
|
||||
private string _Notice;
|
||||
|
||||
private DateTime? _AbrechnungsZeitraumStart;
|
||||
private DateTime? _AbrechnungsZeitraumEnde;
|
||||
|
||||
private DateTime _ErstelltAm;
|
||||
|
||||
private decimal _Betrag;
|
||||
private bool _Bezahlt;
|
||||
|
||||
internal bool _IsChecked;
|
||||
|
||||
private List<InvoiceBaseVM> _InvoiceBases2;
|
||||
private BindingList<InvoiceBaseVM> _InvoiceBases;
|
||||
private OrganisationDC _Organisation;
|
||||
|
||||
private List<GkvTransferProtokollDC> _TransferProtokolle;
|
||||
|
||||
public GkvAbrechnungVM(GkvAbrechnungDC pDC) : base(pDC, !pDC.GkvAbrechnungOid.HasValue)
|
||||
{
|
||||
_InvoiceBases = new BindingList<InvoiceBaseVM>();
|
||||
}
|
||||
|
||||
#region
|
||||
|
||||
public string AbrechnungsZeitraum => $"{AbrechnungsZeitraumStart.Value.ToShortDateString()} - {AbrechnungsZeitraumEnde.Value.ToShortDateString()}";
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime? AbrechnungsZeitraumStart
|
||||
{
|
||||
get { return this._AbrechnungsZeitraumStart; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._AbrechnungsZeitraumStart, value))
|
||||
{
|
||||
this._AbrechnungsZeitraumStart = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.AbrechnungsZeitraumStart, value), PropertyName_AbrechnungsZeitraumStart);
|
||||
this.FirePropertyChanged(PropertyName_AbrechnungsZeitraumStart);
|
||||
|
||||
// RE893748923
|
||||
// var day = value.Value.Day;
|
||||
// AbrechnungsZeitraumEnde = value.Value.AddDays(1 - day).AddMonths(1).AddDays(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime? AbrechnungsZeitraumEnde
|
||||
{
|
||||
get { return this._AbrechnungsZeitraumEnde; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._AbrechnungsZeitraumEnde, value))
|
||||
{
|
||||
this._AbrechnungsZeitraumEnde = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.AbrechnungsZeitraumEnde, value), PropertyName_AbrechnungsZeitraumEnde);
|
||||
this.FirePropertyChanged(PropertyName_AbrechnungsZeitraumEnde);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime ErstelltAm
|
||||
{
|
||||
get { return this._ErstelltAm; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._ErstelltAm, value))
|
||||
{
|
||||
this._ErstelltAm = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ErstelltAm, value), nameof(ErstelltAm));
|
||||
this.FirePropertyChanged(nameof(ErstelltAm));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public long? GkvAbrechnungOid
|
||||
{
|
||||
get { return this._GkvAbrechnungOid; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._GkvAbrechnungOid, value))
|
||||
{
|
||||
this._GkvAbrechnungOid = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.GkvAbrechnungOid, value), nameof(GkvAbrechnungOid));
|
||||
this.FirePropertyChanged(nameof(GkvAbrechnungOid));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public long? GkvAbrechnungVersion
|
||||
{
|
||||
get { return this._GkvAbrechnungOid; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._GkvAbrechnungVersion, value))
|
||||
{
|
||||
this._GkvAbrechnungVersion = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.GkvAbrechnungVersion, value), nameof(GkvAbrechnungVersion));
|
||||
this.FirePropertyChanged(nameof(GkvAbrechnungVersion));
|
||||
}
|
||||
}
|
||||
}
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string Notice
|
||||
{
|
||||
get { return this._Notice; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Notice, value))
|
||||
{
|
||||
this._Notice = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Notice, value), nameof(Notice));
|
||||
this.FirePropertyChanged(nameof(Notice));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public decimal Betrag
|
||||
{
|
||||
get { return this._Betrag; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Betrag, value))
|
||||
{
|
||||
this._Betrag = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Betrag, value), nameof(Betrag));
|
||||
this.FirePropertyChanged(nameof(Betrag));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public bool Bezahlt
|
||||
{
|
||||
get { return _Bezahlt; }
|
||||
|
||||
set
|
||||
{
|
||||
if (AreDifferent(this._Bezahlt, value))
|
||||
{
|
||||
_Bezahlt = value;
|
||||
StoreDirtyInformation(AreDifferent(DataContract.Bezahlt, value), nameof(Bezahlt));
|
||||
FirePropertyChanged(nameof(Bezahlt));
|
||||
FirePropertyChanged(nameof(GkvState));
|
||||
FirePropertyChanged(nameof(Fehlermeldung));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public GkvState GkvState
|
||||
{
|
||||
get { return GetState(this); }
|
||||
}
|
||||
|
||||
public bool IsChecked
|
||||
{
|
||||
get { return _IsChecked; }
|
||||
|
||||
set
|
||||
{
|
||||
if (AreDifferent(_IsChecked, value))
|
||||
{
|
||||
_IsChecked = value;
|
||||
FirePropertyChanged("IsChecked");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<InvoiceBaseVM> InvoiceBases2
|
||||
{
|
||||
get { return _InvoiceBases2; }
|
||||
set { _InvoiceBases2 = value; }
|
||||
}
|
||||
|
||||
public BindingList<InvoiceBaseVM> InvoiceBases
|
||||
{
|
||||
get { return _InvoiceBases; }
|
||||
set { _InvoiceBases = value; }
|
||||
}
|
||||
|
||||
public List<GkvTransferProtokollDC> TransferProtokolle
|
||||
{
|
||||
get { return _TransferProtokolle; }
|
||||
set
|
||||
{
|
||||
_TransferProtokolle = value;
|
||||
FirePropertyChanged(nameof(TransferProtokolle));
|
||||
FirePropertyChanged(nameof(GkvState));
|
||||
FirePropertyChanged(nameof(Fehlermeldung));
|
||||
FirePropertyChanged(nameof(LastTransferDateTime));
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public OrganisationDC Organisation
|
||||
{
|
||||
get { return this._Organisation; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Organisation, value))
|
||||
{
|
||||
this._Organisation = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Organisation, value), nameof(Organisation));
|
||||
this.FirePropertyChanged(nameof(Organisation));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
public string RecipientString
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_InvoiceBases2 != null && _InvoiceBases2.Any())
|
||||
{
|
||||
return _InvoiceBases2.First().RecipientString;
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public string Fehlermeldung
|
||||
{
|
||||
get
|
||||
{
|
||||
var last = TransferProtokolle?.LastOrDefault();
|
||||
|
||||
if (last is null || string.IsNullOrWhiteSpace(last.Fehlernachricht))
|
||||
return null;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(last.Fehlertitel))
|
||||
return last.Fehlernachricht;
|
||||
|
||||
return $"{last.Fehlertitel}: {last.Fehlernachricht}";
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime? LastTransferDateTime
|
||||
{
|
||||
get
|
||||
{
|
||||
var last = TransferProtokolle?.LastOrDefault();
|
||||
|
||||
if (last is null)
|
||||
return null;
|
||||
|
||||
return last.ErstelltAm;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static GkvState GetState(GkvAbrechnungVM vm)
|
||||
{
|
||||
return GkvAbrechnungExtensions.GetState(
|
||||
vm,
|
||||
() => vm.Bezahlt,
|
||||
() => vm.TransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
(x) => x.ErstelltAm.Value);
|
||||
}
|
||||
|
||||
protected override void InitByDataContract(GkvAbrechnungDC pDataContract)
|
||||
{
|
||||
_AbrechnungsZeitraumStart = pDataContract.AbrechnungsZeitraumStart;
|
||||
_AbrechnungsZeitraumEnde = pDataContract.AbrechnungsZeitraumEnde;
|
||||
|
||||
_ErstelltAm = pDataContract.ErstelltAm;
|
||||
|
||||
_GkvAbrechnungOid = pDataContract.GkvAbrechnungOid;
|
||||
_GkvAbrechnungVersion = pDataContract.GkvAbrechnungVersion;
|
||||
|
||||
_Notice = pDataContract.Notice;
|
||||
|
||||
_Betrag = pDataContract.Betrag;
|
||||
_Bezahlt = pDataContract.Bezahlt;
|
||||
|
||||
if (pDataContract.InvoiceBases != null)
|
||||
{
|
||||
_InvoiceBases2 = pDataContract.InvoiceBases.Select(x => new InvoiceBaseVM(x, true)).ToList();
|
||||
_InvoiceBases = new BindingList<InvoiceBaseVM>(_InvoiceBases2);
|
||||
}
|
||||
|
||||
if (pDataContract.TransferProtokolle != null)
|
||||
{
|
||||
_TransferProtokolle = new List<GkvTransferProtokollDC>(pDataContract.TransferProtokolle);
|
||||
}
|
||||
|
||||
_Organisation = pDataContract.Organisation;
|
||||
}
|
||||
protected override GkvAbrechnungDC MapToDataContract(GkvAbrechnungDC pDataContract, bool doCommit)
|
||||
{
|
||||
pDataContract.AbrechnungsZeitraumStart = _AbrechnungsZeitraumStart;
|
||||
pDataContract.AbrechnungsZeitraumEnde = _AbrechnungsZeitraumEnde;
|
||||
|
||||
pDataContract.ErstelltAm = _ErstelltAm;
|
||||
|
||||
pDataContract.GkvAbrechnungOid = _GkvAbrechnungOid;
|
||||
pDataContract.GkvAbrechnungVersion = _GkvAbrechnungVersion;
|
||||
|
||||
pDataContract.Notice = _Notice;
|
||||
pDataContract.Betrag = _Betrag;
|
||||
pDataContract.Bezahlt = _Bezahlt;
|
||||
|
||||
if (_InvoiceBases != null && _InvoiceBases.Any())
|
||||
pDataContract.InvoiceBases = _InvoiceBases.Where(x => x.IsChecked).Select(vm => vm.CommitToDataContract()).ToList();
|
||||
else if (_InvoiceBases2 != null && _InvoiceBases2.Any())
|
||||
pDataContract.InvoiceBases = _InvoiceBases2.Where(x => x.IsChecked).Select(vm => vm.CommitToDataContract()).ToList();
|
||||
|
||||
pDataContract.Organisation = _Organisation;
|
||||
pDataContract.TransferProtokolle = _TransferProtokolle?.ToList();
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
|
||||
public void SendGkvAbrechnung()
|
||||
{
|
||||
var req = new GkvAbrechnungSendRequestDC();
|
||||
|
||||
req.GkvAbrechnungOid = GkvAbrechnungOid.Value;
|
||||
|
||||
ServiceFacade.DoAccountingServiceAsync(s => s.SendNewGkvAbrechnung(req),
|
||||
cb => Application.Current.Dispatch(() => Update(cb)), true);
|
||||
}
|
||||
|
||||
public void Update(GkvAbrechnungSendResponseDC cb)
|
||||
{
|
||||
var dc = cb.GkvAbrechnungDC;
|
||||
|
||||
if(dc is null)
|
||||
{
|
||||
MessageBox.Show(Application.Current.MainWindow, "Unerwarteter Übertragungsfehler");
|
||||
return;
|
||||
}
|
||||
|
||||
GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
|
||||
TransferProtokolle = dc.TransferProtokolle.ToList();
|
||||
|
||||
var protokoll = cb.TransferProtokoll;
|
||||
|
||||
if (protokoll.Fehlerlevel == GkvTransferFehlerlevel.Soft)
|
||||
{
|
||||
MessageBox.Show(Application.Current.MainWindow, protokoll.Fehlernachricht, protokoll.Fehlertitel);
|
||||
}
|
||||
else if (protokoll.Fehlerlevel == GkvTransferFehlerlevel.Fatal)
|
||||
{
|
||||
BeWoApp.ShowError(protokoll.Fehlertitel + ": " + protokoll.Fehlernachricht, null, false, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(Application.Current.MainWindow, "Ihre Sendung wurde korrekt übertragen");
|
||||
}
|
||||
}
|
||||
}
|
||||
public class GkvAbrechnungVM : AbstractDCMapperVM<GkvAbrechnungDC>
|
||||
{
|
||||
public static string PropertyName_AbrechnungsZeitraumStart = "AbrechnungsZeitraumStart";
|
||||
public static string PropertyName_AbrechnungsZeitraumEnde = "AbrechnungsZeitraumEnde";
|
||||
|
||||
public static string PropertyName_ErstelltAm = "ErstelltAm";
|
||||
|
||||
private long? _GkvAbrechnungOid;
|
||||
private long? _GkvAbrechnungVersion;
|
||||
private string _Notice;
|
||||
|
||||
private DateTime? _AbrechnungsZeitraumStart;
|
||||
private DateTime? _AbrechnungsZeitraumEnde;
|
||||
|
||||
private DateTime _ErstelltAm;
|
||||
|
||||
private decimal _Betrag;
|
||||
private bool _Bezahlt;
|
||||
private bool _UrbelegeGesendet;
|
||||
private GkvVerfahrensstufe _Verfahrensstufe;
|
||||
|
||||
internal bool _IsChecked;
|
||||
|
||||
private List<InvoiceBaseVM> _InvoiceBases2;
|
||||
private BindingList<InvoiceBaseVM> _InvoiceBases;
|
||||
private OrganisationDC _Organisation;
|
||||
|
||||
private List<GkvTransferProtokollDC> _TransferProtokolle;
|
||||
|
||||
public GkvAbrechnungVM(GkvAbrechnungDC pDC) : base(pDC, !pDC.GkvAbrechnungOid.HasValue)
|
||||
{
|
||||
_InvoiceBases = new BindingList<InvoiceBaseVM>();
|
||||
}
|
||||
|
||||
#region
|
||||
|
||||
public string AbrechnungsZeitraum => $"{AbrechnungsZeitraumStart.Value.ToShortDateString()} - {AbrechnungsZeitraumEnde.Value.ToShortDateString()}";
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime? AbrechnungsZeitraumStart
|
||||
{
|
||||
get { return this._AbrechnungsZeitraumStart; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._AbrechnungsZeitraumStart, value))
|
||||
{
|
||||
this._AbrechnungsZeitraumStart = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.AbrechnungsZeitraumStart, value), PropertyName_AbrechnungsZeitraumStart);
|
||||
this.FirePropertyChanged(PropertyName_AbrechnungsZeitraumStart);
|
||||
|
||||
// RE893748923
|
||||
// var day = value.Value.Day;
|
||||
// AbrechnungsZeitraumEnde = value.Value.AddDays(1 - day).AddMonths(1).AddDays(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime? AbrechnungsZeitraumEnde
|
||||
{
|
||||
get { return this._AbrechnungsZeitraumEnde; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._AbrechnungsZeitraumEnde, value))
|
||||
{
|
||||
this._AbrechnungsZeitraumEnde = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.AbrechnungsZeitraumEnde, value), PropertyName_AbrechnungsZeitraumEnde);
|
||||
this.FirePropertyChanged(PropertyName_AbrechnungsZeitraumEnde);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public DateTime ErstelltAm
|
||||
{
|
||||
get { return this._ErstelltAm; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._ErstelltAm, value))
|
||||
{
|
||||
this._ErstelltAm = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ErstelltAm, value), nameof(ErstelltAm));
|
||||
this.FirePropertyChanged(nameof(ErstelltAm));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public long? GkvAbrechnungOid
|
||||
{
|
||||
get { return this._GkvAbrechnungOid; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._GkvAbrechnungOid, value))
|
||||
{
|
||||
this._GkvAbrechnungOid = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.GkvAbrechnungOid, value), nameof(GkvAbrechnungOid));
|
||||
this.FirePropertyChanged(nameof(GkvAbrechnungOid));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public long? GkvAbrechnungVersion
|
||||
{
|
||||
get { return this._GkvAbrechnungOid; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._GkvAbrechnungVersion, value))
|
||||
{
|
||||
this._GkvAbrechnungVersion = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.GkvAbrechnungVersion, value), nameof(GkvAbrechnungVersion));
|
||||
this.FirePropertyChanged(nameof(GkvAbrechnungVersion));
|
||||
}
|
||||
}
|
||||
}
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string Notice
|
||||
{
|
||||
get { return this._Notice; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Notice, value))
|
||||
{
|
||||
this._Notice = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Notice, value), nameof(Notice));
|
||||
this.FirePropertyChanged(nameof(Notice));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public decimal Betrag
|
||||
{
|
||||
get { return this._Betrag; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Betrag, value))
|
||||
{
|
||||
this._Betrag = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Betrag, value), nameof(Betrag));
|
||||
this.FirePropertyChanged(nameof(Betrag));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public bool Bezahlt
|
||||
{
|
||||
get { return _Bezahlt; }
|
||||
|
||||
set
|
||||
{
|
||||
if (AreDifferent(this._Bezahlt, value))
|
||||
{
|
||||
_Bezahlt = value;
|
||||
StoreDirtyInformation(AreDifferent(DataContract.Bezahlt, value), nameof(Bezahlt));
|
||||
FirePropertyChanged(nameof(Bezahlt));
|
||||
FirePropertyChanged(nameof(GkvState));
|
||||
FirePropertyChanged(nameof(Fehlermeldung));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool UrbelegeGesendet
|
||||
{
|
||||
get { return _UrbelegeGesendet; }
|
||||
|
||||
set
|
||||
{
|
||||
if (!AreDifferent(_UrbelegeGesendet, value))
|
||||
return;
|
||||
_UrbelegeGesendet = value;
|
||||
StoreDirtyInformation(AreDifferent(DataContract.UrbelegeGesendet, value), nameof(UrbelegeGesendet));
|
||||
FirePropertyChanged(nameof(UrbelegeGesendet));
|
||||
FirePropertyChanged(nameof(GkvState));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public GkvState GkvState
|
||||
{
|
||||
get { return GetState(this); }
|
||||
}
|
||||
|
||||
public bool IsChecked
|
||||
{
|
||||
get { return _IsChecked; }
|
||||
|
||||
set
|
||||
{
|
||||
if (AreDifferent(_IsChecked, value))
|
||||
{
|
||||
_IsChecked = value;
|
||||
FirePropertyChanged("IsChecked");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<InvoiceBaseVM> InvoiceBases2
|
||||
{
|
||||
get { return _InvoiceBases2; }
|
||||
set { _InvoiceBases2 = value; }
|
||||
}
|
||||
|
||||
public BindingList<InvoiceBaseVM> InvoiceBases
|
||||
{
|
||||
get { return _InvoiceBases; }
|
||||
set { _InvoiceBases = value; }
|
||||
}
|
||||
|
||||
public List<GkvTransferProtokollDC> TransferProtokolle
|
||||
{
|
||||
get { return _TransferProtokolle; }
|
||||
set
|
||||
{
|
||||
_TransferProtokolle = value;
|
||||
FirePropertyChanged(nameof(TransferProtokolle));
|
||||
FirePropertyChanged(nameof(GkvState));
|
||||
FirePropertyChanged(nameof(Fehlermeldung));
|
||||
FirePropertyChanged(nameof(LastTransferDateTime));
|
||||
}
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public OrganisationDC Organisation
|
||||
{
|
||||
get { return this._Organisation; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Organisation, value))
|
||||
{
|
||||
this._Organisation = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Organisation, value), nameof(Organisation));
|
||||
this.FirePropertyChanged(nameof(Organisation));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public GkvVerfahrensstufe Verfahrensstufe
|
||||
{
|
||||
get { return this._Verfahrensstufe; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Verfahrensstufe, value))
|
||||
{
|
||||
this._Verfahrensstufe = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Verfahrensstufe, value), nameof(Verfahrensstufe));
|
||||
this.FirePropertyChanged(nameof(Verfahrensstufe));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int VerfahrensstufeInt
|
||||
{
|
||||
get { return (int)Verfahrensstufe; }
|
||||
|
||||
set
|
||||
{
|
||||
if (!AreDifferent(this.VerfahrensstufeInt, value))
|
||||
return;
|
||||
|
||||
Verfahrensstufe = (GkvVerfahrensstufe)value;
|
||||
//FirePropertyChanged(nameof(VerfahrensstufeInt));
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
public string RecipientString
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_InvoiceBases2 != null && _InvoiceBases2.Any())
|
||||
{
|
||||
return _InvoiceBases2.First().RecipientString;
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public string Fehlermeldung
|
||||
{
|
||||
get
|
||||
{
|
||||
var last = TransferProtokolle?.LastOrDefault();
|
||||
|
||||
if (last is null || string.IsNullOrWhiteSpace(last.Fehlernachricht))
|
||||
return null;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(last.Fehlertitel))
|
||||
return last.Fehlernachricht;
|
||||
|
||||
return $"{last.Fehlertitel}: {last.Fehlernachricht}";
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime? LastTransferDateTime
|
||||
{
|
||||
get
|
||||
{
|
||||
var last = TransferProtokolle?.LastOrDefault();
|
||||
|
||||
if (last is null)
|
||||
return null;
|
||||
|
||||
return last.ErstelltAm;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static GkvState GetState(GkvAbrechnungVM vm)
|
||||
{
|
||||
return GkvAbrechnungExtensions.GetState(
|
||||
vm,
|
||||
() => vm.Bezahlt,
|
||||
() => vm.UrbelegeGesendet,
|
||||
() => vm.TransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
(x) => x.ErstelltAm.Value);
|
||||
}
|
||||
|
||||
protected override void InitByDataContract(GkvAbrechnungDC pDataContract)
|
||||
{
|
||||
_AbrechnungsZeitraumStart = pDataContract.AbrechnungsZeitraumStart;
|
||||
_AbrechnungsZeitraumEnde = pDataContract.AbrechnungsZeitraumEnde;
|
||||
|
||||
_ErstelltAm = pDataContract.ErstelltAm;
|
||||
|
||||
_GkvAbrechnungOid = pDataContract.GkvAbrechnungOid;
|
||||
_GkvAbrechnungVersion = pDataContract.GkvAbrechnungVersion;
|
||||
|
||||
_Notice = pDataContract.Notice;
|
||||
|
||||
_Betrag = pDataContract.Betrag;
|
||||
_Bezahlt = pDataContract.Bezahlt;
|
||||
_UrbelegeGesendet = pDataContract.UrbelegeGesendet;
|
||||
_Verfahrensstufe = pDataContract.Verfahrensstufe;
|
||||
|
||||
if (pDataContract.InvoiceBases != null)
|
||||
{
|
||||
_InvoiceBases2 = pDataContract.InvoiceBases.Select(x => new InvoiceBaseVM(x, true)).ToList();
|
||||
_InvoiceBases = new BindingList<InvoiceBaseVM>(_InvoiceBases2);
|
||||
}
|
||||
|
||||
if (pDataContract.TransferProtokolle != null)
|
||||
{
|
||||
_TransferProtokolle = new List<GkvTransferProtokollDC>(pDataContract.TransferProtokolle);
|
||||
}
|
||||
|
||||
_Organisation = pDataContract.Organisation;
|
||||
}
|
||||
protected override GkvAbrechnungDC MapToDataContract(GkvAbrechnungDC pDataContract, bool doCommit)
|
||||
{
|
||||
pDataContract.AbrechnungsZeitraumStart = _AbrechnungsZeitraumStart;
|
||||
pDataContract.AbrechnungsZeitraumEnde = _AbrechnungsZeitraumEnde;
|
||||
|
||||
pDataContract.ErstelltAm = _ErstelltAm;
|
||||
|
||||
pDataContract.GkvAbrechnungOid = _GkvAbrechnungOid;
|
||||
pDataContract.GkvAbrechnungVersion = _GkvAbrechnungVersion;
|
||||
|
||||
pDataContract.Notice = _Notice;
|
||||
pDataContract.Betrag = _Betrag;
|
||||
pDataContract.Bezahlt = _Bezahlt;
|
||||
pDataContract.UrbelegeGesendet = _UrbelegeGesendet;
|
||||
pDataContract.Verfahrensstufe = _Verfahrensstufe;
|
||||
|
||||
if (_InvoiceBases != null && _InvoiceBases.Any())
|
||||
pDataContract.InvoiceBases = _InvoiceBases.Where(x => x.IsChecked).Select(vm => vm.CommitToDataContract()).ToList();
|
||||
else if (_InvoiceBases2 != null && _InvoiceBases2.Any())
|
||||
pDataContract.InvoiceBases = _InvoiceBases2.Where(x => x.IsChecked).Select(vm => vm.CommitToDataContract()).ToList();
|
||||
|
||||
pDataContract.Organisation = _Organisation;
|
||||
pDataContract.TransferProtokolle = _TransferProtokolle?.ToList();
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
|
||||
public void SendGkvAbrechnung()
|
||||
{
|
||||
var req = new GkvAbrechnungSendRequestDC();
|
||||
|
||||
req.GkvAbrechnungOid = GkvAbrechnungOid.Value;
|
||||
|
||||
ServiceFacade.DoAccountingServiceAsync(s => s.SendNewGkvAbrechnung(req),
|
||||
cb => Application.Current.Dispatch(() => Update(cb)), true);
|
||||
}
|
||||
|
||||
public void Update(GkvAbrechnungSendResponseDC cb)
|
||||
{
|
||||
var dc = cb.GkvAbrechnungDC;
|
||||
|
||||
if (dc is null)
|
||||
{
|
||||
MessageBox.Show(Application.Current.MainWindow, "Unerwarteter Übertragungsfehler");
|
||||
return;
|
||||
}
|
||||
|
||||
GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
|
||||
TransferProtokolle = dc.TransferProtokolle.ToList();
|
||||
|
||||
var protokoll = cb.TransferProtokoll;
|
||||
|
||||
if (protokoll.Fehlerlevel == GkvTransferFehlerlevel.Soft)
|
||||
{
|
||||
MessageBox.Show(Application.Current.MainWindow, protokoll.Fehlernachricht, protokoll.Fehlertitel);
|
||||
}
|
||||
else if (protokoll.Fehlerlevel == GkvTransferFehlerlevel.Fatal)
|
||||
{
|
||||
BeWoApp.ShowError(protokoll.Fehlertitel + ": " + protokoll.Fehlernachricht, null, false, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(Application.Current.MainWindow, "Ihre Sendung wurde korrekt übertragen");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,10 @@ namespace BeWo.ViewModel.ListViewModel
|
||||
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountSum);
|
||||
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
|
||||
}
|
||||
public GkvAbrechnungListVM() : this(null)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public DateTimeSpan DateTimeSpanFilter
|
||||
{
|
||||
|
||||
@@ -84,13 +84,9 @@ namespace BeWo.ViewModel
|
||||
public static string PropertyName_Feiertage = "Feiertage";
|
||||
|
||||
public static string PropertyName_IKKrankenkasse = nameof(IKKrankenkasse);
|
||||
|
||||
public static string PropertyName_IKKostentrager = nameof(IKKostentrager);
|
||||
|
||||
public static string PropertyName_IKDatenannahmestelle = nameof(IKDatenannahmestelle);
|
||||
|
||||
public static string PropertyName_Leistungserbringergruppe = nameof(Leistungserbringergruppe);
|
||||
|
||||
public static string PropertyName_BusinessPartnerId = nameof(BusinessPartnerId);
|
||||
|
||||
private readonly List<ValueListEntryDC> _AllQualifications;
|
||||
@@ -166,14 +162,11 @@ namespace BeWo.ViewModel
|
||||
private FeiertagListVM _Feiertage;
|
||||
|
||||
private string _IKKrankenkasse;
|
||||
|
||||
private string _IKKostentrager;
|
||||
|
||||
private string _IKDatenannahmestelle;
|
||||
|
||||
private string _Leistungserbringergruppe;
|
||||
|
||||
private string _BusinessPartnerId;
|
||||
private GkvVerfahrensstufe _Verfahrensstufe;
|
||||
|
||||
public OrganisationVM(OrganisationDC pDataContract, List<ValueListEntryDC> pAllQualifications, List<ValueListEntryDC> pPossibleFunctions, List<ValueListEntryDC> pPossibleRoleInOrganisations)
|
||||
: base(pDataContract, pDataContract.OrganisationOid == null)
|
||||
@@ -850,6 +843,35 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public GkvVerfahrensstufe Verfahrensstufe
|
||||
{
|
||||
get { return this._Verfahrensstufe; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Verfahrensstufe, value))
|
||||
{
|
||||
this._Verfahrensstufe = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Verfahrensstufe, value), nameof(Verfahrensstufe));
|
||||
this.FirePropertyChanged(nameof(Verfahrensstufe));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int VerfahrensstufeInt
|
||||
{
|
||||
get { return (int)Verfahrensstufe; }
|
||||
|
||||
set
|
||||
{
|
||||
if (!AreDifferent(this.VerfahrensstufeInt, value))
|
||||
return;
|
||||
|
||||
Verfahrensstufe = (GkvVerfahrensstufe)value;
|
||||
//FirePropertyChanged(nameof(VerfahrensstufeInt));
|
||||
}
|
||||
}
|
||||
|
||||
protected void CommitContact(string pValue, ContactType pContactType)
|
||||
{
|
||||
List<ContactDC> lOldContactDCs;
|
||||
@@ -916,6 +938,7 @@ namespace BeWo.ViewModel
|
||||
this._IKDatenannahmestelle = pDataContract.IKDatenannahmestelle;
|
||||
_Leistungserbringergruppe = pDataContract.Leistungserbringergruppe;
|
||||
_BusinessPartnerId = pDataContract.BusinessPartnerId;
|
||||
_Verfahrensstufe = pDataContract.Verfahrensstufe;
|
||||
|
||||
_Function = pDataContract.Function;
|
||||
|
||||
@@ -1024,6 +1047,7 @@ namespace BeWo.ViewModel
|
||||
pDataContract.IKKrankenkasse = this._IKKrankenkasse;
|
||||
pDataContract.Leistungserbringergruppe = _Leistungserbringergruppe;
|
||||
pDataContract.BusinessPartnerId = _BusinessPartnerId;
|
||||
pDataContract.Verfahrensstufe = _Verfahrensstufe;
|
||||
|
||||
this.CommitContact(this._Phone, ContactType.business_Phone);
|
||||
this.CommitContact(this._Website, ContactType.business_Homepage);
|
||||
|
||||
@@ -12,12 +12,14 @@ namespace Dakota
|
||||
{
|
||||
public static class DakotaValidator
|
||||
{
|
||||
public static void ClearTextString(string input)
|
||||
public static string ClearTextString(string input)
|
||||
{
|
||||
foreach (var specialChar in DakotaConfig.SpecialCollection)
|
||||
{
|
||||
input = input.Replace(specialChar, DakotaConfig.Aufhebungszeichen + specialChar);
|
||||
}
|
||||
|
||||
return input.Trim();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using BeWo.Data.Entities;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Schlüssels;
|
||||
@@ -46,7 +47,7 @@ namespace Dakota.Logic
|
||||
// return info;
|
||||
//}
|
||||
|
||||
internal InfoDateiNutzdaten GetEmptyInfoNutzdatendatei(string absender, string empfang, string logischerDateiname, int datenaustauschreferenz)
|
||||
internal InfoDateiNutzdaten GetEmptyInfoNutzdatendatei(string absender, string empfang, int verfahrensstufe, string logischerDateiname, int datenaustauschreferenz)
|
||||
{
|
||||
var info = new InfoDateiNutzdaten();
|
||||
|
||||
@@ -57,7 +58,7 @@ namespace Dakota.Logic
|
||||
info.Datenaustauschreferenz = datenaustauschreferenz;
|
||||
info.Leistungsbereich = SchlüsselLeistungserbringerSammelgruppenschlussel.SoziotherapeutischerLeistungserbringer;
|
||||
info.Anwendungsreferenz = logischerDateiname;
|
||||
info.Testindikator = SchlüsselTestindikator.Testdatei;
|
||||
info.Testindikator = SchlüsselTestindikator.GetSchlüsselTestindikator((GkvVerfahrensstufe)verfahrensstufe);
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
@@ -49,15 +49,18 @@ namespace Dakota.Logic
|
||||
|
||||
if (!success)
|
||||
{
|
||||
var verfahrensstufe = organisation.Verfahrensstufe;
|
||||
|
||||
// Verfahrenkennung
|
||||
// Erste Stelle:
|
||||
// "E" - Echtdaten
|
||||
// "T" - Testdaten
|
||||
|
||||
var verfahrenkennung = "TSOL0";
|
||||
// Annahme: "E" auch für Erprobungsverfahrenstufe
|
||||
|
||||
var verfahrenkennung = verfahrensstufe == 0 ? "TSOL0" : "ESOL0";
|
||||
var logischer_dateiname = DakotaConfig.GetLogischerDateiname(Month).Trim();
|
||||
|
||||
var info_nutz_add = DakotaInfoCreator.GetEmptyInfoNutzdatendatei(DakotaConfig.IKAbsender, organisation.IKDatenannahmestelle, logischer_dateiname, datenaustauschreferenz);
|
||||
var info_nutz_add = DakotaInfoCreator.GetEmptyInfoNutzdatendatei(DakotaConfig.IKAbsender, organisation.IKDatenannahmestelle, (int)verfahrensstufe, logischer_dateiname, datenaustauschreferenz);
|
||||
var info_auf_add = DakotaInfoCreator.GetEmptyInfoAuftragsdatei(organisation.IKDatenannahmestelle, logischer_dateiname, verfahrenkennung, transfernummer);
|
||||
|
||||
DakotaInfoNutzDict.Add(ik_datenannahmestelle, info_nutz_add);
|
||||
|
||||
@@ -97,9 +97,9 @@ namespace Dakota.Models.Daten
|
||||
throw new DakotaException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
|
||||
}
|
||||
|
||||
DakotaValidator.ClearTextString(value);
|
||||
var mod_value = DakotaValidator.ClearTextString(value);
|
||||
|
||||
_Value = value;
|
||||
_Value = mod_value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using BS.Shared;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@@ -6,12 +7,24 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models.Schlüssels
|
||||
{
|
||||
public class SchlüsselTestindikator : Schlüssel
|
||||
{
|
||||
public SchlüsselTestindikator(string val) : base(val) { }
|
||||
public class SchlüsselTestindikator : Schlüssel
|
||||
{
|
||||
public SchlüsselTestindikator(string val) : base(val) { }
|
||||
|
||||
public static SchlüsselTestindikator Testdatei => new SchlüsselTestindikator("0");
|
||||
public static SchlüsselTestindikator Erprobungsdatei => new SchlüsselTestindikator("1");
|
||||
public static SchlüsselTestindikator Echtdatei => new SchlüsselTestindikator("2");
|
||||
}
|
||||
public static SchlüsselTestindikator Testdatei => new SchlüsselTestindikator("0");
|
||||
public static SchlüsselTestindikator Erprobungsdatei => new SchlüsselTestindikator("1");
|
||||
public static SchlüsselTestindikator Echtdatei => new SchlüsselTestindikator("2");
|
||||
|
||||
public static SchlüsselTestindikator GetSchlüsselTestindikator(GkvVerfahrensstufe verfahrensstufe)
|
||||
{
|
||||
switch (verfahrensstufe)
|
||||
{
|
||||
case GkvVerfahrensstufe.Test: return Testdatei;
|
||||
case GkvVerfahrensstufe.Erprobung: return Erprobungsdatei;
|
||||
case GkvVerfahrensstufe.Echt: return Echtdatei;
|
||||
}
|
||||
|
||||
throw new ArgumentOutOfRangeException(nameof(verfahrensstufe));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,8 @@ namespace DakotaSender
|
||||
PrintLine("-------------------");
|
||||
}
|
||||
|
||||
static void PrintLine(string line = null)
|
||||
static void PrintLine() => PrintLine(null);
|
||||
static void PrintLine(string line)
|
||||
{
|
||||
PrintWithTime(line + "\n", !time_in_line);
|
||||
|
||||
@@ -78,6 +79,13 @@ namespace DakotaSender
|
||||
else
|
||||
Console.Write(line);
|
||||
}
|
||||
static void PrintFileInfo(DakotaSystemFile file)
|
||||
{
|
||||
PrintLine($"Verarbeite Datei: {file.SourceNutzdatendatei.Name}");
|
||||
PrintLine($"- Tenant: {file.Tenant}");
|
||||
PrintLine($"- Protokoll Oid: {file.ProtokollOid}");
|
||||
PrintLine($"- Datenannahmestelle: {file.Datenannahmestelle}");
|
||||
}
|
||||
|
||||
static void CheckDakotaStatus()
|
||||
{
|
||||
@@ -176,64 +184,65 @@ namespace DakotaSender
|
||||
|
||||
return toCheck.Any() ? toCheck : null;
|
||||
}
|
||||
|
||||
static void TryProcessFile(DakotaSystemFile file)
|
||||
{
|
||||
string error;
|
||||
bool copied = false;
|
||||
try
|
||||
{
|
||||
var protokoll_oid = file.ProtokollOid;
|
||||
|
||||
PrintLine($"Verarbeite Datei: {file.SourceNutzdatendatei.Name}");
|
||||
PrintLine($"- Tenant: {file.Tenant}");
|
||||
PrintLine($"- Protokoll Oid: {protokoll_oid}");
|
||||
PrintLine($"- Datenannahmestelle: {file.Datenannahmestelle}");
|
||||
|
||||
copied = true;
|
||||
CopyFileToDestination(file);
|
||||
|
||||
Print("Sende via Dakota. ");
|
||||
|
||||
var code = ExecuteDakota("-x");
|
||||
|
||||
if (AcceptSendCodes.Contains(code))
|
||||
{
|
||||
PrintLine($"Ok.");
|
||||
|
||||
DeleteQueueFile(file);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(code == RC_DAKOTA_ALREADY_LOADED)
|
||||
{
|
||||
PrintLine($"Verarbeitung fehlgeschlagen. Dakota läuft bereits.");
|
||||
|
||||
PrintLine("Ignoriere Verarbeitung aktuell. Versuche im nächsten Programm Aufruf erneut.");
|
||||
|
||||
DeleteDakotaFile(file);
|
||||
}
|
||||
else
|
||||
{
|
||||
var error = $"Verarbeitung fehlgeschlagen. Statuscode {code} wird nicht akzeptiert.";
|
||||
|
||||
PrintLine(error);
|
||||
|
||||
MoveQueueToFailed(file);
|
||||
|
||||
DeleteDakotaFile(file);
|
||||
|
||||
CreateResultXmlFile(file, error);
|
||||
}
|
||||
}
|
||||
error = ProcessFile(file, out copied);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
PrintLine($"Verarbeitung fehlgeschlagen. Exception: {e}");
|
||||
error = e.ToString();
|
||||
}
|
||||
|
||||
if (error is string)
|
||||
{
|
||||
PrintLine(error);
|
||||
MoveQueueToFailed(file);
|
||||
|
||||
if (copied)
|
||||
DeleteDakotaFile(file);
|
||||
|
||||
CreateResultXmlFile(file, error);
|
||||
}
|
||||
}
|
||||
static string ProcessFile(DakotaSystemFile file, out bool copied)
|
||||
{
|
||||
copied = false;
|
||||
|
||||
PrintFileInfo(file);
|
||||
|
||||
if (!IsDakotaFolderDatenannahmestelleValid(file.Datenannahmestelle))
|
||||
return "Datenannahmestelle unbekannt.";
|
||||
|
||||
CopyFileToDestination(file);
|
||||
copied = true;
|
||||
|
||||
Print("Sende via Dakota. ");
|
||||
|
||||
var code = ExecuteDakota("-x");
|
||||
|
||||
if (code == RC_DAKOTA_ALREADY_LOADED)
|
||||
{
|
||||
PrintLine($"Verarbeitung fehlgeschlagen. Dakota läuft bereits.");
|
||||
|
||||
PrintLine("Ignoriere Verarbeitung aktuell. Versuche im nächsten Programm Aufruf erneut.");
|
||||
|
||||
DeleteDakotaFile(file);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!AcceptSendCodes.Contains(code))
|
||||
return $"Verarbeitung fehlgeschlagen. Statuscode {code} wird nicht akzeptiert.";
|
||||
|
||||
PrintLine($"Ok.");
|
||||
DeleteQueueFile(file);
|
||||
return null;
|
||||
}
|
||||
static void CreateResultXmlFile(DakotaSystemFile file, string error)
|
||||
{
|
||||
Print("Speichere Fehler als Xml. ");
|
||||
@@ -338,6 +347,19 @@ namespace DakotaSender
|
||||
}
|
||||
}
|
||||
|
||||
static bool IsDakotaFolderDatenannahmestelleValid(string datenannahmestelle)
|
||||
{
|
||||
try
|
||||
{
|
||||
_ = GetDakotaFolderDatenannahmestelle(datenannahmestelle);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
static DirectoryInfo GetDakotaFolderDatenannahmestelle(string datenannahmestelle)
|
||||
{
|
||||
var folder = new DirectoryInfo(Path.Combine(GetDakotaFolder().FullName, "TP5Daten", datenannahmestelle));
|
||||
@@ -359,7 +381,7 @@ namespace DakotaSender
|
||||
|
||||
return dirinfo;
|
||||
}
|
||||
|
||||
|
||||
static string GetLogPath()
|
||||
=> ConfigurationManager.AppSettings.Get("LogPath") ?? @"C:\GkvAbrechnung\Sender\log.txt";
|
||||
static int GetProcessWaitForExitMs()
|
||||
|
||||
@@ -19,6 +19,8 @@ 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 GkvVerfahrensstufe Verfahrensstufe { get; set; }
|
||||
|
||||
public virtual IList<InvoiceBase> InvoiceBases { get; set; }
|
||||
public virtual IList<GkvTransferProtokoll> GkvTransferProtokolle { get; set; }
|
||||
@@ -27,6 +29,7 @@ namespace BeWo.Data.Entities
|
||||
GkvAbrechnungExtensions.GetState(
|
||||
entity,
|
||||
() => entity.Bezahlt,
|
||||
() => entity.UrbelegeGesendet,
|
||||
() => entity.GkvTransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
|
||||
@@ -351,5 +351,7 @@ namespace BeWo.Data.Entities
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual GkvVerfahrensstufe Verfahrensstufe { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -20,8 +20,10 @@
|
||||
|
||||
<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" />
|
||||
<property column="Verfahrensstufe" type="BS.Shared.GkvVerfahrensstufe, BS.Shared" name="Verfahrensstufe"/>
|
||||
|
||||
<bag name="InvoiceBases" table="gkvabrechnung2invoicebase" generic="true" cascade="none" batch-size="250">
|
||||
<key column="gkvabrechnungoid" />
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<property column="IKKostentrager" type="String" name="IKKostentrager" length="256" />
|
||||
<property column="IKDatenannahmestelle" type="String" name="IKDatenannahmestelle" length="256" />
|
||||
<property column="Leistungserbringergruppe" type="String" name="Leistungserbringergruppe" length="256" />
|
||||
<property column="Verfahrensstufe" type="BS.Shared.GkvVerfahrensstufe, BS.Shared" name="Verfahrensstufe"/>
|
||||
<property column="BusinessPartnerId" type="String" name="BusinessPartnerId" length="256" />
|
||||
|
||||
<many-to-one name="Address" column="AddressOid" class="BeWo.Data.Entities.Address, BeWo.Data" cascade="all" fetch="join"/>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `gkvabrechnung`
|
||||
ADD COLUMN `UrbelegeGesendet` TINYINT NULL DEFAULT NULL AFTER `Bezahlt`;
|
||||
@@ -0,0 +1,5 @@
|
||||
ALTER TABLE `organisation`
|
||||
ADD COLUMN `Verfahrensstufe` INT NULL DEFAULT 0 AFTER `BusinessPartnerId`;
|
||||
|
||||
ALTER TABLE `gkvabrechnung`
|
||||
ADD COLUMN `Verfahrensstufe` INT NULL DEFAULT 0 AFTER `ErstelltAm`;
|
||||
@@ -28,7 +28,9 @@ namespace BeWo.Service.DCEntityMapper
|
||||
|
||||
pDataContract.Betrag = pEntity.Betrag;
|
||||
pDataContract.Bezahlt = pEntity.Bezahlt;
|
||||
pDataContract.UrbelegeGesendet = pEntity.UrbelegeGesendet;
|
||||
pDataContract.ErstelltAm = pEntity.ErstelltAm;
|
||||
pDataContract.Verfahrensstufe = pEntity.Verfahrensstufe;
|
||||
|
||||
pDataContract.InvoiceBases = MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewDCs(pEntity.InvoiceBases);
|
||||
|
||||
@@ -52,6 +54,8 @@ namespace BeWo.Service.DCEntityMapper
|
||||
|
||||
pEntity.Betrag = pDataContract.Betrag;
|
||||
pEntity.Bezahlt = pDataContract.Bezahlt;
|
||||
pEntity.UrbelegeGesendet = pDataContract.UrbelegeGesendet;
|
||||
pEntity.Verfahrensstufe = pDataContract.Verfahrensstufe;
|
||||
|
||||
pEntity.ErstelltAm = pDataContract.ErstelltAm;
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ namespace BeWo.Service.DCEntityMapper
|
||||
pDataContract.IKKostentrager = pEntity.IKKostentrager;
|
||||
pDataContract.IKDatenannahmestelle = pEntity.IKDatenannahmestelle;
|
||||
pDataContract.Leistungserbringergruppe = pEntity.Leistungserbringergruppe;
|
||||
pDataContract.Verfahrensstufe = pEntity.Verfahrensstufe;
|
||||
|
||||
pDataContract.BusinessPartnerId = pEntity.BusinessPartnerId;
|
||||
|
||||
@@ -109,6 +110,7 @@ namespace BeWo.Service.DCEntityMapper
|
||||
pEntity.IKKostentrager = pDataContract.IKKostentrager;
|
||||
pEntity.IKDatenannahmestelle = pDataContract.IKDatenannahmestelle;
|
||||
pEntity.Leistungserbringergruppe = pDataContract.Leistungserbringergruppe;
|
||||
pEntity.Verfahrensstufe = pDataContract.Verfahrensstufe;
|
||||
|
||||
pEntity.BusinessPartnerId = pDataContract.BusinessPartnerId;
|
||||
|
||||
|
||||
@@ -783,13 +783,15 @@ namespace BeWo.Service.ServiceImplementations
|
||||
gkv_abrechnung.AbrechnungsZeitraumEnde = gkv_abrechnung.AbrechnungsZeitraumEnde.Value.Date.AddDays(1).AddMilliseconds(-1);
|
||||
}
|
||||
|
||||
var orga = gkv_abrechnung.GetOrganisation();
|
||||
|
||||
gkv_abrechnung.Verfahrensstufe = orga.Verfahrensstufe;
|
||||
|
||||
decimal gesamt = 0;
|
||||
foreach (var invoicebase_oid in request.SelectedInvoiceBases)
|
||||
{
|
||||
var service = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoicebase_oid);
|
||||
var invoicebase = DAOFactory.GenericDAO.GetByID<InvoiceBase>(invoicebase_oid);
|
||||
var orga = invoicebase.CostBearer2SupportConcept.CostBearer.Organisation;
|
||||
var customer = invoicebase.CostBearer2SupportConcept.SupportConcept.Customer;
|
||||
|
||||
var invoicebase_dc = MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewDC(invoicebase);
|
||||
|
||||
|
||||
@@ -1274,9 +1274,17 @@ namespace BS.Shared
|
||||
{
|
||||
NoSend,
|
||||
Waiting,
|
||||
Waiting4Urbelege,
|
||||
Error,
|
||||
ErrorFatal,
|
||||
Paid,
|
||||
OldAndNoFeedback
|
||||
}
|
||||
|
||||
public enum GkvVerfahrensstufe
|
||||
{
|
||||
Test,
|
||||
Erprobung,
|
||||
Echt
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,7 @@ namespace BS.Shared.Core
|
||||
public static Dictionary<UserRightType, String> UserRightType2Translations;
|
||||
|
||||
public static Dictionary<Enum, string> Wohnhilfe2Translation;
|
||||
public static Dictionary<Enum, string> Gkv2Translation;
|
||||
|
||||
public static Dictionary<ValueListEntryType, String> ValueListEntryType2Header;
|
||||
|
||||
@@ -64,6 +65,8 @@ namespace BS.Shared.Core
|
||||
|
||||
InitWohnhilfeEnums();
|
||||
|
||||
InitGkvTranslation();
|
||||
|
||||
#region FamilyStatusTranslations
|
||||
FamilyStatusTranslations = new Dictionary<object, String>
|
||||
{
|
||||
@@ -629,9 +632,10 @@ namespace BS.Shared.Core
|
||||
BehinderungsartTranslations.DoForEach(p => AllTranslations.AddAndIgnoreDuplicates(p.Key, p.Value));
|
||||
MerkzeichenTranslations.DoForEach(p => AllTranslations.AddAndIgnoreDuplicates(p.Key, p.Value));
|
||||
Wohnhilfe2Translation?.DoForEach(kv => AllTranslations.Add(kv.Key, kv.Value));
|
||||
Gkv2Translation?.DoForEach(kv => AllTranslations.Add(kv.Key, kv.Value));
|
||||
}
|
||||
|
||||
private static void InitUserRightTranslation()
|
||||
private static void InitUserRightTranslation()
|
||||
{
|
||||
var dict = new Dictionary<UserRightType, String>();
|
||||
|
||||
@@ -1072,5 +1076,14 @@ namespace BS.Shared.Core
|
||||
|
||||
Wohnhilfe2Translation = dict;
|
||||
}
|
||||
|
||||
private static void InitGkvTranslation()
|
||||
{
|
||||
var dict = new Dictionary<Enum, string>();
|
||||
|
||||
dict.Add(GkvVerfahrensstufe.Test, "Test");
|
||||
dict.Add(GkvVerfahrensstufe.Erprobung, "Erprobung");
|
||||
dict.Add(GkvVerfahrensstufe.Echt, "Echt");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,9 +29,15 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
[DataMember]
|
||||
public bool Bezahlt { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool UrbelegeGesendet { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime ErstelltAm { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public GkvVerfahrensstufe Verfahrensstufe { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public IList<InvoiceBaseDC> InvoiceBases { get; set; }
|
||||
|
||||
|
||||
@@ -183,5 +183,8 @@ namespace BS.Shared.DataContracts
|
||||
|
||||
[DataMember]
|
||||
public string BusinessPartnerId { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public GkvVerfahrensstufe Verfahrensstufe { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -9,9 +9,15 @@ namespace BS.Shared.Extensions
|
||||
{
|
||||
public static class GkvAbrechnungExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Lässt sich besser über Interface lösen....
|
||||
/// </summary>
|
||||
/// <param name="gkvAbrechnungDC"></param>
|
||||
/// <returns></returns>
|
||||
public static GkvState GetState(this GkvAbrechnungDC gkvAbrechnungDC) => GetState(
|
||||
gkvAbrechnungDC,
|
||||
() => gkvAbrechnungDC.Bezahlt,
|
||||
() => gkvAbrechnungDC.UrbelegeGesendet,
|
||||
() => gkvAbrechnungDC.TransferProtokolle,
|
||||
(x) => x.Fehlerdatum,
|
||||
(x) => x.Fehlerlevel,
|
||||
@@ -20,6 +26,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 +52,8 @@ namespace BS.Shared.Extensions
|
||||
}
|
||||
|
||||
// Kein Fehler
|
||||
if (!urbelege())
|
||||
return GkvState.Waiting4Urbelege;
|
||||
|
||||
if (DateTime.Now - created(last_transfer) > TimeSpan.FromDays(28))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user