diff --git a/MultiTool.Form/MultiTool.Form.vbproj b/MultiTool.Form/MultiTool.Form.vbproj index 3d9eb5b..1fe6034 100644 --- a/MultiTool.Form/MultiTool.Form.vbproj +++ b/MultiTool.Form/MultiTool.Form.vbproj @@ -338,6 +338,7 @@ + diff --git a/MultiTool.Form/My Project/Resources.Designer.vb b/MultiTool.Form/My Project/Resources.Designer.vb index e5b590a..39bc43c 100644 --- a/MultiTool.Form/My Project/Resources.Designer.vb +++ b/MultiTool.Form/My Project/Resources.Designer.vb @@ -240,6 +240,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage. + ''' + Friend ReadOnly Property bo_sale() As DevExpress.Utils.Svg.SvgImage + Get + Dim obj As Object = ResourceManager.GetObject("bo_sale", 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 85a87fd..c8d6386 100644 --- a/MultiTool.Form/My Project/Resources.resx +++ b/MultiTool.Form/My Project/Resources.resx @@ -124,17 +124,14 @@ ..\Resources\actions_send.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\bo_country.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - ..\Resources\save.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a ..\Resources\mailmergepreview.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\deletetablerows.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\bo_country.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a ..\Resources\parameters.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -151,6 +148,9 @@ ..\Resources\rotatecounterclockwise.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\actions_reload.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + ..\Resources\bo_unknown.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -187,6 +187,9 @@ ..\Resources\bo_unknown2.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\deletetablerows.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + ..\Resources\open3.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -247,8 +250,8 @@ ..\Resources\singlepageview.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\actions_reload.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\logical.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a ..\Resources\bo_product.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -265,6 +268,9 @@ ..\Resources\actions_send3.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\editquery.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + ..\Resources\preview.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -304,16 +310,13 @@ ..\Resources\export.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\logical.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - ..\Resources\new.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a ..\Resources\actions_checkcircled2.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - ..\Resources\editquery.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ..\Resources\bo_sale.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a \ No newline at end of file diff --git a/MultiTool.Form/My Project/licenses.licx b/MultiTool.Form/My Project/licenses.licx index 1b98ec5..f5c8388 100644 --- a/MultiTool.Form/My Project/licenses.licx +++ b/MultiTool.Form/My Project/licenses.licx @@ -1,15 +1,16 @@ DevExpress.XtraEditors.Repository.RepositoryItemDateEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.Repository.RepositoryItemProgressBar, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraRichEdit.RichEditControl, DevExpress.XtraRichEdit.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.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.DateEdit, DevExpress.XtraEditors.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.XtraReports.UI.XtraReport, DevExpress.XtraReports.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraEditors.SearchLookUpEdit, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox, DevExpress.XtraEditors.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.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemProgressBar, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/MultiTool.Form/Resources/bo_sale.svg b/MultiTool.Form/Resources/bo_sale.svg new file mode 100644 index 0000000..2decef9 --- /dev/null +++ b/MultiTool.Form/Resources/bo_sale.svg @@ -0,0 +1,27 @@ + + + + + + + + + \ No newline at end of file diff --git a/MultiTool.Form/frmImportMain.Designer.vb b/MultiTool.Form/frmImportMain.Designer.vb index cf23b4b..5417547 100644 --- a/MultiTool.Form/frmImportMain.Designer.vb +++ b/MultiTool.Form/frmImportMain.Designer.vb @@ -86,6 +86,7 @@ Partial Class frmImportMain Me.WorkspaceManager1 = New DevExpress.Utils.WorkspaceManager(Me.components) Me.BehaviorManager = New DevExpress.Utils.Behaviors.BehaviorManager(Me.components) Me.SplashScreenManager = New DevExpress.XtraSplashScreen.SplashScreenManager(Me, GetType(Global.MultiTool.Form.frmWaitForm), True, True) + Me.btnCalculatePrices = New DevExpress.XtraBars.BarButtonItem() CType(Me.SplitContainerMain, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.SplitContainerMain.Panel1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainerMain.Panel1.SuspendLayout() @@ -220,9 +221,9 @@ Partial Class frmImportMain 'RibbonControl ' Me.RibbonControl.ExpandCollapseItem.Id = 0 - Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.txtFilesLoaded, Me.btnLoadFiles, Me.btnTransferFile, Me.btnOpenInputDirectory, Me.btnOpenOutputDirectory, Me.btnOpenSchemaDirectory, Me.btnReloadFile, Me.btnTransferAllFiles, Me.btnOpenReport, Me.btnShowXml, Me.btnOpenLogDirectory, Me.btnOpenConfigDirectory, Me.txtCurrentFile, Me.btnConfig, Me.btnRemoveRow, Me.btnTestTransferFile, Me.BarButtonItem1, Me.btnDebugExportReport, Me.btnEditRow}) + Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.txtFilesLoaded, Me.btnLoadFiles, Me.btnTransferFile, Me.btnOpenInputDirectory, Me.btnOpenOutputDirectory, Me.btnOpenSchemaDirectory, Me.btnReloadFile, Me.btnTransferAllFiles, Me.btnOpenReport, Me.btnShowXml, Me.btnOpenLogDirectory, Me.btnOpenConfigDirectory, Me.txtCurrentFile, Me.btnConfig, Me.btnRemoveRow, Me.btnTestTransferFile, Me.BarButtonItem1, Me.btnDebugExportReport, Me.btnEditRow, Me.btnCalculatePrices}) resources.ApplyResources(Me.RibbonControl, "RibbonControl") - Me.RibbonControl.MaxItemId = 36 + Me.RibbonControl.MaxItemId = 37 Me.RibbonControl.Name = "RibbonControl" Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1, Me.RibbonPage2}) Me.RibbonControl.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemComboBox1, Me.RepositoryItemProgressBar1}) @@ -404,6 +405,7 @@ Partial Class frmImportMain ' Me.RibbonPageGroup7.ItemLinks.Add(Me.btnEditRow) Me.RibbonPageGroup7.ItemLinks.Add(Me.btnRemoveRow) + Me.RibbonPageGroup7.ItemLinks.Add(Me.btnCalculatePrices) Me.RibbonPageGroup7.Name = "RibbonPageGroup7" resources.ApplyResources(Me.RibbonPageGroup7, "RibbonPageGroup7") ' @@ -598,6 +600,13 @@ Partial Class frmImportMain ' Me.SplashScreenManager.ClosingDelay = 500 ' + 'btnCalculatePrices + ' + resources.ApplyResources(Me.btnCalculatePrices, "btnCalculatePrices") + Me.btnCalculatePrices.Id = 36 + Me.btnCalculatePrices.ImageOptions.SvgImage = Global.MultiTool.Form.My.Resources.Resources.bo_sale + Me.btnCalculatePrices.Name = "btnCalculatePrices" + ' 'frmImportMain ' resources.ApplyResources(Me, "$this") @@ -721,4 +730,5 @@ Partial Class frmImportMain Friend WithEvents gridBand1 As DevExpress.XtraGrid.Views.BandedGrid.GridBand Friend WithEvents GridBand2 As DevExpress.XtraGrid.Views.BandedGrid.GridBand Friend WithEvents btnEditRow As DevExpress.XtraBars.BarButtonItem + Friend WithEvents btnCalculatePrices As DevExpress.XtraBars.BarButtonItem End Class diff --git a/MultiTool.Form/frmImportMain.resx b/MultiTool.Form/frmImportMain.resx index 51f6882..bb9ad53 100644 --- a/MultiTool.Form/frmImportMain.resx +++ b/MultiTool.Form/frmImportMain.resx @@ -247,6 +247,9 @@ Zeile bearbeiten + + Preiskalkulation ausführen + 0, 0 @@ -1052,6 +1055,12 @@ DevExpress.XtraSplashScreen.SplashScreenManager, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + btnCalculatePrices + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + frmImportMain diff --git a/MultiTool.Form/frmImportMain.vb b/MultiTool.Form/frmImportMain.vb index c1e982b..2381909 100644 --- a/MultiTool.Form/frmImportMain.vb +++ b/MultiTool.Form/frmImportMain.vb @@ -540,11 +540,11 @@ Public Class frmImportMain For Each oRow In pDocument.Rows ' Grab grid for the current DocumentRow Dim oGrid As GridControl = Grids. - Where(Function(g) g.Name = oRow.Name). + Where(Function(g) g.Name = oRow.TableName). SingleOrDefault() ' Grab table for the current DocumentRow and create new row - Dim oDataTable As DataTable = oDatasources.Item(oRow.Name) + Dim oDataTable As DataTable = oDatasources.Item(oRow.TableName) Dim oDataRow = oDataTable.NewRow() ' Assign the Guid of the DocumentRow diff --git a/MultiTool.Shared/Documents/DocumentLoader.vb b/MultiTool.Shared/Documents/DocumentLoader.vb index 91100d5..5884dba 100644 --- a/MultiTool.Shared/Documents/DocumentLoader.vb +++ b/MultiTool.Shared/Documents/DocumentLoader.vb @@ -206,7 +206,7 @@ Namespace Documents ' Create a DocumentRow object for each Top Level Element Dim oRow = New DocumentRow With { .SortKey = oRowSortKey, - .Name = oTopLevelElement.Name.ToString, + .TableName = oTopLevelElement.Name.ToString, .Fields = oFields } @@ -243,19 +243,56 @@ Namespace Documents Else pDocument = ApplyDefinedItemFunctionsForImport(pDocument, oMandator, pTemplate) pDocument = ApplyDynamicItemFunctionsForImport(pDocument, oMandator) + pDocument = ApplyPriceFunctions(pDocument, oMandator, pTemplate) End If pDocument.Mandator = oMandator Return pDocument End Function - Private Function ApplyDefinedItemFunctionsForImport(pDocument As Document, pMandator As Mandator, pTemplate As Template) As Document - If pMandator Is Nothing Then - Return pDocument - End If - + ''' + ''' Apply price calculation to the documents products + ''' + ''' This needs to be strictly seperated from `ApplyDefinedItemFunctionsForImport` + ''' because prices can only be calculated if GLN and EAN functions were already (successfully) processed + ''' + Private Function ApplyPriceFunctions(pDocument As Document, pMandator As Mandator, pTemplate As Template) As Document For Each oRow As DocumentRow In pDocument.Rows - Dim oTable = pTemplate.Tables.Where(Function(table) table.Name = oRow.Name).SingleOrDefault() + Dim oTable = pTemplate.Tables.Where(Function(table) table.Name = oRow.TableName).SingleOrDefault() + + For Each oField In oRow.Fields + If oTable Is Nothing Then + Exit For + End If + + Dim oColumn = oTable.Columns.Where(Function(c) c.Name = oField.Key).SingleOrDefault() + If oColumn Is Nothing Then + Continue For + End If + + Dim oFunctionName = oColumn.Config?.Function?.Name + + ' TODO: Make more nice + Dim oParams = oColumn.Config?.Function.Params + Dim oParamList = oParams.Split("|").ToList() + Dim oParamsDict As New Dictionary(Of String, String) + For Each oParam In oParamList + Dim oParamSplit = oParam.Split("=") + oParamsDict.Add(oParamSplit(0), oParamSplit(1)) + Next + + If oFunctionName = "PRICE" Then + SetPrice(oRow, oField.Key, oParamsDict, pMandator, pTemplate) + End If + Next + Next + + Return pDocument + End Function + + Private Function ApplyDefinedItemFunctionsForImport(pDocument As Document, pMandator As Mandator, pTemplate As Template) As Document + For Each oRow As DocumentRow In pDocument.Rows + Dim oTable = pTemplate.Tables.Where(Function(table) table.Name = oRow.TableName).SingleOrDefault() For Each oField In oRow.Fields If oTable Is Nothing Then @@ -284,11 +321,11 @@ Namespace Documents Return pDocument End Function + ''' + ''' Execute Mappings defined in TBEDI_XML_MAPPING_CONFIG, + ''' for example mapping Article Numbers to Winline Mandators + ''' Private Function ApplyDynamicItemFunctionsForImport(pDocument As Document, pMandator As Mandator) As Document - If pMandator Is Nothing Then - Return pDocument - End If - ' We only want the mapping config for things in the xml file. ' that excludes things like setting the mandator. Dim oFilteredMappingConfig = MappingConfig.Items. @@ -326,6 +363,23 @@ Namespace Documents Return pDocument End Function + Private Sub SetPrice(pRow As DocumentRow, pPriceField As String, oFieldMap As Dictionary(Of String, String), pMandator As Mandator, pTemplate As Template) + Dim oPriceItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(pPriceField) + Dim oArticleNumberField As String = oFieldMap.GetOrDefault("Article", Nothing) + Dim oAccountNumberField As String = oFieldMap.GetOrDefault("Account", Nothing) + Dim oDocumentDateField As String = oFieldMap.GetOrDefault("DocumentDate", Nothing) + + ' TODO: Check for missing values + + Dim oArticleNumber As String = pRow.Fields.Item(oArticleNumberField).Final + Dim oAccountNumber As String = pRow.Fields.Item(oAccountNumberField).Final + Dim oDocumentDate As Date = pRow.Fields.Item(oDocumentDateField).Final + Dim oQuantity As Integer = 1 + + Dim oArticlePrice As Double = Winline.TryGetArticlePrice(oArticleNumber, oAccountNumber, oQuantity, oDocumentDate, pMandator, pTemplate) + + End Sub + Private Sub SetArticleByEAN(pRow As DocumentRow, pMandator As Mandator, pArticleField As String) Dim oNumberItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(pArticleField) Dim oArticleNumber = Winline.TryGetArticleNumber(oNumberItem.Original, pMandator) diff --git a/MultiTool.Shared/Documents/DocumentRow.vb b/MultiTool.Shared/Documents/DocumentRow.vb index 8e02cbc..525c3d5 100644 --- a/MultiTool.Shared/Documents/DocumentRow.vb +++ b/MultiTool.Shared/Documents/DocumentRow.vb @@ -10,11 +10,16 @@ ''' Counter to ensure consistency and order when writing XML ''' Public Property SortKey As Integer + ''' ''' Tabellen/Elementname aus XML ''' - Public Property Name As String + Public Property TableName As String + ''' + ''' List of Row Values + ''' + ''' Public Property Fields As Dictionary(Of String, FieldValue) Public ReadOnly Property HasErrors As Boolean diff --git a/MultiTool.Shared/Report/ReportGenerator.vb b/MultiTool.Shared/Report/ReportGenerator.vb index 3bd19d5..c2e6d3e 100644 --- a/MultiTool.Shared/Report/ReportGenerator.vb +++ b/MultiTool.Shared/Report/ReportGenerator.vb @@ -63,11 +63,11 @@ Public Class ReportGenerator(Of TReport As IReport) FillFieldValuesFromSQL(pDocument, oSQLConfig) Dim oHeadRow = pDocument.Rows. - Where(Function(r) r.Name.EndsWith("T025")). + Where(Function(r) r.TableName.EndsWith("T025")). Select(Function(r) r.Fields). FirstOrDefault() Dim oPositionRows = pDocument.Rows. - Where(Function(r) r.Name.EndsWith("T026")). + Where(Function(r) r.TableName.EndsWith("T026")). ToList() Dim oReportHead = oHeadMapper.Map(Of Dictionary(Of String, FieldValue), ReportHead)(oHeadRow) diff --git a/MultiTool.Shared/Winline/WebServiceData.vb b/MultiTool.Shared/Winline/WebServiceData.vb index 3eb89c5..75c7c90 100644 --- a/MultiTool.Shared/Winline/WebServiceData.vb +++ b/MultiTool.Shared/Winline/WebServiceData.vb @@ -188,7 +188,7 @@ Namespace Winline pDocument.Rows.Sort() For Each oRow In pDocument.Rows - w.WriteStartElement(oRow.Name) + w.WriteStartElement(oRow.TableName) For Each oField As KeyValuePair(Of String, DocumentRow.FieldValue) In oRow.Fields If oField.Value.Final = String.Empty Then diff --git a/MultiTool.Shared/Winline/WinlineData.vb b/MultiTool.Shared/Winline/WinlineData.vb index 033e076..0b320e3 100644 --- a/MultiTool.Shared/Winline/WinlineData.vb +++ b/MultiTool.Shared/Winline/WinlineData.vb @@ -304,6 +304,45 @@ Namespace Winline End Try End Function + Public Function TryGetArticlePrice(pArticle As String, pAccountNumber As String, pQuantity As String, pDocumentDate As Date, pMandator As Mandator, pTemplate As Template) As Double + Try + Dim oYear As Integer = Config.GetWinLineYear() + Dim oSQL As String = $" + EXECUTE [PRCUST_GET_ACCOUNT_PRICE_CONDITION_VALUES] + '{pAccountNumber}', + '*', + '{pArticle}', + '{pQuantity}', + {pDocumentDate:yyyy-MM-dd}, + {pDocumentDate:yyyy-MM-dd}, + '{pMandator.Id}', + {oYear}, + 1008, + NULL, + 'Multitool/{pTemplate.Name}', + 'CalcPricing' + " + Dim oTable As DataTable = Database.GetDatatable(oSQL) + + If oTable.Rows.Count = 0 Then + Logger.Debug("Price for article [{0}] and Account [{1}] was not found in Mandator: [{2}]", pArticle, pAccountNumber, pMandator.Id) + Return Nothing + + End If + + Dim oRow As DataRow = oTable.Rows.Item(0) + Dim oPrice As Double = oRow.Item("PRICE") + + Return oPrice + + Catch ex As Exception + Logger.Warn("Error while trying to get Price for Article [{0}] and Account [{1}]", pArticle, pAccountNumber) + Logger.Error(ex) + Return Nothing + + End Try + End Function + Public Function TryGetArticleNumber(pEAN As String, pMandator As Mandator) As String Try Dim oYear As Integer = Config.GetWinLineYear() @@ -450,7 +489,7 @@ Namespace Winline Public Function FindMatchingMandatorFromOrder(pData As Documents.Document) As Mandator Dim oPositions = pData.Rows. - Where(Function(r) r.Name.ToUpper.EndsWith("T026")). + Where(Function(r) r.TableName.ToUpper.EndsWith("T026")). ToList() Dim oEANNumbers = oPositions. Select(Function(p)