7.9.0.4 Testversion, Status-Festlegung vereinheitlicht, Speichern Remark automatisch, kleinere Bugs beseitigt
This commit is contained in:
parent
bcf4c33478
commit
521786002b
@ -45,7 +45,7 @@
|
|||||||
<Label Content="To" Grid.Column="2" />
|
<Label Content="To" Grid.Column="2" />
|
||||||
<xctk:DateTimePicker x:Name="dateTimePickerTo" Margin="2" Grid.Column="3" Format="ShortDate" />
|
<xctk:DateTimePicker x:Name="dateTimePickerTo" Margin="2" Grid.Column="3" Format="ShortDate" />
|
||||||
<Button x:Name="buttonLoad" Grid.Column="4" Content="Load" Margin="2" Click="buttonLoad_Click" />
|
<Button x:Name="buttonLoad" Grid.Column="4" Content="Load" Margin="2" Click="buttonLoad_Click" />
|
||||||
<Button x:Name="buttonSave" Grid.Column="5" Content="Save" Margin="2" Click="buttonSave_Click" />
|
<!--Button x:Name="buttonSave" Grid.Column="5" Content="Save" Margin="2" Click="buttonSave_Click" /-->
|
||||||
<Button x:Name="buttonRequestIds" Grid.Column="6" Content="Request marked Ids" Margin="2" Click="buttonRequestIds_Click" />
|
<Button x:Name="buttonRequestIds" Grid.Column="6" Content="Request marked Ids" Margin="2" Click="buttonRequestIds_Click" />
|
||||||
<Button x:Name="buttonRequestPlus3" Grid.Column="7" Content="Request +3" Margin="2" Click="buttonRequestIds_Click" />
|
<Button x:Name="buttonRequestPlus3" Grid.Column="7" Content="Request +3" Margin="2" Click="buttonRequestIds_Click" />
|
||||||
<Button x:Name="buttonImport" Grid.Column="9" Margin="2" Content="Import" Click="buttonImport_Click" />
|
<Button x:Name="buttonImport" Grid.Column="9" Margin="2" Content="Import" Click="buttonImport_Click" />
|
||||||
@ -67,6 +67,9 @@
|
|||||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.UPDATED}">
|
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.UPDATED}">
|
||||||
<Setter Property="Background" Value="LightYellow"></Setter>
|
<Setter Property="Background" Value="LightYellow"></Setter>
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.NO_ETA}">
|
||||||
|
<Setter Property="Background" Value="LightCoral"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.REQUESTING_ID}">
|
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.REQUESTING_ID}">
|
||||||
<Setter Property="Background" Value="Yellow"></Setter>
|
<Setter Property="Background" Value="Yellow"></Setter>
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
@ -94,7 +97,7 @@
|
|||||||
<DataGridTextColumn Header="ETA" Binding="{Binding ColK}" IsReadOnly="True" />
|
<DataGridTextColumn Header="ETA" Binding="{Binding ColK}" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Header="ETD" Binding="{Binding ColL}" IsReadOnly="True" />
|
<DataGridTextColumn Header="ETD" Binding="{Binding ColL}" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Header="Id" Binding="{Binding ColM}" IsReadOnly="True" />
|
<DataGridTextColumn Header="Id" Binding="{Binding ColM}" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Header="Remark" Binding="{Binding Remark, Mode=TwoWay}" />
|
<DataGridTextColumn Header="Remark" Binding="{Binding Remark, Mode=TwoWay}" x:Name="gridColumnRemark" />
|
||||||
|
|
||||||
<!--DataGridTextColumn x:Name="gridColumnPONumber" Header="PO number" Binding="{Binding PONumber, Mode=TwoWay}" IsReadOnly="False" /-->
|
<!--DataGridTextColumn x:Name="gridColumnPONumber" Header="PO number" Binding="{Binding PONumber, Mode=TwoWay}" IsReadOnly="False" /-->
|
||||||
<!--DataGridComboBoxColumn x:Name="gridColumnGroup" Header="Group" IsReadOnly="False" SelectedValueBinding="{Binding Flags, Mode=TwoWay}"
|
<!--DataGridComboBoxColumn x:Name="gridColumnGroup" Header="Group" IsReadOnly="False" SelectedValueBinding="{Binding Flags, Mode=TwoWay}"
|
||||||
|
|||||||
@ -99,27 +99,26 @@ namespace ENI2.Controls
|
|||||||
dataGridPOCores.ItemsSource = maerskDataList;
|
dataGridPOCores.ItemsSource = maerskDataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dataGridPOCores_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
private async void dataGridPOCores_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
if (e.EditAction == DataGridEditAction.Commit)
|
if (e.EditAction == DataGridEditAction.Commit)
|
||||||
{
|
{
|
||||||
if (e.Column == gridColumnPONumber)
|
if (e.Column == gridColumnRemark)
|
||||||
{
|
{
|
||||||
// validate for "true" number
|
MaerskData maerskData = this.maerskDataList[e.Row.GetIndex()];
|
||||||
|
|
||||||
var el = e.EditingElement as System.Windows.Controls.TextBox;
|
var el = e.EditingElement as System.Windows.Controls.TextBox;
|
||||||
if (!el.Text.IsDigitsOnly())
|
if (el.Text.Length > 100)
|
||||||
{
|
{
|
||||||
el.Text = string.Empty;
|
el.Text = el.Text.Trim().Substring(0, 100);
|
||||||
e.Cancel = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// buttonSaveChanges.IsEnabled = true;
|
|
||||||
MessageCore editedCore = this.filteredResult[e.Row.GetIndex()];
|
|
||||||
editedCore.IsDirty = true;
|
|
||||||
}
|
}
|
||||||
|
maerskData.Remark = el.Text;
|
||||||
|
|
||||||
|
if (maerskData.MessageCore != null)
|
||||||
|
await DBManagerAsync.Save(maerskData);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
if(e.Column == gridColumnGroup)
|
if(e.Column == gridColumnGroup)
|
||||||
{
|
{
|
||||||
var el = e.EditingElement as ComboBox;
|
var el = e.EditingElement as ComboBox;
|
||||||
@ -153,15 +152,58 @@ namespace ENI2.Controls
|
|||||||
el.Text = string.Empty;
|
el.Text = string.Empty;
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region private methods
|
#region private methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// "Status" of a Maersk Data element is a momentary evaluation that is relevant for display purposes only
|
||||||
|
/// It is not saved
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateStatus(MaerskData md)
|
||||||
|
{
|
||||||
|
// here we set the following: NO_ID, NO_ID_AND_DUE, ID, NO_ETA and DONE
|
||||||
|
// the other status are set during active processing
|
||||||
|
if(md.ETA.HasValue)
|
||||||
|
{
|
||||||
|
if((md.ETA.Value - DateTime.Now).TotalSeconds > 0) // future
|
||||||
|
{
|
||||||
|
if(!md.ColM.IsNullOrEmpty() || ((md.MessageCore != null) && (!md.MessageCore.VisitId.IsNullOrEmpty())))
|
||||||
|
{
|
||||||
|
md.Status = MaerskData.MDStatus.ID;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(md.ETA.Value.IsNextXDays(3))
|
||||||
|
{
|
||||||
|
md.Status = MaerskData.MDStatus.NO_ID_AND_DUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
md.Status = MaerskData.MDStatus.NO_ID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else // past
|
||||||
|
{
|
||||||
|
md.Status = MaerskData.MDStatus.DONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// no ETA means done
|
||||||
|
md.Status = MaerskData.MDStatus.NO_ETA;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private async void PerformSearch()
|
private async void PerformSearch()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -188,6 +230,7 @@ namespace ENI2.Controls
|
|||||||
{
|
{
|
||||||
md.MessageCore = core;
|
md.MessageCore = core;
|
||||||
md.MessageCoreId = core.Id.Value;
|
md.MessageCoreId = core.Id.Value;
|
||||||
|
this.UpdateStatus(md);
|
||||||
if(!maerskDataList.Contains(md)) // DatabaseEntity implements IEquatable
|
if(!maerskDataList.Contains(md)) // DatabaseEntity implements IEquatable
|
||||||
this.maerskDataList.Add(md);
|
this.maerskDataList.Add(md);
|
||||||
}
|
}
|
||||||
@ -250,6 +293,13 @@ namespace ENI2.Controls
|
|||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (isFirstRow)
|
||||||
|
{
|
||||||
|
isFirstRow = false; // this must be a header row, skip
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (reader.FieldCount < 13)
|
if (reader.FieldCount < 13)
|
||||||
{
|
{
|
||||||
throw new InvalidDataException("Sheet must have 13 columns of data");
|
throw new InvalidDataException("Sheet must have 13 columns of data");
|
||||||
@ -276,16 +326,14 @@ namespace ENI2.Controls
|
|||||||
if (reader.GetFieldType(10) == typeof(DateTime))
|
if (reader.GetFieldType(10) == typeof(DateTime))
|
||||||
{
|
{
|
||||||
md.ETA = reader.GetDateTime(10);
|
md.ETA = reader.GetDateTime(10);
|
||||||
}
|
md.ColK = md.ETA.ToString();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(isFirstRow)
|
md.ColK = reader.GetString(10);
|
||||||
{
|
if (DateTime.TryParse(md.ColK, out DateTime aDateTime))
|
||||||
isFirstRow = false; // this must be a header row, skip
|
md.ETA = aDateTime;
|
||||||
continue;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
md.ColK = md.ETA.ToString();
|
|
||||||
}
|
}
|
||||||
if (!reader.IsDBNull(11)) md.ColL = ReadFieldAsString(reader, 11);
|
if (!reader.IsDBNull(11)) md.ColL = ReadFieldAsString(reader, 11);
|
||||||
if (!reader.IsDBNull(12)) md.ColM = ReadFieldAsString(reader, 12);
|
if (!reader.IsDBNull(12)) md.ColM = ReadFieldAsString(reader, 12);
|
||||||
@ -303,8 +351,7 @@ namespace ENI2.Controls
|
|||||||
{
|
{
|
||||||
MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
// we only want cores for the next 3 days
|
|
||||||
if (importData.Count > 0)
|
if (importData.Count > 0)
|
||||||
{
|
{
|
||||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
||||||
@ -314,24 +361,18 @@ namespace ENI2.Controls
|
|||||||
{
|
{
|
||||||
if (this.maerskDataList.Contains(md))
|
if (this.maerskDataList.Contains(md))
|
||||||
{
|
{
|
||||||
|
// update record with imported record
|
||||||
MaerskData foundData = this.maerskDataList.First((m) => (m.ColF != null) && m.ColF.Equals(md.ColF) && (m.ColG != null) && m.ColG.Equals(md.ColG) && (md.ColH != null) && md.ColH.Equals(md.ColH));
|
MaerskData foundData = this.maerskDataList.First((m) => (m.ColF != null) && m.ColF.Equals(md.ColF) && (m.ColG != null) && m.ColG.Equals(md.ColG) && (md.ColH != null) && md.ColH.Equals(md.ColH));
|
||||||
if (foundData.Update(md))
|
if(foundData.ETA.HasValue && ((foundData.ETA.Value - DateTime.Now).TotalSeconds > 0) && foundData.Update(md))
|
||||||
foundData.Status = MaerskData.MDStatus.UPDATED;
|
foundData.Status = MaerskData.MDStatus.UPDATED;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
md.Status = MaerskData.MDStatus.ID;
|
|
||||||
|
|
||||||
if (!md.ColM.IsNullOrEmpty())
|
if (!md.ColM.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
md.MessageCore = await DBManagerAsync.LoadCoreByVisitIdAsync(md.ColM);
|
md.MessageCore = await DBManagerAsync.LoadCoreByVisitIdAsync(md.ColM);
|
||||||
}
|
}
|
||||||
else
|
this.UpdateStatus(md);
|
||||||
{
|
|
||||||
md.Status = MaerskData.MDStatus.NO_ID;
|
|
||||||
if (md.ETA.HasValue && md.ETA.Value.IsNextXDays(3))
|
|
||||||
md.Status = MaerskData.MDStatus.NO_ID_AND_DUE;
|
|
||||||
}
|
|
||||||
maerskDataList.Add(md);
|
maerskDataList.Add(md);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -371,6 +412,8 @@ namespace ENI2.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
private async void buttonSave_Click(object sender, RoutedEventArgs e)
|
private async void buttonSave_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
||||||
@ -387,6 +430,8 @@ namespace ENI2.Controls
|
|||||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
private async void buttonRequestIds_Click(object sender, RoutedEventArgs e)
|
private async void buttonRequestIds_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
// find all entries from now until 3 days into the future and track parallel requests
|
// find all entries from now until 3 days into the future and track parallel requests
|
||||||
|
|||||||
@ -36,7 +36,7 @@
|
|||||||
<MinimumRequiredVersion>5.4.0.0</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.4.0.0</MinimumRequiredVersion>
|
||||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||||
<WebPage>publish.html</WebPage>
|
<WebPage>publish.html</WebPage>
|
||||||
<ApplicationRevision>3</ApplicationRevision>
|
<ApplicationRevision>5</ApplicationRevision>
|
||||||
<ApplicationVersion>7.9.0.%2a</ApplicationVersion>
|
<ApplicationVersion>7.9.0.%2a</ApplicationVersion>
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||||
|
|||||||
@ -34,7 +34,7 @@ namespace bsmd.database
|
|||||||
|
|
||||||
public enum MDStatus
|
public enum MDStatus
|
||||||
{
|
{
|
||||||
[Description("No id")]
|
[Description("No id and is in the future")]
|
||||||
NO_ID,
|
NO_ID,
|
||||||
[Description("Updated")]
|
[Description("Updated")]
|
||||||
UPDATED,
|
UPDATED,
|
||||||
@ -42,10 +42,15 @@ namespace bsmd.database
|
|||||||
REQUESTING_ID,
|
REQUESTING_ID,
|
||||||
[Description("Id assigned")]
|
[Description("Id assigned")]
|
||||||
ID_ASSIGNED,
|
ID_ASSIGNED,
|
||||||
[Description("upcoming without id")]
|
[Description("upcoming without an id")]
|
||||||
NO_ID_AND_DUE,
|
NO_ID_AND_DUE,
|
||||||
[Description("Has id")]
|
[Description("Has id and is in the future")]
|
||||||
ID
|
ID,
|
||||||
|
[Description("In the past, id or not")]
|
||||||
|
DONE,
|
||||||
|
[Description("no ETA found on data record")]
|
||||||
|
NO_ETA
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -112,6 +117,7 @@ namespace bsmd.database
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string ColM { get; set; }
|
public string ColM { get; set; }
|
||||||
|
|
||||||
|
[MaxLength(100)]
|
||||||
public string Remark { get; set; }
|
public string Remark { get; set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -172,7 +178,7 @@ namespace bsmd.database
|
|||||||
|
|
||||||
// try parsing the column to datetime
|
// try parsing the column to datetime
|
||||||
if (DateTime.TryParse(md.ColK, out DateTime eta))
|
if (DateTime.TryParse(md.ColK, out DateTime eta))
|
||||||
ETA = eta;
|
md.ETA = eta;
|
||||||
}
|
}
|
||||||
return md;
|
return md;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user