4 Commits

Author SHA1 Message Date
Jonathan Jenne
374b1961e2 zugferdtest: fix test form 2023-06-21 13:13:04 +02:00
Jonathan Jenne
36326ba644 ZUGFeRDRESTService: add validation for valid properties 2023-06-21 13:12:43 +02:00
Jonathan Jenne
ac336ce94d ZUGFeRDTest: update 2023-06-16 11:56:01 +02:00
Jonathan Jenne
a4e46d6817 LookupGrid: fix error when select does not return any result 2023-06-16 11:55:46 +02:00
4 changed files with 53 additions and 30 deletions

View File

@@ -1,2 +1,3 @@
DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.GridLookUpEdit, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraEditors.GridLookUpEdit, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -96,8 +96,10 @@ Public Class frmLookupGrid
_View.BestFitColumns() _View.BestFitColumns()
' Datenspalte zusätzlich in der Breite anpassen ' Datenspalte zusätzlich in der Breite anpassen
Dim oDataColumn As GridColumn = _View.Columns.Item(_DataColumn) If _View.Columns.Count = 0 Then
oDataColumn.BestFit() Dim oDataColumn As GridColumn = _View.Columns.Item(_DataColumn)
oDataColumn.BestFit()
End If
End Sub End Sub
Private Sub frmLookupGrid_Shown(sender As Object, e As EventArgs) Handles Me.Shown Private Sub frmLookupGrid_Shown(sender As Object, e As EventArgs) Handles Me.Shown
BringToFront() BringToFront()

View File

@@ -126,37 +126,43 @@ Public Class Form1
Dim oArgs As New WorkerArgs() Dim oArgs As New WorkerArgs()
oArgs = LoadPropertyMapFor(oArgs) oArgs = LoadPropertyMapFor(oArgs)
If oDialogResult = DialogResult.OK Then Try
Dim oDoc = _zugferd.ValidateZUGFeRDFileWithGDPicture(OpenFileDialog1.FileName) If oDialogResult = DialogResult.OK Then
Dim oResult = _zugferd.SerializeZUGFeRDDocument(oDoc) Dim oDoc = _zugferd.ValidateZUGFeRDFileWithGDPicture(OpenFileDialog1.FileName)
Dim oResult = _zugferd.ValidateZUGFeRDDocument(oDoc)
oResult = _zugferd.SerializeZUGFeRDDocument(oDoc)
WriteLog("Specification: " & oResult.Specification) WriteLog("Specification: " & oResult.Specification)
WriteLog("Embedded File Name: " & oResult.DataFileName) WriteLog("Embedded File Name: " & oResult.DataFileName)
Dim oSpecification = oResult.Specification Dim oSpecification = oResult.Specification
If oSpecification = ZUGFeRDInterface.ZUGFERD_SPEC_10 Then If oSpecification = ZUGFeRDInterface.ZUGFERD_SPEC_10 Then
oSpecification = ZUGFeRDInterface.ZUGFERD_SPEC_DEFAULT oSpecification = ZUGFeRDInterface.ZUGFERD_SPEC_DEFAULT
End If
Dim oPropertyMap = oArgs.PropertyMap.
Where(Function(kv) kv.Value.Specification = oSpecification).
ToDictionary(Function(kv) kv.Key, Function(kv) kv.Value)
Dim oResult2 = _zugferd.PropertyValues.CheckPropertyValues(oResult.SchemaObject, oPropertyMap, "test")
WriteLog("Valid Properties: [{0}]", oResult2.ValidProperties.Count)
For Each Prop In oResult2.ValidProperties
WriteLog("Property: [{0}] = [{1}]", Prop.Description, Prop.Value)
Next
WriteLog("Missing Properties: [{0}]", oResult2.MissingProperties.Count)
For Each Prop In oResult2.MissingProperties
WriteLog("Missing Property: [{0}]", Prop)
Next
WriteLog("--------------------------------")
End If End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
Dim oPropertyMap = oArgs.PropertyMap.
Where(Function(kv) kv.Value.Specification = oSpecification).
ToDictionary(Function(kv) kv.Key, Function(kv) kv.Value)
Dim oResult2 = _zugferd.PropertyValues.CheckPropertyValues(oResult.SchemaObject, oPropertyMap, "test")
WriteLog("Valid Properties: [{0}]", oResult2.ValidProperties.Count)
For Each Prop In oResult2.ValidProperties
WriteLog("Property: [{0}] = [{1}]", Prop.Description, Prop.Value)
Next
WriteLog("Missing Properties: [{0}]", oResult2.MissingProperties.Count)
For Each Prop In oResult2.MissingProperties
WriteLog("Missing Property: [{0}]", Prop)
Next
WriteLog("--------------------------------")
End If
End Sub End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

