diff --git a/MDM_Worker/cPLOSE_Inv_Data.vb b/MDM_Worker/cPLOSE_Inv_Data.vb index 1e50ce2..8ce6a28 100644 --- a/MDM_Worker/cPLOSE_Inv_Data.vb +++ b/MDM_Worker/cPLOSE_Inv_Data.vb @@ -247,15 +247,15 @@ Public Class cPLOSE_Inv_Data If Regex.IsMatch(filename, "^[A-Za-z]") Then - Dim match As Match = Regex.Match(filename, "\d+") - If match.Success Then - filename3 = filename.Substring(match.Index).Trim - filename4 = filename.Replace("-", "_") - End If + Dim match As Match = Regex.Match(filename, "\d+") + If match.Success Then + filename3 = filename.Substring(match.Index).Trim + filename4 = filename.Replace("-", "_") + End If - ElseIf filename.Contains("_dk") Then 'Sonderlogik Dänemark + ElseIf filename.Contains("_dk") Then 'Sonderlogik Dänemark - filename3 = filename.Replace(jahrEnd & "-", jahrEnd) + filename3 = filename.Replace(jahrEnd & "-", jahrEnd) filename4 = filename.Replace(jahrEnd & "-", jahrEnd) filename3 = filename3.Replace(" ", "") @@ -263,43 +263,43 @@ Public Class cPLOSE_Inv_Data ElseIf filename.Contains("_fy") Then 'Sonderlogik Norwegen - Dim indexOfFirst_ = filename.IndexOf("_fy") - If filename.Length > indexOfFirst_ + 5 Then - Dim month = filename.Substring(indexOfFirst_ + 3, 2) - If IsNumeric(month) Then - Dim test = month.IndexOf(0) - Dim monthWithoutLeadingZero As String = month - If monthWithoutLeadingZero.IndexOf(0) = 0 Then monthWithoutLeadingZero = monthWithoutLeadingZero.Replace("0", "") - filename3 = filename.Replace(jahrEnd & month, jahrEnd & monthWithoutLeadingZero) + Dim indexOfFirst_ = filename.IndexOf("_fy") + If filename.Length > indexOfFirst_ + 5 Then + Dim month = filename.Substring(indexOfFirst_ + 3, 2) + If IsNumeric(month) Then + Dim test = month.IndexOf(0) + Dim monthWithoutLeadingZero As String = month + If monthWithoutLeadingZero.IndexOf(0) = 0 Then monthWithoutLeadingZero = monthWithoutLeadingZero.Replace("0", "") + filename3 = filename.Replace(jahrEnd & month, jahrEnd & monthWithoutLeadingZero) filename4 = filename.Replace(jahrEnd & month, jahrEnd & monthWithoutLeadingZero) filename3 = filename3.Replace(" ", "") filename4 = filename4.Replace(" ", "") End If - End If - - - - - End If - - Dim daId As Integer = 0 - If filename3 = "" Then - daId = CInt(SQL.getValueTxtBySql("Select top(1) isnull(da_id,0) FROM tblDatenarchiv WHERE da_KundenNr = 0 And da_kategorie = 'MDM' AND da_ordner='MDM_DATEN' AND da_uOrdner1= 'PLOSE' AND da_uOrdner2= '" & jahr & "' AND (da_name like '%" & filename & "' or da_name like '%" & filename2 & "')", "FMZOLL",,, 0)) - Else - daId = CInt(SQL.getValueTxtBySql("Select top(1) isnull(da_id,0) FROM tblDatenarchiv WHERE da_KundenNr = 0 And da_kategorie = 'MDM' AND da_ordner='MDM_DATEN' AND da_uOrdner1= 'PLOSE' AND da_uOrdner2= '" & jahr & "' AND (da_name like '%" & filename & "' or da_name like '%" & filename2 & "' or da_name like '%" & filename3 & "' or da_name like '%" & filename4 & "')", "FMZOLL",,, 0)) End If - If daId > 0 Then - Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) - Dim Path As String = DS.GET_TOP1_PATH() - If Path <> "" And System.IO.File.Exists(Path) Then - SQL.doSQL("UPDATE [tblPLOSE_Inv_Data] SET plInv_daId = " & DS.da_id & ", plInv_daIdgesetztDatum = getdate() WHERE plInv_Id = " & r.Item("plInv_Id") & " AND plInv_daId is null", "FMZOLL") - End If + + End If + + Dim daId As Integer = 0 + If filename3 = "" Then + daId = CInt(SQL.getValueTxtBySql("Select top(1) isnull(da_id,0) FROM tblDatenarchiv WHERE da_KundenNr = 0 And da_kategorie = 'MDM' AND da_ordner='MDM_DATEN' AND da_uOrdner1= 'PLOSE' AND da_uOrdner2= '" & jahr & "' AND (da_name like '%" & filename & "' or da_name like '%" & filename2 & "')", "FMZOLL",,, 0)) + Else + daId = CInt(SQL.getValueTxtBySql("Select top(1) isnull(da_id,0) FROM tblDatenarchiv WHERE da_KundenNr = 0 And da_kategorie = 'MDM' AND da_ordner='MDM_DATEN' AND da_uOrdner1= 'PLOSE' AND da_uOrdner2= '" & jahr & "' AND (da_name like '%" & filename & "' or da_name like '%" & filename2 & "' or da_name like '%" & filename3 & "' or da_name like '%" & filename4 & "')", "FMZOLL",,, 0)) + End If + + + + If daId > 0 Then + Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) + Dim Path As String = DS.GET_TOP1_PATH() + If Path <> "" And System.IO.File.Exists(Path) Then + SQL.doSQL("UPDATE [tblPLOSE_Inv_Data] SET plInv_daId = " & DS.da_id & ", plInv_daIdgesetztDatum = getdate() WHERE plInv_Id = " & r.Item("plInv_Id") & " AND plInv_daId is null", "FMZOLL") End If End If + End If Next @@ -317,6 +317,33 @@ Public Class cPLOSE_Inv_Data + End Function + + Public Shared Function checkImport() As Boolean + + Dim mehrfachIMportiert_SQL As String = " select plose_Dateiname, count(distinct(plose_Einlesedatum)) as Einlesedatum from tblPLOSE_Details + where plose_Fakturiert = 0 + group by plose_Dateiname + having count(distinct(plose_Einlesedatum)) > 1 + order by plose_Dateiname" + + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + Dim dtMehrfachImportiert_DT As DataTable = SQL.loadDgvBySql(mehrfachIMportiert_SQL, "FMZOLL") + + + If dtMehrfachImportiert_DT.Rows.Count > 0 Then + + If vbYes = MsgBox("ACHTUNG, es wurden " & dtMehrfachImportiert_DT.Rows.Count & " Abrechnungsdaten mehrfach importiert!" & vbNewLine & "Info anzeigen?", vbYesNo) Then + cProgramFunctions.genExcelFromDT_NEW(dtMehrfachImportiert_DT,,, "Mehrfach importierte Dateien") + End If + Return False + Else + Return True + End If + + + + End Function diff --git a/UID/usrctlProcedures.vb b/UID/usrctlProcedures.vb index 598e9d1..08bbbdf 100644 --- a/UID/usrctlProcedures.vb +++ b/UID/usrctlProcedures.vb @@ -3473,6 +3473,7 @@ Public Class usrctlProcedures Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(fd.FileName, Encoding.Default) MyReader.TextFieldType = FileIO.FieldType.Delimited MyReader.SetDelimiters(";") + MyReader.HasFieldsEnclosedInQuotes = True ' <— Important line! (semicolon inside quotes will be ignored) Dim currentRow As String() While Not MyReader.EndOfData Try @@ -3709,7 +3710,27 @@ Public Class usrctlProcedures End While If savedDY Then - sql.doSQL("EXECUTE dbo.sp_DeleteDuplicateZollmeldungen", "FMZOLL") + 'zuerst alle doppelten löschen und die fehlerhaften zuerst + Dim sql_deleleMultEntries As String = " + WITH Doppelte AS ( + SELECT + *, + ROW_NUMBER() OVER ( + PARTITION BY Registriernummer_MRN, PositionNo, Positionsunterlagenzeile + ORDER BY (SELECT NULL) + ) AS rn + FROM [tbl_DY_Zollmeldungen_Import] + + ) + + DELETE FROM Doppelte + WHERE rn > 1 and importfile is null;" + + sql.doSQL(sql_deleleMultEntries, "AVISO") + + 'dann generell alle doppelten löschen + + sql.doSQL("EXECUTE dbo.sp_DeleteDuplicateZollmeldungen", "AVISO") End If End Using