improve function + params handling

This commit is contained in:
Jonathan Jenne 2022-03-16 12:17:54 +01:00
parent e3c2e100bb
commit 4c1a3a9220
2 changed files with 36 additions and 18 deletions

View File

@ -281,22 +281,11 @@ Namespace Documents
Continue For Continue For
End If End If
Dim oFunctionName = oColumn.Config?.Function?.Name Dim oFunctionName = oColumn.Config.FunctionName
Dim oFunctionParams = oColumn.Config.FunctionParams
Dim oParamsDict = ParseFunctionParamsAsDict(oFunctionParams)
' TODO: Make more nice If oFunctionName = Constants.FUNCTION_PRICE Then
Dim oParams = oColumn.Config?.Function?.Params
Dim oParamsDict As New Dictionary(Of String, String)
If oParams IsNot Nothing AndAlso oParams <> String.Empty Then
Dim oParamList = oParams.Split("|").ToList()
For Each oParam In oParamList
Dim oParamSplit = oParam.Split("=")
oParamsDict.Add(oParamSplit(0), oParamSplit(1))
Next
End If
If oFunctionName = "PRICE" Then
Await SetPrice(oRow, oField.Key, oParamsDict, pDocument, pMandator, pTemplate) Await SetPrice(oRow, oField.Key, oParamsDict, pDocument, pMandator, pTemplate)
End If End If
Next Next
@ -319,10 +308,12 @@ Namespace Documents
Continue For Continue For
End If End If
Dim oFunctionName = oColumn.Config?.Function?.Name Dim oFunctionName = oColumn.Config.FunctionName
Dim oFunctionParams = oColumn.Config.FunctionParams
Dim oParamsDict = ParseFunctionParamsAsDict(oFunctionParams)
If oFunctionName = "GLN" Then If oFunctionName = "GLN" Then
SetAccountByGLN(oRow, pMandator, oField.Key, Nothing) SetAccountByGLN(oRow, pMandator, oField.Key, Nothing, oParamsDict)
End If End If
If oFunctionName = "EAN" Then If oFunctionName = "EAN" Then
@ -419,7 +410,7 @@ Namespace Documents
End If End If
End Sub End Sub
Private Sub SetAccountByGLN(oRow As DocumentRow, pMandator As Mandator, pNumberField As String, pNameField As String) Private Sub SetAccountByGLN(oRow As DocumentRow, pMandator As Mandator, pNumberField As String, pNameField As String, pParams As Dictionary(Of String, String))
' Try to read the Account number (which is a GLN really) and account Name ' Try to read the Account number (which is a GLN really) and account Name
Dim oNumberItem As DocumentRow.FieldValue = oRow.Fields.GetOrDefault(pNumberField) Dim oNumberItem As DocumentRow.FieldValue = oRow.Fields.GetOrDefault(pNumberField)
Dim oNameItem As DocumentRow.FieldValue = oRow.Fields.GetOrDefault(pNameField) Dim oNameItem As DocumentRow.FieldValue = oRow.Fields.GetOrDefault(pNameField)
@ -456,6 +447,20 @@ Namespace Documents
Private Function WrapFileInfo(pFileInfo As FileInfo) As Document Private Function WrapFileInfo(pFileInfo As FileInfo) As Document
Return New Document With {.File = pFileInfo} Return New Document With {.File = pFileInfo}
End Function End Function
Private Function ParseFunctionParamsAsDict(pParams As String) As Dictionary(Of String, String)
Dim oParamsDict As New Dictionary(Of String, String)
If pParams <> String.Empty Then
Dim oParamList = pParams.Split("|").ToList()
For Each oParam In oParamList
Dim oParamSplit = oParam.Split("=")
oParamsDict.Add(oParamSplit(0), oParamSplit(1))
Next
End If
Return oParamsDict
End Function
End Class End Class
End Namespace End Namespace

View File

@ -1,4 +1,5 @@
Imports MultiTool.Shared.Constants Imports MultiTool.Shared.Constants
Imports DigitalData.Modules.Language
Namespace Templates Namespace Templates
Public Class TemplateConfigItem Public Class TemplateConfigItem
@ -16,6 +17,18 @@ Namespace Templates
Public Property [Function] As ColumnFunction Public Property [Function] As ColumnFunction
Public ReadOnly Property FunctionName As String
Get
Return Utils.NotNull([Function]?.Name, String.Empty)
End Get
End Property
Public ReadOnly Property FunctionParams As String
Get
Return Utils.NotNull([Function]?.Params, String.Empty)
End Get
End Property
Public Class ColumnFunction Public Class ColumnFunction
Public Id As XmlFunction Public Id As XmlFunction
Public Name As String Public Name As String