View File

@@ -10,6 +10,7 @@ using static DigitalData.Modules.Interfaces.ZUGFeRDInterface;
using static DigitalData.Modules.Interfaces.PropertyValues; using static DigitalData.Modules.Interfaces.PropertyValues;
using System.Data.SqlClient; using System.Data.SqlClient;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using FirebirdSql.Data.FirebirdClient;
namespace ZUGFeRDRESTService.Controllers namespace ZUGFeRDRESTService.Controllers
{ {
@@ -132,7 +133,7 @@ namespace ZUGFeRDRESTService.Controllers
{ {
_logger.Info("Start processing request to ValidationController"); _logger.Info("Start processing request to ValidationController");
ZugferdResult oZugferdResult; ZugferdResult oZugferdResult = null;
CheckPropertyValuesResult oPropertyResult = new CheckPropertyValuesResult(); CheckPropertyValuesResult oPropertyResult = new CheckPropertyValuesResult();
try try
@@ -153,6 +154,8 @@ namespace ZUGFeRDRESTService.Controllers
oZugferdResult = _zugferd.ExtractZUGFeRDFileWithGDPicture(oStream); oZugferdResult = _zugferd.ExtractZUGFeRDFileWithGDPicture(oStream);
_logger.Info("Detected Specification was: [{0}]", oZugferdResult.Specification); _logger.Info("Detected Specification was: [{0}]", oZugferdResult.Specification);
var oFilteredPropertyMap = _zugferd.FilterPropertyMap(_propertyMap, oZugferdResult.Specification); var oFilteredPropertyMap = _zugferd.FilterPropertyMap(_propertyMap, oZugferdResult.Specification);
@@ -187,6 +190,13 @@ namespace ZUGFeRDRESTService.Controllers
throw new ZUGFeRDExecption(ErrorType.MissingProperties, "Missing Properties"); throw new ZUGFeRDExecption(ErrorType.MissingProperties, "Missing Properties");
} }
oZugferdResult = _zugferd.ValidateZUGFeRDDocument(oZugferdResult);
if (oZugferdResult.ValidationErrors.Any())
{
throw new ZUGFeRDExecption(ErrorType.ValidationFailed, "Validation Failed");
}
Tuple<bool, string> oValidateResult = ValidateBuyerOrderReference(oPropertyResult.ValidProperties); Tuple<bool, string> oValidateResult = ValidateBuyerOrderReference(oPropertyResult.ValidProperties);
if (oValidateResult.Item1 == false) if (oValidateResult.Item1 == false)
@@ -234,6 +244,7 @@ namespace ZUGFeRDRESTService.Controllers
ErrorType.MissingProperties => "Die hochgeladene Datei ist keine gültige ZUGFeRD-Rechnung, es fehlen einige Metadaten.", ErrorType.MissingProperties => "Die hochgeladene Datei ist keine gültige ZUGFeRD-Rechnung, es fehlen einige Metadaten.",
ErrorType.FileTooBig => string.Format("Die hochgeladene Datei überschreitet die zulässige Dateigröße [{0}].", _MaxFileSizeInMegabytes), ErrorType.FileTooBig => string.Format("Die hochgeladene Datei überschreitet die zulässige Dateigröße [{0}].", _MaxFileSizeInMegabytes),
ErrorType.UnsupportedFormat => "Die hochgeladene Datei enthält ein falsches oder nicht unterstütztes ZUGFeRD Format.", ErrorType.UnsupportedFormat => "Die hochgeladene Datei enthält ein falsches oder nicht unterstütztes ZUGFeRD Format.",
ErrorType.ValidationFailed => "Die hochgeladene Datei enthält ungültige Werte.",
_ => "Die hochgeladene Datei kann nicht validiert werden.", _ => "Die hochgeladene Datei kann nicht validiert werden.",
}; };
@@ -242,9 +253,12 @@ namespace ZUGFeRDRESTService.Controllers
{ {
// Errors contains the list of missing fields // Errors contains the list of missing fields
ErrorType.MissingProperties => oPropertyResult.MissingProperties, ErrorType.MissingProperties => oPropertyResult.MissingProperties,
ErrorType.ValidationFailed => oZugferdResult.ValidationErrors.Select(e =>
{
return $"Element '{e.ElementName}' mit Wert '{e.ElementValue}': {e.ErrorMessage}";
}).ToList(),
_ => new List<string>() _ => new List<string>()
}; };
_logger.Info($"Responding with message: [{oMessage}]"); _logger.Info($"Responding with message: [{oMessage}]");
return new ValidationResponse() return new ValidationResponse()