356 lines
14 KiB
C#
356 lines
14 KiB
C#
// Copyright (c) 2025- schick Informatik
|
|
// Description: Display control of formsheet Tab 13. Waste receipts
|
|
//
|
|
|
|
using bsmd.database;
|
|
using ENI2.EditControls;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
|
|
namespace ENI2.SheetDisplayControls
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for WasteReceiptsControl.xaml
|
|
/// </summary>
|
|
public partial class WasteReceiptsControl : DetailBaseControl
|
|
{
|
|
#region fields
|
|
|
|
private Message _wasMessage;
|
|
private WAS _was;
|
|
private Message _wasRcptMessage;
|
|
private WAS_RCPT _selectedWAS_RCPT;
|
|
|
|
#endregion
|
|
|
|
#region Construction
|
|
|
|
public WasteReceiptsControl()
|
|
{
|
|
InitializeComponent();
|
|
Loaded += WasteReceiptsControl_Loaded;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region public override
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
foreach (Message aMessage in this.Messages)
|
|
{
|
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.WAS) { this._wasMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.WAS_RCPT) { this._wasRcptMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
|
}
|
|
|
|
#region init WAS
|
|
|
|
WAS was = null;
|
|
if (this._wasMessage.Elements.Count > 0)
|
|
was = this._wasMessage.Elements[0] as WAS;
|
|
if (was == null)
|
|
{
|
|
was = new WAS();
|
|
was.MessageCore = this.Core;
|
|
was.MessageHeader = this._wasMessage;
|
|
_wasMessage.Elements.Add(was);
|
|
}
|
|
this._was = was;
|
|
|
|
#endregion
|
|
|
|
#region init WAS_RCPT
|
|
|
|
if (this._wasRcptMessage == null)
|
|
{
|
|
this._wasRcptMessage = this.Core.CreateMessage(Message.NotificationClass.WAS_RCPT);
|
|
this.Messages.Add(this._wasRcptMessage);
|
|
}
|
|
|
|
this.dataGridWasteReceipt.Initialize();
|
|
this.dataGridWasteReceipt.ItemsSource = this._wasRcptMessage.Elements;
|
|
this.dataGridWasteReceipt.AddingNewItem += DataGridWasteReceipt_AddingNewItem;
|
|
this.dataGridWasteReceipt.EditRequested += DataGridWasteReceipt_EditRequested;
|
|
this.dataGridWasteReceipt.DeleteRequested += DataGridWasteReceipt_DeleteRequested;
|
|
this.dataGridWasteReceipt.CreateRequested += DataGridWasteReceipt_CreateRequested;
|
|
|
|
this.dataGridWasteReceived.Initialize();
|
|
this.dataGridWasteReceived.AddingNewItem += DataGridWasteReceived_AddingNewItem;
|
|
this.dataGridWasteReceived.EditRequested += DataGridWasteReceived_EditRequested;
|
|
this.dataGridWasteReceived.DeleteRequested += DataGridWasteReceived_DeleteRequested;
|
|
this.dataGridWasteReceived.CreateRequested += DataGridWasteReceived_CreateRequested;
|
|
|
|
if (this._wasRcptMessage.Elements.Count > 0)
|
|
{
|
|
this.dataGridWasteReceipt.SelectedItem = this._wasRcptMessage.Elements[0];
|
|
this.dataGridWasteReceipt_SelectionChanged(null, null);
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
public override void SetEnabled(bool enabled)
|
|
{
|
|
base.SetEnabled(enabled);
|
|
this.wasteReceiptsGroupBox.IsEnabled = enabled;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region event handler
|
|
|
|
private void WasteReceiptsControl_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
this.dataGridWasteReceived.CellEditEnding += (obj, ev) => { this.SublistElementChanged(Message.NotificationClass.WAS_RCPT); };
|
|
}
|
|
|
|
private void buttonWasteReceivedAddMissingEntries_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (this._selectedWAS_RCPT != null)
|
|
{
|
|
this._selectedWAS_RCPT.AddMissingWasteReceived();
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
this.dataGridWasteReceived.Items.Refresh();
|
|
}
|
|
}
|
|
|
|
private void buttonCopyFromWAS_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (_selectedWAS_RCPT == null) return;
|
|
|
|
if (MessageBox.Show(Properties.Resources.textCopyToWASConfirmation, Properties.Resources.textConfirmation,
|
|
MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
|
|
{
|
|
foreach (Waste waste in _was.Waste)
|
|
{
|
|
if (waste.WasteDisposalAmount_MTQ.HasValue && waste.WasteDisposalAmount_MTQ > 0)
|
|
{
|
|
// find matching WAS_RCPT entry
|
|
foreach (WasteReceived wasteReceived in _selectedWAS_RCPT.WasteReceived)
|
|
{
|
|
if (wasteReceived.WasteCode.Equals(waste.WasteType.ToString()))
|
|
{
|
|
wasteReceived.AmountWasteReceived_MTQ = waste.WasteDisposalAmount_MTQ;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.dataGridWasteReceived.Items.Refresh();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Waste receipt grid event handler
|
|
|
|
private void DataGridWasteReceipt_CreateRequested()
|
|
{
|
|
EditWasteReceiptDialog epd = new EditWasteReceiptDialog();
|
|
epd.WAS_RCPT = new WAS_RCPT();
|
|
epd.WAS_RCPT.MessageHeader = _wasRcptMessage;
|
|
epd.WAS_RCPT.Identifier = WAS_RCPT.GetNewIdentifier(_wasRcptMessage.Elements);
|
|
epd.WAS_RCPT.AddMissingWasteReceived();
|
|
|
|
epd.AddClicked += () =>
|
|
{
|
|
epd.CopyValuesToEntity();
|
|
if (!this._wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
|
this._wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
|
this.dataGridWasteReceipt.Items.Refresh();
|
|
epd.WAS_RCPT = new WAS_RCPT();
|
|
epd.WAS_RCPT.MessageHeader = _wasRcptMessage;
|
|
epd.WAS_RCPT.Identifier = WAS_RCPT.GetNewIdentifier(_wasRcptMessage.Elements);
|
|
epd.WAS_RCPT.AddMissingWasteReceived();
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
};
|
|
|
|
if (epd.ShowDialog() ?? false)
|
|
{
|
|
if (!this._wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
|
_wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
|
this.dataGridWasteReceipt.Items.Refresh();
|
|
this.dataGridWasteReceipt.SelectedItem = epd.WAS_RCPT;
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
this.dataGridWasteReceived.ItemsSource = null;
|
|
dataGridWasteReceipt_SelectionChanged(this, null);
|
|
}
|
|
|
|
// await InitTemplates(); // templates might have changed in the dialog
|
|
}
|
|
|
|
private void DataGridWasteReceipt_DeleteRequested(DatabaseEntity obj)
|
|
{
|
|
if (obj is WAS_RCPT wasRCPT)
|
|
{
|
|
// are you sure dialog is in base class
|
|
_wasRcptMessage.Elements.Remove(wasRCPT);
|
|
wasRCPT.DeleteElements();
|
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(wasRCPT);
|
|
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(_wasRcptMessage.Elements));
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
this.dataGridWasteReceipt.Items.Refresh();
|
|
this.dataGridWasteReceived.ItemsSource = null;
|
|
this._selectedWAS_RCPT = null;
|
|
}
|
|
}
|
|
|
|
private void DataGridWasteReceipt_EditRequested(DatabaseEntity obj)
|
|
{
|
|
EditWasteReceiptDialog epd = new EditWasteReceiptDialog();
|
|
epd.WAS_RCPT = obj as WAS_RCPT;
|
|
|
|
epd.AddClicked += () =>
|
|
{
|
|
epd.CopyValuesToEntity();
|
|
if (!_wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
|
_wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
|
this.dataGridWasteReceipt.Items.Refresh();
|
|
epd.WAS_RCPT = new WAS_RCPT();
|
|
epd.WAS_RCPT.Identifier = WAS_RCPT.GetNewIdentifier(_wasRcptMessage.Elements);
|
|
epd.WAS_RCPT.MessageHeader = _wasRcptMessage;
|
|
epd.WAS_RCPT.AddMissingWasteReceived();
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
};
|
|
|
|
if (epd.ShowDialog() ?? false)
|
|
{
|
|
if (!_wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
|
_wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
|
}
|
|
this.dataGridWasteReceipt.SelectedItem = epd.WAS_RCPT;
|
|
this.dataGridWasteReceipt.Items.Refresh();
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
dataGridWasteReceipt_SelectionChanged(this, null);
|
|
|
|
// await InitTemplates(); // templates might have changed in the dialog
|
|
}
|
|
|
|
private void DataGridWasteReceipt_AddingNewItem(object sender, AddingNewItemEventArgs e)
|
|
{
|
|
this.DataGridWasteReceipt_CreateRequested();
|
|
}
|
|
|
|
private void dataGridWasteReceipt_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
if (this.dataGridWasteReceipt.SelectedItem is WAS_RCPT was_rcpt)
|
|
{
|
|
this.dataGridWasteReceived.ItemsSource = was_rcpt.WasteReceived;
|
|
this._selectedWAS_RCPT = was_rcpt;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Waste received grid event handler
|
|
|
|
private void DataGridWasteReceived_DeleteRequested(DatabaseEntity obj)
|
|
{
|
|
if (obj is WasteReceived wasteReceived)
|
|
{
|
|
this.dataGridWasteReceived.CancelEdit();
|
|
this.dataGridWasteReceived.CancelEdit();
|
|
// are you sure dialog is in base class
|
|
_selectedWAS_RCPT.WasteReceived.Remove(wasteReceived);
|
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(wasteReceived);
|
|
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(_selectedWAS_RCPT.WasteReceived));
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
this.dataGridWasteReceived.Items.Refresh();
|
|
}
|
|
}
|
|
|
|
private void DataGridWasteReceived_CreateRequested()
|
|
{
|
|
if (_selectedWAS_RCPT == null) return;
|
|
this.dataGridWasteReceived.CancelEdit();
|
|
this.dataGridWasteReceived.CancelEdit();
|
|
EditWasteReceivedDialog ewrd = new EditWasteReceivedDialog();
|
|
ewrd.WasteReceived = new WasteReceived();
|
|
ewrd.WasteReceived.WAS_RCPT = _selectedWAS_RCPT;
|
|
ewrd.WasteReceived.Identifier = WasteReceived.GetNewIdentifier(_selectedWAS_RCPT.WasteReceived);
|
|
|
|
ewrd.AddClicked += () =>
|
|
{
|
|
ewrd.CopyValuesToEntity();
|
|
if ((ewrd.WasteReceived.WasteCode != null) && !this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
|
{
|
|
this._selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
|
this.dataGridWasteReceived.Items.Refresh();
|
|
ewrd.WasteReceived = new WasteReceived();
|
|
ewrd.WasteReceived.WAS_RCPT = _selectedWAS_RCPT;
|
|
ewrd.WasteReceived.Identifier = WasteReceived.GetNewIdentifier(_selectedWAS_RCPT.WasteReceived);
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
}
|
|
};
|
|
|
|
if (ewrd.ShowDialog() ?? false)
|
|
{
|
|
if ((ewrd.WasteReceived.WasteCode != null) && !this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
|
{
|
|
this._selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
|
this.dataGridWasteReceived.Items.Refresh();
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private void DataGridWasteReceived_EditRequested(DatabaseEntity obj)
|
|
{
|
|
this.dataGridWasteReceived.CancelEdit();
|
|
this.dataGridWasteReceived.CancelEdit();
|
|
|
|
EditWasteReceivedDialog ewrd = new EditWasteReceivedDialog();
|
|
ewrd.WasteReceived = obj as WasteReceived;
|
|
|
|
ewrd.AddClicked += () =>
|
|
{
|
|
ewrd.CopyValuesToEntity();
|
|
if ((ewrd.WasteReceived.WasteCode != null) && !this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
|
{
|
|
_selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
|
this.dataGridWasteReceived.Items.Refresh();
|
|
ewrd.WasteReceived = new WasteReceived();
|
|
ewrd.WasteReceived.Identifier = WasteReceived.GetNewIdentifier(_selectedWAS_RCPT.WasteReceived);
|
|
ewrd.WasteReceived.WAS_RCPT = _selectedWAS_RCPT;
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
}
|
|
};
|
|
|
|
if (ewrd.ShowDialog() ?? false)
|
|
{
|
|
if ((ewrd.WasteReceived.WasteCode != null) && !_selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
|
{
|
|
_selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
|
}
|
|
this.dataGridWasteReceived.Items.Refresh();
|
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
|
}
|
|
}
|
|
|
|
private void DataGridWasteReceived_AddingNewItem(object sender, AddingNewItemEventArgs e)
|
|
{
|
|
DataGridWasteReceived_CreateRequested();
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
}
|
|
}
|