diff --git a/MultiTool.Form/MultiTool.Form.vbproj b/MultiTool.Form/MultiTool.Form.vbproj index b5a1e3a..830f3df 100644 --- a/MultiTool.Form/MultiTool.Form.vbproj +++ b/MultiTool.Form/MultiTool.Form.vbproj @@ -325,6 +325,7 @@ + diff --git a/MultiTool.Form/My Project/Resources.Designer.vb b/MultiTool.Form/My Project/Resources.Designer.vb index 96aeba2..fd2b55a 100644 --- a/MultiTool.Form/My Project/Resources.Designer.vb +++ b/MultiTool.Form/My Project/Resources.Designer.vb @@ -100,6 +100,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage. + ''' + Friend ReadOnly Property actions_delete() As DevExpress.Utils.Svg.SvgImage + Get + Dim obj As Object = ResourceManager.GetObject("actions_delete", resourceCulture) + Return CType(obj,DevExpress.Utils.Svg.SvgImage) + End Get + End Property + ''' ''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage. ''' diff --git a/MultiTool.Form/My Project/Resources.resx b/MultiTool.Form/My Project/Resources.resx index 73567eb..fe39dd8 100644 --- a/MultiTool.Form/My Project/Resources.resx +++ b/MultiTool.Form/My Project/Resources.resx @@ -145,9 +145,6 @@ ..\Resources\actions_send3.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\rotatecounterclockwise.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - ..\Resources\preview.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -169,11 +166,14 @@ ..\Resources\squarified.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\actions_reload.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + ..\Resources\open21.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\itemtypechecked.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\parameters.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a ..\Resources\bo_product.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -181,8 +181,8 @@ ..\Resources\paymentrefund.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\open1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\support.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a ..\Resources\bo_unknown.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -202,8 +202,8 @@ ..\Resources\singlepageview.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\parameters.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\open1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a ..\Resources\export.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -214,8 +214,8 @@ ..\Resources\bo_validation.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\actions_reload.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\rotatecounterclockwise.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a ..\Resources\actions_deletecircled.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -223,6 +223,9 @@ ..\Resources\actions_arrow4down.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\actions_checkcircled1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + ..\Resources\open2.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -259,10 +262,10 @@ ..\Resources\resetview.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\actions_checkcircled1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\itemtypechecked.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\support.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\actions_delete.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a \ No newline at end of file diff --git a/MultiTool.Form/Resources/actions_delete.svg b/MultiTool.Form/Resources/actions_delete.svg new file mode 100644 index 0000000..72905f6 --- /dev/null +++ b/MultiTool.Form/Resources/actions_delete.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/MultiTool.Form/frmImportMain.vb b/MultiTool.Form/frmImportMain.vb index 10d1b4c..7e90f0d 100644 --- a/MultiTool.Form/frmImportMain.vb +++ b/MultiTool.Form/frmImportMain.vb @@ -219,6 +219,9 @@ Public Class frmImportMain CurrentDocument.Rows.Item(oIndex) = oModifiedRow LoadDocument(CurrentDocument) + + ' Refresh Files to update Row color + GridViewFiles.RefreshData() End If Catch ex As Exception FormHelper.ShowError(ex, My.Resources.frmImportMainExtra.Laden_der_Detailzeilen) diff --git a/MultiTool.Form/frmRowEditor.Designer.vb b/MultiTool.Form/frmRowEditor.Designer.vb index 8469bbd..576aef1 100644 --- a/MultiTool.Form/frmRowEditor.Designer.vb +++ b/MultiTool.Form/frmRowEditor.Designer.vb @@ -24,6 +24,7 @@ Partial Class frmRowEditor Me.btnSave = New DevExpress.XtraBars.BarButtonItem() Me.btnApplyFromWinline = New DevExpress.XtraBars.BarButtonItem() Me.btnApplyFromOriginal = New DevExpress.XtraBars.BarButtonItem() + Me.btnClearValue = New DevExpress.XtraBars.BarButtonItem() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() @@ -44,9 +45,9 @@ Partial Class frmRowEditor ' Me.RibbonControl1.CommandLayout = DevExpress.XtraBars.Ribbon.CommandLayout.Simplified Me.RibbonControl1.ExpandCollapseItem.Id = 0 - Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.btnSave, Me.btnApplyFromWinline, Me.btnApplyFromOriginal}) + Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.btnSave, Me.btnApplyFromWinline, Me.btnApplyFromOriginal, Me.btnClearValue}) Me.RibbonControl1.Location = New System.Drawing.Point(0, 0) - Me.RibbonControl1.MaxItemId = 4 + Me.RibbonControl1.MaxItemId = 5 Me.RibbonControl1.Name = "RibbonControl1" Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] @@ -75,6 +76,13 @@ Partial Class frmRowEditor Me.btnApplyFromOriginal.ImageOptions.SvgImage = Global.MultiTool.Form.My.Resources.Resources.redo Me.btnApplyFromOriginal.Name = "btnApplyFromOriginal" ' + 'btnClearValue + ' + Me.btnClearValue.Caption = "Wert leeren" + Me.btnClearValue.Id = 4 + Me.btnClearValue.ImageOptions.SvgImage = Global.MultiTool.Form.My.Resources.Resources.actions_delete + Me.btnClearValue.Name = "btnClearValue" + ' 'RibbonPage1 ' Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2}) @@ -91,6 +99,7 @@ Partial Class frmRowEditor ' Me.RibbonPageGroup2.ItemLinks.Add(Me.btnApplyFromWinline) Me.RibbonPageGroup2.ItemLinks.Add(Me.btnApplyFromOriginal) + Me.RibbonPageGroup2.ItemLinks.Add(Me.btnClearValue) Me.RibbonPageGroup2.Name = "RibbonPageGroup2" Me.RibbonPageGroup2.Text = "RibbonPageGroup2" ' @@ -206,4 +215,5 @@ Partial Class frmRowEditor Friend WithEvents btnApplyFromWinline As DevExpress.XtraBars.BarButtonItem Friend WithEvents btnApplyFromOriginal As DevExpress.XtraBars.BarButtonItem Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents btnClearValue As DevExpress.XtraBars.BarButtonItem End Class diff --git a/MultiTool.Form/frmRowEditor.vb b/MultiTool.Form/frmRowEditor.vb index 4671b55..9a25791 100644 --- a/MultiTool.Form/frmRowEditor.vb +++ b/MultiTool.Form/frmRowEditor.vb @@ -155,25 +155,28 @@ Public Class frmRowEditor End If Dim oFieldValue As FieldValue = oField.Value - Dim oGridValue As String = Utils.NotNull(oRow.Item(COL_VALUE_FINAL), String.Empty) + Dim oValueFromGrid As String = Utils.NotNull(oRow.Item(COL_VALUE_FINAL), String.Empty) - If oField.Key = "Datum_Auftrag-Bestellung" And oGridValue.Length > 0 Then - If TryParseDate(oGridValue) Is Nothing Then + ' Do the dirtiest date validation of all times + If oField.Value.DataType = ColumnType.Date And oValueFromGrid.Length > 0 Then + If TryParseDate(oValueFromGrid) Is Nothing Then MsgBox(String.Format(My.Resources.frmRowEditorExtra.Datumswert_für___0___enthält_einen_ungüligen_Wert, oField.Key), MsgBoxStyle.Exclamation, Text) Exit Sub End If End If - If Not oFieldValue.Final.Equals(oGridValue) Then - Dim oValue = Utils.NotNull(oRow.Item(COL_VALUE_FINAL), String.Empty).ToString - + ' If the value was changed + If Not oFieldValue.Final.Equals(oValueFromGrid) Then ' If new value is not empty, any error will be removed. ' Could cause problems in the future because a value might not equal to 'no error'. - If oValue <> String.Empty Then - oFieldValue.Error = FieldError.None - End If + ' 03.12.21: For now we always remove the error if ANYTHING changed about the field + 'If oValueFromGrid <> String.Empty Then + ' oFieldValue.Error = FieldError.None + 'End If + oFieldValue.Error = FieldError.None - oFieldValue.Final = oValue.Trim() + ' Save the grid value to the Field + oFieldValue.Final = oValueFromGrid.Trim() If _DocumentRow.Fields.ContainsKey(oField.Key) Then _DocumentRow.Fields.Item(oField.Key) = oFieldValue @@ -208,16 +211,32 @@ Public Class frmRowEditor CopyValueToFinalColumn(COL_VALUE_ORIGINAL) End Sub - Private Sub CopyValueToFinalColumn(pSourceColumnName As String) + Private Sub btnClearValue_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnClearValue.ItemClick + CopyValueToFinalColumn(String.Empty) + End Sub + + Private Sub CopyValueToFinalColumn(pSourceColumnNameOrValue As String) Dim oSelectedRow As DataRow = GridView1.GetDataRow(GridView1.FocusedRowHandle) If oSelectedRow Is Nothing Then Exit Sub End If - oSelectedRow.Item(COL_VALUE_FINAL) = oSelectedRow.Item(pSourceColumnName) + Select Case pSourceColumnNameOrValue + Case COL_VALUE_EXTERNAL + oSelectedRow.Item(COL_VALUE_FINAL) = oSelectedRow.Item(pSourceColumnNameOrValue) + + Case COL_VALUE_ORIGINAL + oSelectedRow.Item(COL_VALUE_FINAL) = oSelectedRow.Item(pSourceColumnNameOrValue) + + Case Else + oSelectedRow.Item(COL_VALUE_FINAL) = pSourceColumnNameOrValue + + End Select + oSelectedRow.AcceptChanges() GridView1.CloseEditor() + GridView1.RefreshData() End Sub Private Sub GridView1_CustomRowCellEdit(sender As Object, e As CustomRowCellEditEventArgs) Handles GridView1.CustomRowCellEdit @@ -261,7 +280,7 @@ Public Class frmRowEditor Private Sub GridView1_CustomDrawCell(sender As Object, e As DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs) Handles GridView1.CustomDrawCell Dim oDataRow As DataRow = GridView1.GetDataRow(e.RowHandle) Dim oKey As String = oDataRow.Item(COL_KEY) - Dim oValue As String = oDataRow.Item(COL_VALUE_FINAL) + Dim oValue As String = Utils.NotNull(oDataRow.Item(COL_VALUE_FINAL), String.Empty) Dim oColumn = _Table.Columns. Where(Function(c) c.Name = oKey). SingleOrDefault() @@ -279,11 +298,20 @@ Public Class frmRowEditor If oField.Value.HasError Then e.Appearance.BackColor = Color.LightCoral End If + + ' TODO: Remove this workaround if the conditions for errors are good now + 'If e.DisplayText = String.Empty And ( + ' oField.Value.Error = FieldError.AccountNotFound Or + ' oField.Value.Error = FieldError.ArticleNotFound) Then + ' e.Appearance.BackColor = Color.LightCoral + 'End If End If - If oField.Value.HasError Then - e.Appearance.BackColor = Color.LightCoral - End If + + + 'If oField.Value.HasError Then + ' e.Appearance.BackColor = Color.LightCoral + 'End If End Sub End Class diff --git a/MultiTool.Shared/Documents/DocumentRow.vb b/MultiTool.Shared/Documents/DocumentRow.vb index fb761ba..8e02cbc 100644 --- a/MultiTool.Shared/Documents/DocumentRow.vb +++ b/MultiTool.Shared/Documents/DocumentRow.vb @@ -62,9 +62,11 @@ Public ReadOnly Property HasError As Boolean Get - Return IsRequired = True And ( - [Error] <> FieldError.None Or Final = String.Empty - ) + Return [Error] <> FieldError.None Or (IsRequired And Final = String.Empty) + + 'Return IsRequired = True And ( + ' [Error] <> FieldError.None Or Final = String.Empty + ') End Get End Property diff --git a/MultiTool.Shared/Winline/WebServiceData.vb b/MultiTool.Shared/Winline/WebServiceData.vb index dc8e509..84aa79a 100644 --- a/MultiTool.Shared/Winline/WebServiceData.vb +++ b/MultiTool.Shared/Winline/WebServiceData.vb @@ -117,17 +117,19 @@ Namespace Winline Dim oResponseObject As Templates.Entities.MESOWebServiceResult = oSerializer.Deserialize(oStream) Dim oErrorStrings As New List(Of String) - For Each oDetails As Templates.Entities.MESOWebServiceResultResultDetails In oResponseObject.ResultDetails + If oResponseObject.ResultDetails IsNot Nothing Then + For Each oDetails As Templates.Entities.MESOWebServiceResultResultDetails In oResponseObject.ResultDetails - If oDetails.Success = True Then - Logger.Info("KeyValue: [{0}]", oDetails.KeyValue) - Logger.Info("VoucherNumber: [{0}]", oDetails.VoucherNumber) - Else - Logger.Warn("ErrorCode: [{0}]", oDetails.ErrorCode) - Logger.Warn("ErrorText: [{0}]", oDetails.ErrorText) - oErrorStrings.Add($"[{oDetails.ErrorCode}] {oDetails.ErrorText}") - End If - Next + If oDetails.Success = True Then + Logger.Info("KeyValue: [{0}]", oDetails.KeyValue) + Logger.Info("VoucherNumber: [{0}]", oDetails.VoucherNumber) + Else + Logger.Warn("ErrorCode: [{0}]", oDetails.ErrorCode) + Logger.Warn("ErrorText: [{0}]", oDetails.ErrorText) + oErrorStrings.Add($"[{oDetails.ErrorCode}] {oDetails.ErrorText}") + End If + Next + End If If oResponseObject.OverallSuccess = False Then Dim oMessage = $"Request to Webservice was unsuccessful:{vbNewLine}{vbNewLine}{String.Join(vbNewLine, oErrorStrings.ToArray)}"