2034 lines
96 KiB
VB.net
2034 lines
96 KiB
VB.net
Imports System.Data.SqlClient
|
|
Imports System.IO
|
|
Public Class cAllgemein
|
|
Public Shared FIRMA As String
|
|
Public Shared NIEDERLASSUNG As String 'SUB, WAI, ...
|
|
Public Shared ABTEILUNG As String 'QS ZOLL ...
|
|
Public Shared STAMMFILIALE As String 'IMEX,UNISPED;ATILLA...
|
|
Public Shared WARENORT_ZUGANG As Boolean = False
|
|
Public Shared WARENORT As String
|
|
Public Shared ATILLA_SND As Boolean = True
|
|
Public Shared NEWLOGIN As Boolean = False
|
|
|
|
Public Shared CLUSTER As String = "" 'Firmenverbund
|
|
Public Shared FIRMEN_GRUPPE As String = "VERAGDCS" 'Firmenverbund-Gruppe
|
|
' Public Shared SPECIFIC As cSPECIFIC = New cSPECIFIC
|
|
|
|
Public Shared ERR_OP_GLOBAL As String = ERROR_OP.SHOW
|
|
|
|
' Public Shared AVISO_SERVER As String = "[BUCHHALTUNG\SQLEXPRESS]"
|
|
'Public Shared AVISO_SERVER As String = "[SQL01.verag.ost.dmn\VERAG]"
|
|
'Public Shared AVISO_SERVER As String = "[SQLGUIDE.verag.ost.dmn\VERAG]"
|
|
|
|
|
|
Public Shared AVISO_SERVER As String = "[SQLGUIDE01.verag.ost.dmn]" '"[SQLGUIDE01.verag.ost.dmn]"
|
|
Public Shared FMZOLL_SERVER As String = "[SQLGUIDE01.verag.ost.dmn]" '"[sqlcluster\verag]" '"[FMZOLL\SQLFMZOLL]"
|
|
Public Shared SQLGUIDE01_USED As Boolean = True 'FM-ZOLL Ablöse!!!!
|
|
|
|
Public Shared AVISO_LAYOUT_NEW As Boolean = False
|
|
|
|
Public Shared CBAM_LIST As List(Of String) = Nothing
|
|
|
|
|
|
'Public Shared FMZOLL_ATLAS_Datensicherung As String = "\\192.168.0.91\f\FMZoll\Datensicherung\atlas\atlas\fssouzb"
|
|
Public Shared FMZOLL_ATLAS_Datensicherung_OLD As String = "\\share01\F\FMZoll\Datensicherung\atlas\atlas\fssouzb"
|
|
|
|
Public Shared UK_EORI_LTD = "GB078068385000"
|
|
|
|
Public Shared BÜRO As String
|
|
|
|
Public Shared PRINTER_BON As String
|
|
Public Shared PRINTER_STANDARD As String
|
|
Public Shared PRINTER_LIST As ArrayList = Nothing
|
|
|
|
|
|
Public Shared dpi As Integer
|
|
Public Shared TESTSYSTEM As Boolean = False
|
|
|
|
Public Shared PROGNAME = ""
|
|
Public Shared PROGID As Integer = 16 'AVISO
|
|
Public Shared PROGVERSION As String = ""
|
|
|
|
Public Shared USRNAME As String
|
|
Public Shared ABW_USRNAME As String
|
|
'Public Shared USRBER As Integer
|
|
Public Shared USRID As Integer
|
|
Public Shared USR_VNAME As String
|
|
Public Shared USR_NNAME As String
|
|
Public Shared USRKURZNAME As String
|
|
Public Shared USR_HrFrNAME As String
|
|
|
|
Public Shared FIRMA_ID As Integer
|
|
Public Shared FIRMA_NAME As String
|
|
|
|
Public Shared AUTO_ABF_NR As Boolean = True
|
|
|
|
Public Shared BENUTZER_BERECHTIGUNGS_GRUPPEN As cBerechtigungenBenutzerGruppenZuordnung_List = Nothing
|
|
Public Shared BENUTZER_BERECHTIGUNGS_GRUPPEN_WHEREIN_SDL As String = "('XXXXXXXX')"
|
|
Public Shared PARAMS As cParameterList = Nothing
|
|
Public Shared TRANSLATE As cTranslate_LIST = Nothing
|
|
Public Shared TRANSLATE_AUTO As cTranslateAuto_LIST = Nothing
|
|
Public Shared _LAN As String = "DE" '"EN"
|
|
|
|
Public Shared SESSION As New cSession
|
|
Public Shared _DummyCNT As Integer
|
|
Public Shared EMailTOBB_Error As String = "info@verimextransit.com"
|
|
Public Shared EMOJI_PATH As String = ""
|
|
|
|
|
|
Shared SQL As New SQL
|
|
Public Shared MITARBEITER As cMitarbeiter
|
|
Public Shared FIRMEN As List(Of cFirmen)
|
|
Public Shared FILIALEN As List(Of cFilialen)
|
|
Public Const LeerDatum As Date = #12/30/1899# 'wird als leerer Datumswert verwendet, da sonst Probleme bei Null/Date
|
|
|
|
Public Shared Sub LOAD_DATA(Optional switchCompany = False, Optional firmaTmp = False, Optional NLTmp = "")
|
|
MITARBEITER = New cMitarbeiter
|
|
If MITARBEITER.LOAD(USRID) Then
|
|
USR_NNAME = MITARBEITER.mit_nname
|
|
USR_VNAME = MITARBEITER.mit_vname
|
|
_LAN = MITARBEITER.mit_sprache
|
|
|
|
USR_HrFrNAME = ""
|
|
Select Case MITARBEITER.mit_geschlecht
|
|
Case "m" : USR_HrFrNAME = "Herr "
|
|
Case "w" : USR_HrFrNAME = "Frau "
|
|
End Select
|
|
USR_HrFrNAME &= MITARBEITER.mit_nname
|
|
|
|
|
|
If switchCompany Then
|
|
FIRMA = firmaTmp
|
|
NIEDERLASSUNG = If(NLTmp <> "", NLTmp, MITARBEITER.mit_niederlassung)
|
|
Else
|
|
If FIRMA = "" Then FIRMA = If(MITARBEITER.mit_firma = "BEIDE", "VERAG", MITARBEITER.mit_firma)
|
|
|
|
End If
|
|
|
|
|
|
|
|
cSPECIFIC.FIRMA_BgColor = Drawing.Color.FromArgb(0, 54, 128)
|
|
Select Case FIRMA
|
|
Case "VERAG"
|
|
CLUSTER = "FRONTOFFICE"
|
|
Case "IMEX"
|
|
STAMMFILIALE = "5501"
|
|
CLUSTER = "FRONTOFFICE"
|
|
Case "UNISPED"
|
|
STAMMFILIALE = "5601"
|
|
cSPECIFIC.FIRMA_BgColor = Drawing.Color.FromArgb(200, 0, 0)
|
|
CLUSTER = "FRONTOFFICE"
|
|
Case "AMBAR"
|
|
STAMMFILIALE = "5701"
|
|
CLUSTER = "FRONTOFFICE"
|
|
Case "ATILLA"
|
|
STAMMFILIALE = "4801"
|
|
Case "FRONTOFFICE"
|
|
STAMMFILIALE = "5801"
|
|
CLUSTER = "FRONTOFFICE"
|
|
|
|
Case "VERIMEX"
|
|
STAMMFILIALE = "6001"
|
|
CLUSTER = "FRONTOFFICE"
|
|
End Select
|
|
|
|
USRNAME = (MITARBEITER.mit_vname & " " & MITARBEITER.mit_nname)
|
|
ABW_USRNAME = MITARBEITER.mit_abweichenderAnzeigename
|
|
If NIEDERLASSUNG = "" Then NIEDERLASSUNG = MITARBEITER.mit_niederlassung
|
|
If ABTEILUNG = "" Then ABTEILUNG = MITARBEITER.mit_abteilung
|
|
Else
|
|
MITARBEITER = Nothing
|
|
End If
|
|
|
|
|
|
LOAD_PROGRAMM()
|
|
LOAD_PARAM()
|
|
LOAD_TRANSLATE()
|
|
LOAD_TRANSLATE_AUTO()
|
|
LOAD_FIRMEN()
|
|
LOAD_FILIALEN()
|
|
LOAD_CHAT_EMOJIS()
|
|
|
|
Try 'DRUCKER LADEN
|
|
Dim sPrinters As New ArrayList
|
|
For Each sPrinter As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters
|
|
sPrinters.add(sPrinter)
|
|
Next
|
|
VERAG_PROG_ALLGEMEIN.cAllgemein.PRINTER_LIST = sPrinters
|
|
Catch ex As Exception
|
|
End Try
|
|
|
|
If TESTSYSTEM Then
|
|
AVISO_SERVER = "[DEVELOPER\DEVSQL]"
|
|
FMZOLL_SERVER = "[DEVELOPER\DEVSQL]"
|
|
End If
|
|
End Sub
|
|
|
|
Public Shared Sub LOAD_BER()
|
|
BENUTZER_BERECHTIGUNGS_GRUPPEN = New cBerechtigungenBenutzerGruppenZuordnung_List(USRID)
|
|
BENUTZER_BERECHTIGUNGS_GRUPPEN_WHEREIN_SDL = VERAG_PROG_ALLGEMEIN.cBerechtignunen.GetBenutzerBerechtigungsBezeichnungen_FormatWhereIn_SDL()
|
|
End Sub
|
|
|
|
Public Shared Sub LOAD_CHAT_EMOJIS()
|
|
Try
|
|
If System.IO.Directory.Exists(DATENVERVER_OPTIONS.getRootDir & "\DOKUMENTE\CHAT_EMOJIS\") Then
|
|
|
|
Dim EMOJI_SOURCEPATH = DATENVERVER_OPTIONS.getRootDir & "\DOKUMENTE\CHAT_EMOJIS\"
|
|
Dim EMOJI_SOURCELIST = System.IO.Directory.GetFiles(EMOJI_SOURCEPATH).ToList
|
|
|
|
EMOJI_PATH = System.IO.Path.GetFullPath(My.Application.Info.DirectoryPath & "\Resources\CHAT_EMOJIS\")
|
|
|
|
|
|
If Not System.IO.Directory.Exists(EMOJI_PATH) Then
|
|
System.IO.Directory.CreateDirectory(EMOJI_PATH)
|
|
End If
|
|
|
|
|
|
For Each f In System.IO.Directory.GetFiles(EMOJI_PATH)
|
|
Dim fi As New System.IO.FileInfo(f)
|
|
If Not System.IO.Directory.GetFiles(EMOJI_PATH).Any(Function(c) c.Equals(fi.Name, StringComparison.OrdinalIgnoreCase)) Then
|
|
System.IO.File.Delete(f)
|
|
End If
|
|
|
|
Next
|
|
|
|
For Each f In System.IO.Directory.GetFiles(EMOJI_SOURCEPATH)
|
|
Dim fi As New System.IO.FileInfo(f)
|
|
fi.CopyTo(EMOJI_PATH & fi.Name, False)
|
|
|
|
Next
|
|
Else
|
|
MsgBox("Fehler: Chat-Emojis Verzeichnis existiert nicht!")
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Public Shared Sub LOAD_PROGRAMM()
|
|
Dim prog_Name = My.Application.Info.ProductName
|
|
|
|
|
|
Select Case prog_Name.ToUpper
|
|
Case "AVISO", "VERAG_PROG_ALLGEMEIN"
|
|
PROGID = 16
|
|
Case "SDL"
|
|
PROGID = 7
|
|
Case Else
|
|
PROGID = SQL.getValueTxtBySql("SELECT isnull([prog_id],0) FROM [tblProgramme] WHERe [prog_codename]='" & prog_Name & "'", "ADMIN")
|
|
End Select
|
|
PROGNAME = SQL.getValueTxtBySql("SELECT prog_name FROM [tblProgramme] WHERe [prog_id]='" & PROGID & "'", "ADMIN")
|
|
End Sub
|
|
|
|
Public Shared Sub LOAD_PARAM()
|
|
PARAMS = New cParameterList(PROGID, FIRMA)
|
|
End Sub
|
|
Public Shared Sub LOAD_FIRMEN()
|
|
FIRMEN = cFirmen.LOAD_LIST
|
|
End Sub
|
|
Public Shared Sub LOAD_FILIALEN()
|
|
FILIALEN = cFilialen.LOAD_LIST
|
|
End Sub
|
|
|
|
Public Shared Sub LOAD_TRANSLATE()
|
|
TRANSLATE = New cTranslate_LIST(PROGID)
|
|
End Sub
|
|
Public Shared Sub LOAD_TRANSLATE_AUTO()
|
|
TRANSLATE_AUTO = New cTranslateAuto_LIST()
|
|
End Sub
|
|
Public Shared Function GET_LAND() As String
|
|
Select Case FIRMA
|
|
Case "AMBAR" : Return "DE"
|
|
End Select
|
|
Return "AT"
|
|
End Function
|
|
|
|
Public Shared Function checkSteuerschluessel(firmenID As Integer, landKz As String, Optional UIDLandKz As String = "", Optional UstIdNr As String = "", Optional UstIdGeprüft As Object = Nothing) As Integer
|
|
|
|
'Return -1
|
|
|
|
If firmenID < 1 Then Return -1
|
|
Dim FIRMA_TMP = New VERAG_PROG_ALLGEMEIN.cFirmen(firmenID)
|
|
|
|
|
|
Dim isEU As Boolean = False
|
|
Dim sql As New SQL
|
|
|
|
If landKz Is Nothing OrElse landKz = "" Then Return -1
|
|
|
|
|
|
|
|
Select Case FIRMA_TMP.Firma_LandKz
|
|
|
|
Case "A", "AT"
|
|
|
|
If landKz = "A" Then Return 2
|
|
|
|
isEU = sql.getValueTxtBySql("select MitgliedslandEU from Währungstabelle where landkz = '" & landKz & "'", "FMZOLL",)
|
|
|
|
If isEU Then
|
|
If UIDLandKz <> "" AndAlso UstIdNr <> "" AndAlso UstIdGeprüft IsNot Nothing AndAlso CDate(UstIdGeprüft) > Today.AddDays(-30) Then
|
|
Return 10
|
|
Else
|
|
Return 2
|
|
End If
|
|
Else
|
|
Return 0
|
|
End If
|
|
|
|
Case "D", "DE"
|
|
|
|
If landKz = "D" Then Return 19
|
|
|
|
isEU = sql.getValueTxtBySql("select MitgliedslandEU from Währungstabelle where landkz = '" & landKz & "'", "FMZOLL",)
|
|
|
|
If isEU Then
|
|
If UIDLandKz <> "" AndAlso UstIdNr <> "" AndAlso UstIdGeprüft IsNot Nothing AndAlso CDate(UstIdGeprüft) > Today.AddDays(-30) Then
|
|
Return 10
|
|
Else
|
|
Return 19
|
|
End If
|
|
Else
|
|
Return 0
|
|
End If
|
|
|
|
Case "GB"
|
|
|
|
If landKz = "GB" Then Return 20
|
|
|
|
isEU = sql.getValueTxtBySql("select MitgliedslandEU from Währungstabelle where landkz = '" & landKz & "'", "FMZOLL",)
|
|
|
|
If isEU Then
|
|
If UIDLandKz <> "" AndAlso UstIdNr <> "" AndAlso UstIdGeprüft IsNot Nothing AndAlso CDate(UstIdGeprüft) > Today.AddDays(-30) Then
|
|
Return 10
|
|
Else
|
|
Return 20
|
|
End If
|
|
Else
|
|
Return 0
|
|
End If
|
|
|
|
|
|
|
|
'Case "TR"
|
|
|
|
' If landKz = "TR" Then Return 20
|
|
|
|
' isEU = sql.getValueTxtBySql("select MitgliedslandEU from Währungstabelle where landkz = '" & landKz & "'", "FMZOLL",)
|
|
|
|
' If isEU Then
|
|
' If UIDLandKz <> "" AndAlso UstIdNr <> "" AndAlso UstIdGeprüft IsNot Nothing Then
|
|
' Return 0
|
|
' Else
|
|
' Return 20
|
|
' End If
|
|
' End If
|
|
|
|
|
|
End Select
|
|
|
|
Return -1
|
|
|
|
End Function
|
|
|
|
Public Shared Sub _TRANSLATE(o As System.Windows.Forms.Control)
|
|
_TRANSLATE(o, o, _LAN)
|
|
End Sub
|
|
|
|
Public Shared Sub _TRANSLATE(o As System.Windows.Forms.Control, lan As String)
|
|
_TRANSLATE(o, o, lan)
|
|
End Sub
|
|
Public Shared Function _getTRANSLATE_SUB(oMain As System.Windows.Forms.Control, o As System.Windows.Forms.Control, s As Object, Optional defaultStr As String = "") As String
|
|
If defaultStr = "" Then defaultStr = s.Text
|
|
If _LAN = "DE" Then Return defaultStr
|
|
Dim TextTmp = VERAG_PROG_ALLGEMEIN.cAllgemein.TRANSLATE.list.FindAll(Function(x) x.trs_object = oMain.Name And x.trs_control = o.Name And (x.trs_subControl IsNot DBNull.Value AndAlso x.trs_subControl = s.Name) And x.trs_sprache = _LAN)
|
|
If TextTmp IsNot Nothing And TextTmp.Count > 0 Then
|
|
Return TextTmp(0).trs_text
|
|
End If
|
|
Return defaultStr
|
|
End Function
|
|
Public Shared Function _getTRANSLATE(oMain As System.Windows.Forms.Control, o As System.Windows.Forms.Control, Optional defaultStr As String = "") As String
|
|
If defaultStr = "" Then defaultStr = o.Text
|
|
Dim TextTmp = VERAG_PROG_ALLGEMEIN.cAllgemein.TRANSLATE.list.FindAll(Function(x) x.trs_object = oMain.Name And x.trs_control = o.Name And x.trs_sprache = _LAN)
|
|
If TextTmp IsNot Nothing And TextTmp.Count > 0 Then
|
|
Return TextTmp(0).trs_text
|
|
End If
|
|
Return defaultStr
|
|
End Function
|
|
Public Shared Sub _TRANSLATE(o As System.Windows.Forms.Control, s As System.Windows.Forms.Control, lan As String)
|
|
If lan = "" Then Exit Sub
|
|
If lan = "DE" Then Exit Sub
|
|
'o... Form
|
|
's... SubContainer
|
|
'c... Control
|
|
' MsgBox(o.GetType.ToString & " - " & o.name)
|
|
Dim TextTmp = VERAG_PROG_ALLGEMEIN.cAllgemein.TRANSLATE.list.FindAll(Function(x) x.trs_object = o.Name And x.trs_sprache = lan)
|
|
If TextTmp IsNot Nothing Then
|
|
For Each TXT As cTranslate In TextTmp
|
|
Dim found = o.Controls.Find(TXT.trs_control, True)
|
|
|
|
' MsgBox(TXT.trs_control)
|
|
If found IsNot Nothing AndAlso found.Count > 0 Then
|
|
' MsgBox("JA")
|
|
Dim obj As System.Windows.Forms.Control = found(0)
|
|
If obj IsNot Nothing Then
|
|
If (TypeOf obj Is System.Windows.Forms.Label) Then
|
|
DirectCast(obj, System.Windows.Forms.Label).Text = TXT.trs_text
|
|
End If
|
|
If (TypeOf obj Is System.Windows.Forms.Button) Or (TypeOf obj Is VERAG_PROG_ALLGEMEIN.FlatButton) Then
|
|
DirectCast(obj, System.Windows.Forms.Button).Text = TXT.trs_text
|
|
End If
|
|
If (TypeOf obj Is System.Windows.Forms.CheckBox) Or (TypeOf obj Is VERAG_PROG_ALLGEMEIN.MyCheckbox) Then
|
|
DirectCast(obj, System.Windows.Forms.CheckBox).Text = TXT.trs_text
|
|
End If
|
|
If (TypeOf obj Is System.Windows.Forms.TabPage) Then
|
|
DirectCast(obj, System.Windows.Forms.TabPage).Text = TXT.trs_text
|
|
End If
|
|
If (TypeOf obj Is System.Windows.Forms.RadioButton) Or (TypeOf obj Is VERAG_PROG_ALLGEMEIN.MyRadioButton) Then
|
|
DirectCast(obj, System.Windows.Forms.RadioButton).Text = TXT.trs_text
|
|
End If
|
|
If (TypeOf obj Is System.Windows.Forms.GroupBox) Then
|
|
DirectCast(obj, System.Windows.Forms.GroupBox).Text = TXT.trs_text
|
|
End If
|
|
|
|
If (TypeOf obj Is System.Windows.Forms.MenuStrip) Then
|
|
For Each tb As System.Windows.Forms.ToolStripMenuItem In DirectCast(obj, System.Windows.Forms.MenuStrip).Items
|
|
If tb.Name = TXT.trs_subControl Then
|
|
tb.Text = TXT.trs_text
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
'If (TypeOf obj Is System.Windows.Forms.TabControl) Then -->in Tabpage geregelt
|
|
' For Each tb As System.Windows.Forms.TabPage In DirectCast(obj, System.Windows.Forms.TabControl).TabPages
|
|
' If tb.Name = TXT.trs_subControl Then
|
|
' tb.Text = TXT.trs_text
|
|
' End If
|
|
' Next
|
|
'End If
|
|
|
|
If (TypeOf obj Is System.Windows.Forms.ComboBox) Or (TypeOf obj Is VERAG_PROG_ALLGEMEIN.MyComboBox) Then
|
|
'DirectCast(obj, System.Windows.Forms.Label).Text = TXT.trs_text
|
|
|
|
End If
|
|
'If (TypeOf obj Is VERAG_PROG_ALLGEMEIN.MyComboBox) Then
|
|
|
|
' Dim cboItems = VERAG_PROG_ALLGEMEIN.cAllgemein.TRANSLATE.list.FindAll(Function(x) x.trs_object = o.Name And x.trs_sprache = lan And x.trs_control = TXT.trs_control)
|
|
|
|
' For Each item As VERAG_PROG_ALLGEMEIN.MyListItem In DirectCast(obj, VERAG_PROG_ALLGEMEIN.MyComboBox).Items
|
|
' For Each sitem As cTranslate In cboItems
|
|
' If item.Text = sitem.trs_subControl Then
|
|
' Dim index = DirectCast(obj, VERAG_PROG_ALLGEMEIN.MyComboBox).Items(0).Equals
|
|
' DirectCast(DirectCast(obj, VERAG_PROG_ALLGEMEIN.MyComboBox).Items(item), VERAG_PROG_ALLGEMEIN.MyListItem).Text = sitem.trs_text
|
|
' End If
|
|
' Next
|
|
' Next
|
|
'End If
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
End Sub
|
|
|
|
|
|
Public Shared Function getMaxPosNrIncrement(FilialeNr As Integer, year As Integer) As Integer
|
|
Dim cnt = 0
|
|
Dim returnValue = -1
|
|
Dim newMaxwert = CInt(year.ToString.Substring(2, 2) & "000000") '16000000
|
|
Do
|
|
Dim conn As SqlConnection = VERAG_PROG_ALLGEMEIN.SQL.GetNewOpenConnectionFMZOLL
|
|
Dim sql As String = " begin tran" &
|
|
" if exists (select * from tblPosNr with (updlock,serializable) WHERE FilialeNr = @FilialeNr AND Jahr = @Jahr) " &
|
|
" begin " &
|
|
" UPDATE tblPosNr " &
|
|
" SET wert=(select MAX(wert) FROM tblPosNr WHERE FilialeNr = @FilialeNr AND Jahr = @Jahr)+1 " &
|
|
" WHERE FilialeNr = @FilialeNr AND Jahr = @Jahr " &
|
|
" End " &
|
|
" Else " &
|
|
" begin " &
|
|
" INSERT INTO tblPosNr " &
|
|
" (wert,FilialeNr,Jahr) " &
|
|
" VALUES(@newMaxwert, @FilialeNr,@Jahr) " &
|
|
" End " &
|
|
" commit tran " &
|
|
" SELECT isnull(wert,-1) FROM tblPosNr WHERE FilialeNr = @FilialeNr AND Jahr = @Jahr"
|
|
Dim dr As SqlDataReader
|
|
Using cmd As New SqlCommand(sql, conn)
|
|
cmd.Parameters.AddWithValue("@FilialeNr", FilialeNr)
|
|
cmd.Parameters.AddWithValue("@Jahr", year)
|
|
cmd.Parameters.AddWithValue("@newMaxwert", newMaxwert)
|
|
Try
|
|
dr = cmd.ExecuteReader()
|
|
If dr.Read Then returnValue = CInt(dr.Item(0))
|
|
Catch ex As Exception
|
|
MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Fehler mit der Datenbankverbindung:" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Datenbankfehler")
|
|
Finally
|
|
dr.Close()
|
|
End Try
|
|
|
|
End Using
|
|
cnt += 1
|
|
Loop While (SpedBuchExists(FilialeNr, returnValue) And cnt < 100000)
|
|
' conn.Close()
|
|
|
|
Return returnValue
|
|
End Function
|
|
|
|
|
|
|
|
Public Shared Function isCLUSTER() As Boolean
|
|
Return (FIRMA = CLUSTER)
|
|
End Function
|
|
|
|
Public Shared Function getFirmaFromFiliale2(FilialenNr As Object, Optional usedefaultFirma As Boolean = True, Optional defaultFIRMA As String = "VERAG") As String
|
|
Dim FirmaTMP = ""
|
|
If FilialenNr IsNot Nothing AndAlso IsNumeric(FilialenNr) Then
|
|
' FirmaTMP = SQL.getValueTxtBySql("SELECT TOP 1 [Firma] FROM [Filialen] WHERE FilialenNr='" & FilialenNr & "' ", "FMZOLL")
|
|
If FILIALEN Is Nothing Then LOAD_FILIALEN()
|
|
Dim FILIALE = FILIALEN.Find(Function(x) x.FilialenNr = FilialenNr)
|
|
If FILIALE IsNot Nothing Then FirmaTMP = If(FILIALE.Firma, "")
|
|
End If
|
|
If usedefaultFirma AndAlso FirmaTMP = "" Then FirmaTMP = defaultFIRMA
|
|
Return FirmaTMP
|
|
End Function
|
|
|
|
Public Shared Function getClusterFromFiliale(FilialenNr As Object, Optional usedefaultCLUSTER As Boolean = True, Optional defaultCLUSTER As String = "VERAG") As String
|
|
Dim FirmaTMP = ""
|
|
If FilialenNr IsNot Nothing AndAlso IsNumeric(FilialenNr) Then
|
|
' FirmaTMP = SQL.getValueTxtBySql("SELECT TOP 1 [Firma] FROM [Filialen] WHERE FilialenNr='" & FilialenNr & "' ", "FMZOLL")
|
|
If FILIALEN Is Nothing Then LOAD_FILIALEN()
|
|
Dim FILIALE = FILIALEN.Find(Function(x) x.FilialenNr = FilialenNr)
|
|
If FILIALE IsNot Nothing Then FirmaTMP = If(FILIALE.Cluster, "")
|
|
End If
|
|
If usedefaultCLUSTER AndAlso FirmaTMP = "" Then FirmaTMP = defaultCLUSTER
|
|
Return FirmaTMP
|
|
End Function
|
|
|
|
|
|
Public Shared Function getFirmaFromFiliale(FilialenNr As Object, Optional defaultVERAG As Boolean = True) As String
|
|
Dim FirmaTMP = ""
|
|
If FilialenNr IsNot Nothing AndAlso IsNumeric(FilialenNr) Then
|
|
' FirmaTMP = SQL.getValueTxtBySql("SELECT TOP 1 [Firma] FROM [Filialen] WHERE FilialenNr='" & FilialenNr & "' AND ( Firma='" & FIRMA & "' OR Cluster='" & CLUSTER & "')", "FMZOLL")
|
|
If FILIALEN Is Nothing Then LOAD_FILIALEN()
|
|
Dim FILIALE = FILIALEN.Find(Function(x) x.FilialenNr = FilialenNr And (x.Firma = FIRMA Or x.Cluster = CLUSTER))
|
|
If FILIALE IsNot Nothing Then FirmaTMP = If(FILIALE.Firma, "")
|
|
End If
|
|
If defaultVERAG AndAlso FirmaTMP = "" Then FirmaTMP = "VERAG"
|
|
Return FirmaTMP
|
|
End Function
|
|
Public Shared Function getFirmaFromKdNr(KundenNr As Integer, Optional defaultVERAG As Boolean = True) As String
|
|
Dim FirmaTMP = SQL.getValueTxtBySql("SELECT TOP 1 [Firma] FROM [Filialen] inner join Kunden ON Kunden.FilialenNr=Filialen.FilialenNr WHERE KundenNr='" & KundenNr & "' ", "FMZOLL")
|
|
If defaultVERAG AndAlso FirmaTMP = "" Then FirmaTMP = "VERAG"
|
|
Return FirmaTMP
|
|
End Function
|
|
|
|
Public Shared Function SpedBuchExists(FilialenNr As Integer, AbfertigungsNr As Integer) As Boolean
|
|
Return (CInt(SQL.getValueTxtBySql("SELECT count(*) FROM Speditionsbuch WHERE FilialenNr=" & FilialenNr & " AND AbfertigungsNr=" & AbfertigungsNr & " ", "FMZOLL")) > 0)
|
|
|
|
End Function
|
|
|
|
|
|
|
|
Class cSPECIFIC
|
|
Public Shared FIRMA_BgColor As System.Drawing.Color = Drawing.Color.FromArgb(0, 54, 128)
|
|
Public Shared FIRMA_ForeColor As System.Drawing.Color = Drawing.Color.White
|
|
End Class
|
|
|
|
|
|
|
|
|
|
Public Shared Sub buildConnectionDATENARCHIV()
|
|
Exit Sub
|
|
|
|
buildConnectionDATENARCHIV_NEW()
|
|
' buildConnectionDATENARCHIV_OLD()
|
|
End Sub
|
|
|
|
Public Shared Sub buildConnectionDATENARCHIV_OLD()
|
|
Try
|
|
Dim netuse As New System.Diagnostics.ProcessStartInfo()
|
|
|
|
netuse.FileName = "C:\Windows\system32\net"
|
|
' netuse.Arguments = "use \\192.168.0.91\Datenarchiv /User:VERAGOST\AVISOSMB BmWr501956"
|
|
If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "UNISPED" Then
|
|
netuse.Arguments = "use \\192.168.0.91\Datenarchiv /User:VERAGOST\AVISOSMB BmWr501956"
|
|
Else
|
|
netuse.Arguments = "use \\192.168.0.91\Datenarchiv /User:VERAGOST\AVISOSMB BmWr501956"
|
|
End If
|
|
|
|
|
|
netuse.CreateNoWindow = True
|
|
netuse.WindowStyle = ProcessWindowStyle.Hidden
|
|
System.Diagnostics.Process.Start(netuse)
|
|
|
|
Catch ex As Exception
|
|
MsgBox("ERR: DATENARCHIV Netzwerkzugriff fehlgeschlagen...")
|
|
End Try
|
|
End Sub
|
|
Public Shared Sub buildConnectionDATENARCHIV_NEW()
|
|
Try
|
|
Dim netuse As New System.Diagnostics.ProcessStartInfo()
|
|
|
|
netuse.FileName = "C:\Windows\system32\net"
|
|
' netuse.Arguments = "use \\datenarchiv.verag.ost.dmn\Datenarchiv /User:VERAGOST\AVISOSMB BmWr501956"
|
|
If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "UNISPED" Then
|
|
netuse.Arguments = "use " & VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getRootDir(False) & " /User:VERAGOST\AVISOSMB BmWr501956"
|
|
Else
|
|
netuse.Arguments = "use " & VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getRootDir(False) & " /User:VERAGOST\AVISOSMB BmWr501956"
|
|
End If
|
|
|
|
|
|
netuse.CreateNoWindow = True
|
|
netuse.WindowStyle = ProcessWindowStyle.Hidden
|
|
System.Diagnostics.Process.Start(netuse)
|
|
|
|
Catch ex As Exception
|
|
MsgBox("ERR: DATENARCHIV Netzwerkzugriff fehlgeschlagen...")
|
|
End Try
|
|
End Sub
|
|
Public Shared Function getSTAMMFILIALE() As String
|
|
If IsNumeric(VERAG_PROG_ALLGEMEIN.cAllgemein.STAMMFILIALE) Then
|
|
Return VERAG_PROG_ALLGEMEIN.cAllgemein.STAMMFILIALE
|
|
Else
|
|
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
|
|
Case "VERAG"
|
|
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG
|
|
Case "SUB" : Return 4803
|
|
Case "SBG" : Return 5003
|
|
Case "WAI" : Return 5103
|
|
Case "NKD" : Return 5303
|
|
Case "NEU" : Return 4819
|
|
End Select
|
|
Case "IMEX" : Return 5501
|
|
Case "UNISPED" : Return 5601
|
|
Case "AMBAR" : Return 5701
|
|
Case "ATILLA" : Return 4801
|
|
Case "FRONTOFFICE" : Return 5801
|
|
End Select
|
|
End If
|
|
Return ""
|
|
End Function
|
|
|
|
Public Shared Function ExtractPdfPages(ByVal SourceFile As String, ByVal TargetFile As String, pageStart As Integer, pagesEnd As Integer) As Boolean 'ITEXTSHARP
|
|
Try
|
|
Dim impPage As iTextSharp.text.pdf.PdfImportedPage = Nothing
|
|
If SourceFile.Contains(" ") Then SourceFile = SourceFile
|
|
Dim Reader As New iTextSharp.text.pdf.PdfReader(SourceFile)
|
|
If Not TargetFile.ToLower.EndsWith(".pdf") Then TargetFile = TargetFile & ".pdf"
|
|
Dim srcDoc As New iTextSharp.text.Document() 'Reader.GetPageSizeWithRotation(0))
|
|
Dim PdfCopyProvider As New iTextSharp.text.pdf.PdfCopy(srcDoc, New FileStream(TargetFile, System.IO.FileMode.Create))
|
|
PdfCopyProvider.SetFullCompression()
|
|
srcDoc.Open()
|
|
For p As Integer = pageStart To (pageStart + pagesEnd) - 1
|
|
If p > Reader.NumberOfPages Then
|
|
MsgBox("Seitenanzahl überschritten!")
|
|
srcDoc.Close() : Reader.Close()
|
|
Return False
|
|
End If
|
|
impPage = PdfCopyProvider.GetImportedPage(Reader, p)
|
|
' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite
|
|
PdfCopyProvider.SetPageSize(New iTextSharp.text.Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height, Reader.GetPageRotation(p)))
|
|
' ----- PDF Seite in das neue Dokument einfügen
|
|
PdfCopyProvider.AddPage(impPage)
|
|
|
|
Next
|
|
' ----- neues PDF Dokument und den Reader schließen
|
|
srcDoc.Close()
|
|
Reader.Close()
|
|
Return True
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
Return False
|
|
End Function
|
|
|
|
End Class
|
|
|
|
Public Class cNCTS_GUARANTEES
|
|
|
|
Public Shared TOBB() As String = {"17TR0004000032349", "20TR0004000069756", "13TR0004000009323", "21TR0004000097157", "12TR0004000004665", "15TR0004000020917",
|
|
"17TR0004000029518", "20DE0000000078205", "19IT01TR000003323", "21TR0004000079552", "21TR0004000078157", "21TR0004000090364", "21TR0004000092350", "20TR0004000069557",
|
|
"21TR0004000097564", "21TR0004000084967", "19TR0004000056358", "19TR0004000053175", "19TR0004000053356", "22TR0004000126963", "22TR0004000114169", "19TR0004000059957",
|
|
"21TR0004000097555", "23TR0004000151181", "21TR0004000096368", "23TR0004000154183"}
|
|
Public Shared OREGON() As String = {"18DE0000000073276", "19DE0000000075520", "18DE0000000075520", "15TR0004000020500", "ITTR0000000000153", "21DE0000000079716", "21DE0000000081910"}
|
|
Public Shared VERAG() As String = {"17DE0000000071678", "05AT510000G000FP7"}
|
|
Public Shared IMEX() As String = {"16AT520000G000VA6"}
|
|
Public Shared ATILLA() As String = {"20AT520000G000092"}
|
|
Public Shared SGS() As String = {"16DE0000000068410"}
|
|
Public Shared MARS() As String = {"15TR0004000020908"}
|
|
Public Shared EKOL() As String = {"13TR0004000005094"}
|
|
|
|
|
|
|
|
'old: {"15TR0004000020917", "12TR0004000004665", "17TR0004000032349", "17TR0004000029518"f, "21TR0004000079552", "21TR00x04000078157", "21TR0004000092350", "20TR0004000069756", "21TR0004000090364", "21TR0004000097157"}
|
|
|
|
'cboBRG.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("TOBB - 15TR0004000020917 / 12TR0004000004665 / 17TR0004000032349 / 17TR0004000029518 / 21TR0004000079552 / 21TR0004000078157 / 21TR0004000092350", " '12TR0004000004665','15TR0004000020917','17TR0004000032349','17TR0004000029518','21TR0004000079552','21TR0004000078157','21TR0004000092350'"))
|
|
|
|
Public Shared Function getSQLList(arr() As String) As String
|
|
getSQLList = ""
|
|
For Each i In arr
|
|
getSQLList &= "'" & i & "',"
|
|
Next
|
|
If getSQLList <> "" Then getSQLList = getSQLList.Substring(0, getSQLList.Length - 1)
|
|
End Function
|
|
Public Shared Function getSlashList(arr) As String
|
|
getSlashList = ""
|
|
For Each i In arr
|
|
getSlashList &= "" & i & " / "
|
|
Next
|
|
If getSlashList <> "" Then getSlashList = getSlashList.Substring(0, getSlashList.Length - 3)
|
|
End Function
|
|
|
|
|
|
|
|
|
|
End Class
|
|
|
|
Public Class cSpeditionsbuchReport
|
|
|
|
Public Function RunReport_VERAG_ZA_DETAIL(KDNR As Integer,
|
|
AbfVon As Date,
|
|
AbfBis As Date,
|
|
Optional whereStr As String = "",
|
|
Optional Open As Boolean = True, Optional list As List(Of SQLVariable) = Nothing,
|
|
Optional showMessage As Boolean = True) As String
|
|
Try
|
|
Dim dt As DataTable = LoadSpeditionsbuchData(KDNR, AbfVon, AbfBis, whereStr, list)
|
|
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
|
|
Return ""
|
|
End If
|
|
|
|
Dim path As String = CreateTargetPath(AbfVon, AbfBis, "VERAG_RPT_DETAIL_")
|
|
Dim templateBytes() As Byte = My.Resources.KVI_report ', My.Resources.KVI_report_general)
|
|
My.Computer.FileSystem.WriteAllBytes(path, templateBytes, False)
|
|
|
|
Dim exclApp As Object = Nothing
|
|
Dim datei As Object = Nothing
|
|
Dim blatt As Object = Nothing
|
|
|
|
Try
|
|
exclApp = CreateObject("Excel.Application")
|
|
exclApp.Visible = False
|
|
|
|
datei = exclApp.Workbooks.Open(path)
|
|
blatt = datei.Worksheets(1)
|
|
|
|
Dim errorTmp = ""
|
|
CreateDetailReport(blatt, dt, KDNR, errorTmp)
|
|
' CreateGeneralReport(blatt, dt, KDNR, AbfVon, AbfBis)
|
|
|
|
If errorTmp <> "" AndAlso showMessage Then
|
|
MsgBox("Fehlende Datensätze des Detailberichtes (SpedBuch vorhanden): " & vbCrLf & errorTmp.Trim)
|
|
End If
|
|
|
|
datei.Save()
|
|
|
|
If Open Then
|
|
exclApp.Visible = True
|
|
Else
|
|
datei.Close(True)
|
|
exclApp.Quit()
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
Try
|
|
If datei IsNot Nothing Then datei.Close(False)
|
|
Catch
|
|
End Try
|
|
|
|
Try
|
|
If exclApp IsNot Nothing Then exclApp.Quit()
|
|
Catch
|
|
End Try
|
|
|
|
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
|
|
Return ""
|
|
End Try
|
|
|
|
Return path
|
|
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
|
|
Return ""
|
|
End Try
|
|
End Function
|
|
|
|
Public Function RunReport_VERAG_ZA_GENERAL(KDNR As Integer,
|
|
AbfVon As Date,
|
|
AbfBis As Date,
|
|
Optional whereStr As String = "",
|
|
Optional Open As Boolean = True,
|
|
Optional DL_Kosten As Boolean = False,
|
|
Optional list As List(Of SQLVariable) = Nothing,
|
|
Optional showMessage As Boolean = True) As String
|
|
Try
|
|
Dim dt As DataTable = LoadSpeditionsbuchData(KDNR, AbfVon, AbfBis, whereStr, list)
|
|
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
|
|
Return ""
|
|
End If
|
|
|
|
Dim path As String = CreateTargetPath(AbfVon, AbfBis, "VERAG_RPT_GENERAL")
|
|
Dim templateBytes() As Byte = My.Resources.KVI_report_general
|
|
My.Computer.FileSystem.WriteAllBytes(path, templateBytes, False)
|
|
|
|
Dim exclApp As Object = Nothing
|
|
Dim datei As Object = Nothing
|
|
Dim blatt As Object = Nothing
|
|
|
|
Try
|
|
exclApp = CreateObject("Excel.Application")
|
|
exclApp.Visible = False
|
|
|
|
datei = exclApp.Workbooks.Open(path)
|
|
blatt = datei.Worksheets(1)
|
|
|
|
|
|
CreateGeneralReport(blatt, dt, KDNR, AbfVon, AbfBis, DL_Kosten, showMessage)
|
|
|
|
|
|
datei.Save()
|
|
|
|
If Open Then
|
|
exclApp.Visible = True
|
|
Else
|
|
datei.Close(True)
|
|
exclApp.Quit()
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
Try
|
|
If datei IsNot Nothing Then datei.Close(False)
|
|
Catch
|
|
End Try
|
|
|
|
Try
|
|
If exclApp IsNot Nothing Then exclApp.Quit()
|
|
Catch
|
|
End Try
|
|
|
|
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
|
|
Return ""
|
|
End Try
|
|
|
|
Return path
|
|
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
|
|
Return ""
|
|
End Try
|
|
End Function
|
|
|
|
|
|
|
|
Private Function LoadSpeditionsbuchData(KDNR As Integer,
|
|
AbfVon As Date,
|
|
AbfBis As Date,
|
|
Optional whereStr As String = "", Optional list As List(Of SQLVariable) = Nothing) As DataTable
|
|
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
|
|
|
Dim sqlText As String =
|
|
"Select CAST([FilialenNr] As varchar) + '/' + CAST([AbfertigungsNr] as varchar) Abfertigungsnummer, " &
|
|
" CAST([Abfertigungsdatum] as date) Abfertigungsdatum, " &
|
|
" Absender, Empfänger, " &
|
|
" Rechnungsbetrag Betrag, " &
|
|
" BelegNr, " &
|
|
" [FilialenNr], [AbfertigungsNr], " &
|
|
" Speditionsbuch.Abfertigungsart, " &
|
|
" Abfertigungsbezeichnung, " &
|
|
" Speditionsbuch.Zollsystem_Land, " &
|
|
" ISNULL(KdAuftragsNr,'') KdAuftragsNr, " &
|
|
" SendungID " &
|
|
"FROM Speditionsbuch " &
|
|
"INNER JOIN [Abfertigungsarten] " &
|
|
" ON Speditionsbuch.Abfertigungsart = Abfertigungsarten.Abfertigungsart " &
|
|
"WHERE 1=1 AND" & If(KDNR > 0, " (EmpfängerKundenNr IN (" & KDNR & ") OR VermittlerKundenNr IN (" & KDNR & ")) AND ", "") &
|
|
" Abfertigungsdatum BETWEEN '" & AbfVon.ToShortDateString & "' AND '" & AbfBis.ToShortDateString & "' " &
|
|
" AND isAbfertigung = 1 "
|
|
|
|
Return SQL.loadDgvBySql_Param(sqlText & " " & whereStr, "FMZOLL",, list)
|
|
End Function
|
|
|
|
Private Function CreateTargetPath(AbfVon As Date, AbfBis As Date, prefix As String) As String
|
|
Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SR\"
|
|
If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
|
|
My.Computer.FileSystem.CreateDirectory(sPath)
|
|
End If
|
|
|
|
Dim path As String = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & ".xlsx"
|
|
|
|
While System.IO.File.Exists(path)
|
|
path = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx"
|
|
End While
|
|
|
|
Return path
|
|
End Function
|
|
|
|
Private Function LoadCustomsDeclaration(r As DataRow) As cVERAG_CustomsDeclarations
|
|
Dim cd As cVERAG_CustomsDeclarations = Nothing
|
|
|
|
Dim belegNr As String = If(r("BelegNr"), "").ToString().Trim()
|
|
If belegNr <> "" Then
|
|
cd = cVERAG_CustomsDeclarations.loadByMRN(belegNr, True)
|
|
End If
|
|
|
|
If cd Is Nothing OrElse Not cd.hasEntry Then
|
|
Dim sendungsId As String = If(r("SendungID"), "").ToString().Trim()
|
|
If sendungsId <> "" Then
|
|
cd = cVERAG_CustomsDeclarations.loadBySendungsID(sendungsId, True)
|
|
End If
|
|
End If
|
|
|
|
If cd Is Nothing Then cd = New cVERAG_CustomsDeclarations
|
|
|
|
Return cd
|
|
End Function
|
|
|
|
Private Sub CreateDetailReport(blatt As Object, dt As DataTable, kdnr As Integer, ByRef errorTmp As String)
|
|
Dim cnt As Integer = 2
|
|
|
|
For Each r As DataRow In dt.Rows
|
|
Try
|
|
Dim cd As cVERAG_CustomsDeclarations = LoadCustomsDeclaration(r)
|
|
|
|
If Not cd.hasEntry Then
|
|
errorTmp &= If(r("BelegNr"), "").ToString() & " " &
|
|
If(r("FilialenNr"), "").ToString() & "/" &
|
|
If(r("AbfertigungsNr"), "").ToString() & vbNewLine
|
|
Else 'Durch else wird nur Zeile geschrieben, wenn auch eine Zolldeklaration gefunden wurde. Sonst wird nur eine Fehlermeldung ausgegeben.
|
|
|
|
WriteDetailReportRow(blatt, r, cd, cnt, kdnr)
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
|
|
End Try
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub CreateGeneralReport(blatt As Object,
|
|
dt As DataTable,
|
|
kdnr As Integer,
|
|
AbfVon As Date,
|
|
AbfBis As Date, Optional DL_Kosten As Boolean = False, Optional ShowMessage As Boolean = True)
|
|
blatt.Range("I1").Value = AbfVon.ToShortDateString & "-" & AbfBis.ToShortDateString
|
|
|
|
Dim cnt As Integer = 3
|
|
|
|
For Each r As DataRow In dt.Rows
|
|
Try
|
|
Dim cd As cVERAG_CustomsDeclarations = LoadCustomsDeclaration(r)
|
|
|
|
If Not cd.hasEntry AndAlso ShowMessage Then
|
|
MsgBox("ERROR: Nicht gefunden: " &
|
|
If(r("BelegNr"), "").ToString() & " " &
|
|
If(r("FilialenNr"), "").ToString() & "/" &
|
|
If(r("AbfertigungsNr"), "").ToString())
|
|
End If
|
|
|
|
WriteGeneralReportRow(blatt, r, cd, cnt, kdnr, DL_Kosten)
|
|
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
|
|
End Try
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub WriteDetailReportRow(blatt As Object,
|
|
r As DataRow,
|
|
cd As cVERAG_CustomsDeclarations,
|
|
ByRef cnt As Integer,
|
|
kdnrsrch As Integer)
|
|
|
|
Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), kdnrsrch)
|
|
|
|
|
|
|
|
|
|
If cd IsNot Nothing AndAlso cd.hasEntry Then
|
|
|
|
Dim empfaenger As String = GetPartyName(cd, cVERAG_CustomsDeclarations.IMPORTER_ROLES, "")
|
|
Dim absender As String = GetPartyName(cd, cVERAG_CustomsDeclarations.EXPORTER_ROLES, "")
|
|
|
|
If cd.Items IsNot Nothing AndAlso cd.Items.Count > 0 Then
|
|
|
|
For Each item As cVERAG_CustomsDeclarations_Item In cd.Items
|
|
|
|
' Abgaben kommen jetzt von der Position
|
|
Dim eustBetrag As Decimal = GetDutyAmount(item, {"B%", "B00", "EUST", "VAT"})
|
|
Dim zollBetrag As Decimal = GetDutyAmountExcluding(item, {"B%", "B00", "EUST", "VAT"})
|
|
|
|
Dim itemInvoiceAmount As Decimal =
|
|
If(item.zaItem_InvoiceValueForeign, item.zaItem_InvoiceValueEUR)
|
|
|
|
Dim zollInProzent As Double = 0
|
|
|
|
If itemInvoiceAmount <> 0 Then
|
|
zollInProzent = CDbl(zollBetrag / itemInvoiceAmount * 100D)
|
|
End If
|
|
|
|
blatt.Range("A" & cnt).Value = cnt - 1
|
|
blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
|
|
blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
|
|
blatt.Range("D" & cnt).Value = empfaenger
|
|
blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
|
|
blatt.Range("F" & cnt).Value = kdAtrNr
|
|
blatt.Range("G" & cnt).Value =
|
|
If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()),
|
|
r("BelegNr"),
|
|
cd.za_MRN)
|
|
|
|
blatt.Range("H" & cnt).Value = item.zaItem_PosNo
|
|
blatt.Range("I" & cnt).Value = item.zaItem_HSCode
|
|
blatt.Range("J" & cnt).Value = "-"
|
|
blatt.Range("K" & cnt).Value = item.zaItem_Description
|
|
blatt.Range("L" & cnt).Value = ""
|
|
|
|
blatt.Range("M" & cnt).Value =
|
|
If(Not String.IsNullOrWhiteSpace(If(item.zaItem_InvoiceCurrency, "")),
|
|
item.zaItem_InvoiceCurrency,
|
|
cd.za_InvoiceCurrency)
|
|
|
|
blatt.Range("N" & cnt).Value = item.zaItem_MainProcedure
|
|
blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice
|
|
blatt.Range("P" & cnt).Value = If(item.zaItem_PosNo = 1, cd.za_TotGrossMass, "")
|
|
blatt.Range("Q" & cnt).Value = item.zaItem_NetMass
|
|
blatt.Range("R" & cnt).Value = itemInvoiceAmount
|
|
blatt.Range("S" & cnt).Value = eustBetrag
|
|
blatt.Range("T" & cnt).Value = zollBetrag
|
|
blatt.Range("U" & cnt).Value = zollInProzent.ToString("N2") & " %"
|
|
blatt.Range("V" & cnt).Value = cd.za_CountryDispatch
|
|
blatt.Range("W" & cnt).Value = absender
|
|
blatt.Range("X" & cnt).Value = item.zaItem_OriginCountry
|
|
blatt.Range("Y" & cnt).Value = cd.za_CountryDestination
|
|
blatt.Range("Z" & cnt).Value = cd.za_Incoterms
|
|
blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace
|
|
|
|
blatt.Range("AB" & cnt).Value =
|
|
item.zaItem_MainProcedure &
|
|
If(Not String.IsNullOrWhiteSpace(item.zaItem_AdditionalProc),
|
|
"/" & item.zaItem_AdditionalProc,
|
|
"")
|
|
|
|
blatt.Range("AC" & cnt).Value = item.zaItem_PreferenceCode
|
|
blatt.Range("AD" & cnt).Value = If(IsItemCBAM(item), "Y", "N")
|
|
blatt.Range("AE" & cnt).Value = item.GetInvoiceListString()
|
|
|
|
|
|
cnt += 1
|
|
|
|
Next
|
|
|
|
Else
|
|
|
|
'Fallback: wenn keine Positionen vorhanden sind,
|
|
'weiterhin Header-Duties verwenden
|
|
|
|
Dim eustBetrag As Decimal =
|
|
GetDutyAmount(cd, {"B%", "B00", "EUST", "VAT"})
|
|
|
|
Dim zollBetrag As Decimal =
|
|
GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"})
|
|
|
|
Dim invoiceAmount As Decimal = If(cd.za_InvoiceAmount, 0D)
|
|
|
|
Dim zollInProzent As Double = 0
|
|
|
|
If invoiceAmount <> 0 Then
|
|
zollInProzent = CDbl(zollBetrag / invoiceAmount * 100D)
|
|
End If
|
|
|
|
blatt.Range("A" & cnt).Value = cnt - 1
|
|
blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
|
|
blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
|
|
blatt.Range("D" & cnt).Value = empfaenger
|
|
blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
|
|
blatt.Range("F" & cnt).Value = kdAtrNr
|
|
|
|
blatt.Range("G" & cnt).Value =
|
|
If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()),
|
|
r("BelegNr"),
|
|
cd.za_MRN)
|
|
|
|
blatt.Range("H" & cnt).Value = ""
|
|
blatt.Range("I" & cnt).Value = ""
|
|
blatt.Range("J" & cnt).Value = "-"
|
|
blatt.Range("K" & cnt).Value = ""
|
|
blatt.Range("L" & cnt).Value = ""
|
|
blatt.Range("M" & cnt).Value = cd.za_InvoiceCurrency
|
|
blatt.Range("N" & cnt).Value = cd.za_MainProcedure
|
|
blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice
|
|
blatt.Range("P" & cnt).Value = cd.za_TotGrossMass
|
|
blatt.Range("Q" & cnt).Value = ""
|
|
blatt.Range("R" & cnt).Value = cd.za_InvoiceAmount
|
|
blatt.Range("S" & cnt).Value = eustBetrag
|
|
blatt.Range("T" & cnt).Value = zollBetrag
|
|
blatt.Range("U" & cnt).Value = zollInProzent.ToString("N2") & " %"
|
|
blatt.Range("V" & cnt).Value = cd.za_CountryDispatch
|
|
blatt.Range("W" & cnt).Value = absender
|
|
blatt.Range("X" & cnt).Value = ""
|
|
blatt.Range("Y" & cnt).Value = cd.za_CountryDestination
|
|
blatt.Range("Z" & cnt).Value = cd.za_Incoterms
|
|
blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace
|
|
blatt.Range("AB" & cnt).Value = ""
|
|
blatt.Range("AC" & cnt).Value = ""
|
|
blatt.Range("AD" & cnt).Value = ""
|
|
blatt.Range("AE" & cnt).Value = ""
|
|
|
|
cnt += 1
|
|
|
|
End If
|
|
|
|
Else
|
|
|
|
blatt.Range("A" & cnt).Value = cnt - 1
|
|
blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
|
|
blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
|
|
blatt.Range("D" & cnt).Value = r("Empfänger")
|
|
blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
|
|
blatt.Range("F" & cnt).Value = kdAtrNr
|
|
blatt.Range("G" & cnt).Value = r("BelegNr")
|
|
|
|
|
|
|
|
cnt += 1
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Function GetDienstleistungskosten(r As DataRow, kdnrsrch As Integer) As Decimal
|
|
Try
|
|
Dim sqlstr As String =
|
|
"SELECT ISNULL(SUM(pos.SteuerfreierBetrag + pos.SteuerpflichtigerBetrag), 0) " &
|
|
"FROM Rechnungsausgang RK " &
|
|
"INNER JOIN RechnungsausgangPositionen POS ON RK.RK_ID = POS.RK_ID " &
|
|
"INNER JOIN Leistungen ON POS.LeistungsNr = Leistungen.LeistungsNr " &
|
|
"WHERE RK.FilialenNr = " & CInt(r("FilialenNr")) & " " &
|
|
"AND RK.AbfertigungsNr = " & CInt(r("AbfertigungsNr")) & " " &
|
|
"AND Leistungen.Abfertigungskosten = 1 " &
|
|
"AND Leistungen.abzugsfaehigInZZ = 0 " &
|
|
"AND RK.RechnungsKundenNr = " & kdnrsrch
|
|
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
|
|
|
Return SQL.getValueTxtBySql(sqlstr, "FMZOLL",,, 0)
|
|
|
|
Catch
|
|
Return 0D
|
|
End Try
|
|
End Function
|
|
Private Sub WriteDetailReportRow_OLD(blatt As Object,
|
|
r As DataRow,
|
|
cd As cVERAG_CustomsDeclarations,
|
|
ByRef cnt As Integer,
|
|
kdnrsrch As Integer)
|
|
|
|
Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), kdnrsrch)
|
|
|
|
If cd IsNot Nothing AndAlso cd.hasEntry Then
|
|
Dim empfaenger As String = GetPartyName(cd, cVERAG_CustomsDeclarations.IMPORTER_ROLES, "")
|
|
Dim absender As String = GetPartyName(cd, cVERAG_CustomsDeclarations.EXPORTER_ROLES, "")
|
|
|
|
Dim eustBetrag As Decimal = GetDutyAmount(cd, {"B%", "B00", "EUST", "VAT"})
|
|
Dim zollBetrag As Decimal = GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"})
|
|
|
|
Dim invoiceAmount As Decimal = If(cd.za_InvoiceAmount, 0D)
|
|
Dim zollInProzent As Double = 0
|
|
|
|
If invoiceAmount <> 0 Then
|
|
zollInProzent = CDbl(zollBetrag / invoiceAmount * 100D)
|
|
End If
|
|
|
|
If cd.Items IsNot Nothing AndAlso cd.Items.Count > 0 Then
|
|
Dim rowcounter As Integer = 0
|
|
|
|
For Each item As cVERAG_CustomsDeclarations_Item In cd.Items
|
|
blatt.Range("A" & cnt).Value = cnt - 1
|
|
blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
|
|
blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
|
|
blatt.Range("D" & cnt).Value = empfaenger
|
|
blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
|
|
blatt.Range("F" & cnt).Value = kdAtrNr
|
|
blatt.Range("G" & cnt).Value = If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), r("BelegNr"), cd.za_MRN)
|
|
blatt.Range("H" & cnt).Value = item.zaItem_PosNo
|
|
blatt.Range("I" & cnt).Value = item.zaItem_HSCode
|
|
blatt.Range("J" & cnt).Value = "-"
|
|
blatt.Range("K" & cnt).Value = item.zaItem_Description
|
|
blatt.Range("L" & cnt).Value = ""
|
|
blatt.Range("M" & cnt).Value = cd.za_InvoiceCurrency
|
|
blatt.Range("N" & cnt).Value = item.zaItem_MainProcedure 'cd.za_MainProcedure
|
|
blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice
|
|
blatt.Range("P" & cnt).Value = If(item.zaItem_PosNo = 1, cd.za_TotGrossMass, "")
|
|
blatt.Range("Q" & cnt).Value = item.zaItem_NetMass
|
|
blatt.Range("R" & cnt).Value = If(item.zaItem_InvoiceValueForeign, item.zaItem_InvoiceValueEUR)
|
|
blatt.Range("S" & cnt).Value = If(rowcounter = 0, eustBetrag, "")
|
|
blatt.Range("T" & cnt).Value = If(rowcounter = 0, zollBetrag, "")
|
|
blatt.Range("U" & cnt).Value = If(rowcounter = 0, zollInProzent.ToString("N2") & " %", "")
|
|
blatt.Range("V" & cnt).Value = cd.za_CountryDispatch
|
|
blatt.Range("W" & cnt).Value = absender
|
|
blatt.Range("X" & cnt).Value = item.zaItem_OriginCountry
|
|
blatt.Range("Y" & cnt).Value = cd.za_CountryDestination
|
|
blatt.Range("Z" & cnt).Value = cd.za_Incoterms
|
|
blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace
|
|
blatt.Range("AB" & cnt).Value = item.zaItem_MainProcedure & If(Not String.IsNullOrWhiteSpace(item.zaItem_AdditionalProc), "/" & item.zaItem_AdditionalProc, "")
|
|
blatt.Range("AC" & cnt).Value = item.zaItem_PreferenceCode
|
|
blatt.Range("AD" & cnt).Value = If(IsItemCBAM(item), "Y", "N")
|
|
blatt.Range("AE" & cnt).Value = item.GetInvoiceListString()
|
|
|
|
cnt += 1
|
|
rowcounter += 1
|
|
Next
|
|
Else
|
|
blatt.Range("A" & cnt).Value = cnt - 1
|
|
blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
|
|
blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
|
|
blatt.Range("D" & cnt).Value = empfaenger
|
|
blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
|
|
blatt.Range("F" & cnt).Value = kdAtrNr
|
|
blatt.Range("G" & cnt).Value = If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), r("BelegNr"), cd.za_MRN)
|
|
blatt.Range("H" & cnt).Value = ""
|
|
blatt.Range("I" & cnt).Value = ""
|
|
blatt.Range("J" & cnt).Value = "-"
|
|
blatt.Range("K" & cnt).Value = ""
|
|
blatt.Range("L" & cnt).Value = ""
|
|
blatt.Range("M" & cnt).Value = cd.za_InvoiceCurrency
|
|
blatt.Range("N" & cnt).Value = cd.za_MainProcedure
|
|
blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice
|
|
blatt.Range("P" & cnt).Value = ""
|
|
blatt.Range("Q" & cnt).Value = ""
|
|
blatt.Range("R" & cnt).Value = ""
|
|
blatt.Range("S" & cnt).Value = eustBetrag
|
|
blatt.Range("T" & cnt).Value = zollBetrag
|
|
blatt.Range("U" & cnt).Value = zollInProzent.ToString("N2") & " %"
|
|
blatt.Range("V" & cnt).Value = cd.za_CountryDispatch
|
|
blatt.Range("W" & cnt).Value = absender
|
|
blatt.Range("X" & cnt).Value = ""
|
|
blatt.Range("Y" & cnt).Value = cd.za_CountryDestination
|
|
blatt.Range("Z" & cnt).Value = cd.za_Incoterms
|
|
blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace
|
|
blatt.Range("AB" & cnt).Value = ""
|
|
blatt.Range("AC" & cnt).Value = ""
|
|
blatt.Range("AD" & cnt).Value = ""
|
|
|
|
|
|
cnt += 1
|
|
End If
|
|
Else
|
|
blatt.Range("A" & cnt).Value = cnt - 1
|
|
blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
|
|
blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
|
|
blatt.Range("D" & cnt).Value = r("Empfänger")
|
|
blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
|
|
blatt.Range("F" & cnt).Value = kdAtrNr
|
|
blatt.Range("G" & cnt).Value = r("BelegNr")
|
|
|
|
cnt += 1
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub WriteGeneralReportRow(blatt As Object,
|
|
r As DataRow,
|
|
cd As cVERAG_CustomsDeclarations,
|
|
ByRef cnt As Integer,
|
|
kdnrsrch As Integer,
|
|
Optional DL_Kosten As Boolean = False)
|
|
|
|
Dim dienstleistungsKosten As Decimal = 0D
|
|
|
|
If DL_Kosten Then
|
|
blatt.Range("P2").Value = "Service Costs"
|
|
dienstleistungsKosten = GetDienstleistungskosten(r, kdnrsrch)
|
|
End If
|
|
|
|
Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), kdnrsrch)
|
|
|
|
|
|
blatt.Range("A" & cnt).Value = cnt - 2
|
|
blatt.Range("B" & cnt).Value = r("Abfertigungsnummer")
|
|
blatt.Range("C" & cnt).Value = r("Abfertigungsdatum")
|
|
blatt.Range("D" & cnt).Value = r("Abfertigungsbezeichnung")
|
|
blatt.Range("E" & cnt).Value = r("Absender")
|
|
blatt.Range("F" & cnt).Value = r("Empfänger")
|
|
blatt.Range("G" & cnt).Value = kdAtrNr
|
|
blatt.Range("H" & cnt).Value = ""
|
|
|
|
If cd IsNot Nothing AndAlso cd.hasEntry Then
|
|
Dim zollBetrag As Decimal = GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"})
|
|
|
|
blatt.Range("H" & cnt).Value = cd.za_InvoiceAmount
|
|
blatt.Range("I" & cnt).Value = GetInvoiceReferences(cd)
|
|
blatt.Range("J" & cnt).Value = cd.za_MRN
|
|
blatt.Range("K" & cnt).Value = zollBetrag
|
|
blatt.Range("L" & cnt).Value = If(cd.Items IsNot Nothing, cd.Items.Count, 0)
|
|
blatt.Range("M" & cnt).Value = GetPartyName(cd, cVERAG_CustomsDeclarations.DECLARANT_ROLES, "")
|
|
blatt.Range("N" & cnt).Value = GetItemsDescription(cd)
|
|
blatt.Range("O" & cnt).Value = cd.za_CountryDispatch & " --> " & cd.za_CountryDestination
|
|
|
|
|
|
If DL_Kosten Then
|
|
blatt.Range("P" & cnt).Value = dienstleistungsKosten
|
|
End If
|
|
|
|
Else
|
|
If DL_Kosten Then
|
|
blatt.Range("I" & cnt).Value = dienstleistungsKosten
|
|
End If
|
|
End If
|
|
|
|
|
|
cnt += 1
|
|
End Sub
|
|
|
|
Private Function GetPartyName(cd As cVERAG_CustomsDeclarations,
|
|
roles As String(),
|
|
Optional fallback As String = "") As String
|
|
If cd Is Nothing OrElse cd.Parties Is Nothing Then Return fallback
|
|
|
|
Dim p = cd.Parties.FirstOrDefault(Function(x) roles.Contains(If(x.zaParty_Role, "").Trim().ToUpper()))
|
|
If p Is Nothing Then Return fallback
|
|
|
|
Return If(p.zaParty_Name, fallback)
|
|
End Function
|
|
|
|
Private Function GetDutyAmount(cd As cVERAG_CustomsDeclarations, dutyTypes As String()) As Decimal
|
|
If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D
|
|
|
|
Return cd.Duties.
|
|
Where(Function(d) DutyTypeMatches(If(d.zaDuty_DutyType, ""), dutyTypes)).
|
|
Sum(Function(d) If(d.zaDuty_AmountEUR, 0D))
|
|
End Function
|
|
|
|
Private Function GetDutyAmountExcluding(cd As cVERAG_CustomsDeclarations, excludedDutyTypes As String()) As Decimal
|
|
If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D
|
|
|
|
Return cd.Duties.
|
|
Where(Function(d) Not DutyTypeMatches(If(d.zaDuty_DutyType, ""), excludedDutyTypes)).
|
|
Sum(Function(d) If(d.zaDuty_AmountEUR, 0D))
|
|
End Function
|
|
|
|
Private Function GetDutyAmount(cd As cVERAG_CustomsDeclarations_Item, dutyTypes As String()) As Decimal
|
|
If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D
|
|
|
|
Return cd.Duties.
|
|
Where(Function(d) DutyTypeMatches(If(d.zaDuty_DutyType, ""), dutyTypes)).
|
|
Sum(Function(d) If(d.zaDuty_AmountEUR, 0D))
|
|
End Function
|
|
|
|
Private Function GetDutyAmountExcluding(cd As cVERAG_CustomsDeclarations_Item, excludedDutyTypes As String()) As Decimal
|
|
If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D
|
|
|
|
Return cd.Duties.
|
|
Where(Function(d) Not DutyTypeMatches(If(d.zaDuty_DutyType, ""), excludedDutyTypes)).
|
|
Sum(Function(d) If(d.zaDuty_AmountEUR, 0D))
|
|
End Function
|
|
|
|
Private Function DutyTypeMatches(dutyType As String, patterns As String()) As Boolean
|
|
Dim value As String = If(dutyType, "").Trim().ToUpper()
|
|
If value = "" OrElse patterns Is Nothing Then Return False
|
|
|
|
For Each p In patterns
|
|
Dim pattern As String = If(p, "").Trim().ToUpper()
|
|
If pattern = "" Then Continue For
|
|
|
|
If pattern.Contains("%") Then
|
|
Dim regexPattern As String =
|
|
"^" & System.Text.RegularExpressions.Regex.Escape(pattern).Replace("%", ".*") & "$"
|
|
|
|
If System.Text.RegularExpressions.Regex.IsMatch(value, regexPattern) Then
|
|
Return True
|
|
End If
|
|
Else
|
|
If value = pattern Then
|
|
Return True
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
Return False
|
|
End Function
|
|
|
|
Private Function GetInvoiceReferences(cd As cVERAG_CustomsDeclarations) As String
|
|
If cd Is Nothing OrElse cd.Documents Is Nothing OrElse cd.Documents.Count = 0 Then Return ""
|
|
|
|
Return String.Join(vbNewLine,
|
|
cd.Documents.
|
|
Where(Function(d) Not String.IsNullOrWhiteSpace(If(d.zaDoc_Reference, ""))).
|
|
Select(Function(d) d.zaDoc_Reference).
|
|
Distinct())
|
|
End Function
|
|
|
|
Private Function GetItemsDescription(cd As cVERAG_CustomsDeclarations) As String
|
|
If cd Is Nothing OrElse cd.Items Is Nothing OrElse cd.Items.Count = 0 Then Return ""
|
|
|
|
Return String.Join(" | ",
|
|
cd.Items.
|
|
Where(Function(i) Not String.IsNullOrWhiteSpace(If(i.zaItem_Description, ""))).
|
|
Select(Function(i) i.zaItem_Description).
|
|
Distinct())
|
|
End Function
|
|
|
|
Private Function IsItemCBAM_TNR(item As cVERAG_CustomsDeclarations_Item) As Boolean
|
|
Try
|
|
If item Is Nothing Then Return False
|
|
|
|
If VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST Is Nothing Then VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST = cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers
|
|
|
|
Dim cbamList = VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST ' VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers()
|
|
Dim hs = If(item.zaItem_HSCode, "").Trim()
|
|
|
|
If hs = "" OrElse cbamList Is Nothing Then Return False
|
|
|
|
For Each p In cbamList
|
|
If hs.StartsWith(If(p, "").Trim()) Then Return True
|
|
Next
|
|
Catch
|
|
End Try
|
|
|
|
Return False
|
|
End Function
|
|
Private Function IsItemCBAM(item As cVERAG_CustomsDeclarations_Item) As Boolean
|
|
|
|
Try
|
|
|
|
If item Is Nothing Then Return False
|
|
|
|
' Ursprungsland prüfen (nicht CBAM-pflichtige Länder ausschließen)
|
|
Dim originCountry = If(item.zaItem_OriginCountry, "").Trim().ToUpper()
|
|
|
|
Select Case originCountry
|
|
' EU-27
|
|
Case "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR",
|
|
"DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL",
|
|
"PL", "PT", "RO", "SK", "SI", "ES", "SE", ' Ausnahmen
|
|
"CH", ' Schweiz
|
|
"NO", ' Norwegen
|
|
"IS", ' Island
|
|
"LI", ' Liechtenstein
|
|
"XI" ' Nordirland
|
|
|
|
Return False
|
|
End Select
|
|
|
|
|
|
If VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST Is Nothing Then VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST = cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers
|
|
|
|
Dim cbamList = VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST ' VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers()
|
|
|
|
Dim hs = If(item.zaItem_HSCode, "").Trim()
|
|
|
|
If hs = "" OrElse cbamList Is Nothing Then Return False
|
|
|
|
For Each p In cbamList
|
|
|
|
If hs.StartsWith(If(p, "").Trim()) Then Return True
|
|
|
|
Next
|
|
|
|
Catch
|
|
End Try
|
|
|
|
Return False
|
|
|
|
End Function
|
|
|
|
Private Function NormalizeKdAuftragsNr(value As Object, kdnrsrch As Integer) As String
|
|
Dim kdAtrNr As String = If(value, "").ToString()
|
|
|
|
If kdnrsrch = 770931 AndAlso kdAtrNr.Contains("/") Then
|
|
kdAtrNr = kdAtrNr.Split("/"c)(0)
|
|
End If
|
|
|
|
Return kdAtrNr
|
|
End Function
|
|
|
|
Private Function LeftSafe(value As String, length As Integer) As String
|
|
value = If(value, "")
|
|
If value.Length < length Then Return value
|
|
Return value.Substring(0, length)
|
|
End Function
|
|
|
|
Private Function RightSafe(value As String, length As Integer) As String
|
|
value = If(value, "")
|
|
If value.Length < length Then Return value
|
|
Return value.Substring(value.Length - length, length)
|
|
End Function
|
|
|
|
Public Function RunReport_VERAG_ZA_DETAIL_FULL(KDNR As Integer,
|
|
AbfVon As Date,
|
|
AbfBis As Date,
|
|
Optional whereStr As String = "",
|
|
Optional Open As Boolean = True, Optional list As List(Of SQLVariable) = Nothing) As String
|
|
Try
|
|
Dim dt As DataTable = LoadSpeditionsbuchData(KDNR, AbfVon, AbfBis, whereStr)
|
|
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
|
|
Return ""
|
|
End If
|
|
|
|
Dim path As String = CreateTargetPathCsv(AbfVon, AbfBis, "KVI_DETAIL_FULL_")
|
|
|
|
Using sw As New System.IO.StreamWriter(path, False, System.Text.Encoding.UTF8)
|
|
|
|
sw.WriteLine(String.Join(";", {
|
|
CsvField("Speditionsbuch_Abfertigungsnummer"),
|
|
CsvField("Speditionsbuch_Abfertigungsdatum"),
|
|
CsvField("Speditionsbuch_Absender"),
|
|
CsvField("Speditionsbuch_Empfaenger"),
|
|
CsvField("Speditionsbuch_BelegNr"),
|
|
CsvField("Speditionsbuch_KdAuftragsNr"),
|
|
CsvField("Speditionsbuch_FilialenNr"),
|
|
CsvField("Speditionsbuch_AbfertigungsNr"),
|
|
CsvField("Speditionsbuch_Abfertigungsart"),
|
|
CsvField("Speditionsbuch_Abfertigungsbezeichnung"),
|
|
CsvField("Speditionsbuch_Zollsystem_Land"),
|
|
CsvField("Speditionsbuch_SendungID"),
|
|
CsvField("za_Id"),
|
|
CsvField("za_System"),
|
|
CsvField("za_CustomsSystem"),
|
|
CsvField("za_CustomsSystemCountry"),
|
|
CsvField("za_IsExternalSystem"),
|
|
CsvField("za_IsFinalDeclaration"),
|
|
CsvField("za_UCR"),
|
|
CsvField("za_Mandant_ID"),
|
|
CsvField("za_Bereich_ID"),
|
|
CsvField("za_Firma"),
|
|
CsvField("za_Niederlassung"),
|
|
CsvField("za_MRN"),
|
|
CsvField("za_LRN"),
|
|
CsvField("za_DeclarationNo"),
|
|
CsvField("za_ReferenceCustomer"),
|
|
CsvField("za_REGIME"),
|
|
CsvField("za_RegistrationType"),
|
|
CsvField("za_MainProcedure"),
|
|
CsvField("za_AdditionalProcedure"),
|
|
CsvField("za_DeclarationDate"),
|
|
CsvField("za_ReleaseDate"),
|
|
CsvField("za_AcceptanceDate"),
|
|
CsvField("za_CustomsOffice"),
|
|
CsvField("za_EntryCustomsOffice"),
|
|
CsvField("za_RepresentationCode"),
|
|
CsvField("za_TransportModeInland"),
|
|
CsvField("za_TransportModeBorder"),
|
|
CsvField("za_MeansOfTransport_Vehicle"),
|
|
CsvField("za_MeansOfTransport_Type"),
|
|
CsvField("za_MeansOfTransport_Nationality"),
|
|
CsvField("za_ContainerNr1"),
|
|
CsvField("za_ContainerNr2"),
|
|
CsvField("za_ContainerNr3"),
|
|
CsvField("za_ContainerNr4"),
|
|
CsvField("za_ContainerNr5"),
|
|
CsvField("za_ContainerNr6"),
|
|
CsvField("za_ContainerNr7"),
|
|
CsvField("za_ContainerNr8"),
|
|
CsvField("za_ContainerNr9"),
|
|
CsvField("za_CountryDispatch"),
|
|
CsvField("za_CountryDestination"),
|
|
CsvField("za_CountryDestinationState"),
|
|
CsvField("za_CountryImport"),
|
|
CsvField("za_WarehouseCode"),
|
|
CsvField("za_Incoterms"),
|
|
CsvField("za_IncotermsPlace"),
|
|
CsvField("za_InvoiceAmount"),
|
|
CsvField("za_InvoiceCurrency"),
|
|
CsvField("za_FiscalRepFlag"),
|
|
CsvField("za_TaxDeduction"),
|
|
CsvField("za_ApplicantTaxOffice"),
|
|
CsvField("za_ApplicantVATNo"),
|
|
CsvField("za_DV1Flag"),
|
|
CsvField("za_PrevDocument_Type"),
|
|
CsvField("za_PrevDocument_No"),
|
|
CsvField("za_AvisoId"),
|
|
CsvField("za_SendungsId"),
|
|
CsvField("za_Remarks"),
|
|
CsvField("za_Sachbearbeiter"),
|
|
CsvField("za_SachbearbeiterId"),
|
|
CsvField("za_TotGrossMass"),
|
|
CsvField("Parties_All"),
|
|
CsvField("Importer_Name"),
|
|
CsvField("Importer_EORI"),
|
|
CsvField("Exporter_Name"),
|
|
CsvField("Exporter_EORI"),
|
|
CsvField("Declarant_Name"),
|
|
CsvField("Declarant_EORI"),
|
|
CsvField("Duties_All"),
|
|
CsvField("Duty_Total"),
|
|
CsvField("Duty_EUST"),
|
|
CsvField("Duty_Excluding_EUST"),
|
|
CsvField("Header_Documents_All"),
|
|
CsvField("Item_Documents_All"),
|
|
CsvField("All_Documents_Merged"),
|
|
CsvField("Item_PosNo"),
|
|
CsvField("Item_ArticleCode"),
|
|
CsvField("Item_HSCode"),
|
|
CsvField("Item_HSAddition1"),
|
|
CsvField("Item_HSAddition2"),
|
|
CsvField("Item_HSAddCodes1"),
|
|
CsvField("Item_HSAddCodes2"),
|
|
CsvField("Item_HSAddCodes3"),
|
|
CsvField("Item_HSAddCodes4"),
|
|
CsvField("Item_HSAddCodes5"),
|
|
CsvField("Item_HSAddCodes6"),
|
|
CsvField("Item_HSAddCodes7"),
|
|
CsvField("Item_HSAddCodes8"),
|
|
CsvField("Item_HSAddCodes9"),
|
|
CsvField("Item_HSAddCodes10"),
|
|
CsvField("Item_Description"),
|
|
CsvField("Item_PackageColli"),
|
|
CsvField("Item_PackageType"),
|
|
CsvField("Item_PackageMark"),
|
|
CsvField("Item_OriginCountry"),
|
|
CsvField("Item_PreferentialCountry"),
|
|
CsvField("Item_PreferenceCode"),
|
|
CsvField("Item_QuotaNo"),
|
|
CsvField("Item_MainProcedure"),
|
|
CsvField("Item_AdditionalProc"),
|
|
CsvField("Item_PrevProcedure"),
|
|
CsvField("Item_GrossMass"),
|
|
CsvField("Item_NetMass"),
|
|
CsvField("Item_SuppUnitCode"),
|
|
CsvField("Item_SuppQuantity"),
|
|
CsvField("Item_StatisticalValueEUR"),
|
|
CsvField("Item_CustomsValueEUR"),
|
|
CsvField("Item_InvoiceCurrency"),
|
|
CsvField("Item_InvoiceValueForeign"),
|
|
CsvField("Item_InvoiceValueEUR"),
|
|
CsvField("Item_BeguenstigungCode"),
|
|
CsvField("Item_DV1Flag"),
|
|
CsvField("Item_PosAddition"),
|
|
CsvField("Item_Remarks"),
|
|
CsvField("Item_isCBAM")
|
|
}))
|
|
|
|
For Each r As DataRow In dt.Rows
|
|
Try
|
|
Dim cd As cVERAG_CustomsDeclarations = LoadCustomsDeclaration(r)
|
|
|
|
Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), KDNR)
|
|
|
|
Dim importer = GetParty(cd, cVERAG_CustomsDeclarations.IMPORTER_ROLES)
|
|
Dim exporter = GetParty(cd, cVERAG_CustomsDeclarations.EXPORTER_ROLES)
|
|
Dim declarant = GetParty(cd, cVERAG_CustomsDeclarations.DECLARANT_ROLES)
|
|
|
|
Dim allParties As String = JoinParties(cd)
|
|
Dim allDuties As String = JoinDuties(cd)
|
|
Dim headerDocs As String = JoinDocuments(cd.Documents)
|
|
|
|
Dim dutyTotal As Decimal = GetDutyAmountTotal(cd)
|
|
Dim dutyEust As Decimal = GetDutyAmount(cd, {"B%", "B00", "EUST", "VAT"})
|
|
Dim dutyExcludingEust As Decimal = GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"})
|
|
|
|
If cd IsNot Nothing AndAlso cd.hasEntry AndAlso cd.Items IsNot Nothing AndAlso cd.Items.Count > 0 Then
|
|
For Each item As cVERAG_CustomsDeclarations_Item In cd.Items
|
|
Dim itemDocs As String = JoinDocuments(item.Documents)
|
|
Dim allDocsMerged As String = MergeDocumentStrings(headerDocs, itemDocs)
|
|
|
|
sw.WriteLine(String.Join(";", {
|
|
CsvField(If(r("Abfertigungsnummer"), "")),
|
|
CsvField(FormatDateForCsv(r("Abfertigungsdatum"))),
|
|
CsvField(If(r("Absender"), "")),
|
|
CsvField(If(r("Empfänger"), "")),
|
|
CsvField(If(r("BelegNr"), "")),
|
|
CsvField(kdAtrNr),
|
|
CsvField(If(r("FilialenNr"), "")),
|
|
CsvField(If(r("AbfertigungsNr"), "")),
|
|
CsvField(If(r("Abfertigungsart"), "")),
|
|
CsvField(If(r("Abfertigungsbezeichnung"), "")),
|
|
CsvField(If(r("Zollsystem_Land"), "")),
|
|
CsvField(If(r("SendungID"), "")),
|
|
CsvField(cd.za_Id),
|
|
CsvField(cd.za_System),
|
|
CsvField(cd.za_CustomsSystem),
|
|
CsvField(cd.za_CustomsSystemCountry),
|
|
CsvField(FormatBoolForCsv(cd.za_IsExternalSystem)),
|
|
CsvField(FormatBoolForCsv(cd.za_IsFinalDeclaration)),
|
|
CsvField(cd.za_UCR),
|
|
CsvField(cd.za_Mandant_ID),
|
|
CsvField(cd.za_Bereich_ID),
|
|
CsvField(cd.za_Firma),
|
|
CsvField(cd.za_Niederlassung),
|
|
CsvField(cd.za_MRN),
|
|
CsvField(cd.za_LRN),
|
|
CsvField(cd.za_DeclarationNo),
|
|
CsvField(cd.za_ReferenceCustomer),
|
|
CsvField(cd.za_REGIME),
|
|
CsvField(cd.za_RegistrationType),
|
|
CsvField(cd.za_MainProcedure),
|
|
CsvField(cd.za_AdditionalProcedure),
|
|
CsvField(FormatDateForCsv(cd.za_DeclarationDate)),
|
|
CsvField(FormatDateForCsv(cd.za_ReleaseDate)),
|
|
CsvField(FormatDateForCsv(cd.za_AcceptanceDate)),
|
|
CsvField(cd.za_CustomsOffice),
|
|
CsvField(cd.za_EntryCustomsOffice),
|
|
CsvField(cd.za_RepresentationCode),
|
|
CsvField(cd.za_TransportModeInland),
|
|
CsvField(cd.za_TransportModeBorder),
|
|
CsvField(cd.za_MeansOfTransport_Vehicle),
|
|
CsvField(cd.za_MeansOfTransport_Type),
|
|
CsvField(cd.za_MeansOfTransport_Nationality),
|
|
CsvField(cd.za_ContainerNr1),
|
|
CsvField(cd.za_ContainerNr2),
|
|
CsvField(cd.za_ContainerNr3),
|
|
CsvField(cd.za_ContainerNr4),
|
|
CsvField(cd.za_ContainerNr5),
|
|
CsvField(cd.za_ContainerNr6),
|
|
CsvField(cd.za_ContainerNr7),
|
|
CsvField(cd.za_ContainerNr8),
|
|
CsvField(cd.za_ContainerNr9),
|
|
CsvField(cd.za_CountryDispatch),
|
|
CsvField(cd.za_CountryDestination),
|
|
CsvField(cd.za_CountryDestinationState),
|
|
CsvField(cd.za_CountryImport),
|
|
CsvField(cd.za_WarehouseCode),
|
|
CsvField(cd.za_Incoterms),
|
|
CsvField(cd.za_IncotermsPlace),
|
|
CsvField(FormatDecimalForCsv(cd.za_InvoiceAmount)),
|
|
CsvField(cd.za_InvoiceCurrency),
|
|
CsvField(FormatNullableBoolForCsv(cd.za_FiscalRepFlag)),
|
|
CsvField(FormatNullableBoolForCsv(cd.za_TaxDeduction)),
|
|
CsvField(cd.za_ApplicantTaxOffice),
|
|
CsvField(cd.za_ApplicantVATNo),
|
|
CsvField(FormatNullableBoolForCsv(cd.za_DV1Flag)),
|
|
CsvField(cd.za_PrevDocument_Type),
|
|
CsvField(cd.za_PrevDocument_No),
|
|
CsvField(If(cd.za_AvisoId.HasValue, cd.za_AvisoId.Value.ToString(), "")),
|
|
CsvField(If(cd.za_SendungsId.HasValue, cd.za_SendungsId.Value.ToString(), "")),
|
|
CsvField(cd.za_Remarks),
|
|
CsvField(cd.za_Sachbearbeiter),
|
|
CsvField(cd.za_SachbearbeiterId),
|
|
CsvField(FormatDecimalForCsv(cd.za_TotGrossMass)),
|
|
CsvField(allParties),
|
|
CsvField(If(importer Is Nothing, "", importer.zaParty_Name)),
|
|
CsvField(If(importer Is Nothing, "", importer.zaParty_EORI)),
|
|
CsvField(If(exporter Is Nothing, "", exporter.zaParty_Name)),
|
|
CsvField(If(exporter Is Nothing, "", exporter.zaParty_EORI)),
|
|
CsvField(If(declarant Is Nothing, "", declarant.zaParty_Name)),
|
|
CsvField(If(declarant Is Nothing, "", declarant.zaParty_EORI)),
|
|
CsvField(allDuties),
|
|
CsvField(FormatDecimalForCsv(dutyTotal)),
|
|
CsvField(FormatDecimalForCsv(dutyEust)),
|
|
CsvField(FormatDecimalForCsv(dutyExcludingEust)),
|
|
CsvField(headerDocs),
|
|
CsvField(itemDocs),
|
|
CsvField(allDocsMerged),
|
|
CsvField(item.zaItem_PosNo),
|
|
CsvField(item.zaItem_ArticleCode),
|
|
CsvField(item.zaItem_HSCode),
|
|
CsvField(item.zaItem_HSAddition1),
|
|
CsvField(item.zaItem_HSAddition2),
|
|
CsvField(item.zaItem_HSAddCodes1),
|
|
CsvField(item.zaItem_HSAddCodes2),
|
|
CsvField(item.zaItem_HSAddCodes3),
|
|
CsvField(item.zaItem_HSAddCodes4),
|
|
CsvField(item.zaItem_HSAddCodes5),
|
|
CsvField(item.zaItem_HSAddCodes6),
|
|
CsvField(item.zaItem_HSAddCodes7),
|
|
CsvField(item.zaItem_HSAddCodes8),
|
|
CsvField(item.zaItem_HSAddCodes9),
|
|
CsvField(item.zaItem_HSAddCodes10),
|
|
CsvField(item.zaItem_Description),
|
|
CsvField(item.zaItem_PackageColli),
|
|
CsvField(item.zaItem_PackageType),
|
|
CsvField(item.zaItem_PackageMark),
|
|
CsvField(item.zaItem_OriginCountry),
|
|
CsvField(item.zaItem_PreferentialCountry),
|
|
CsvField(item.zaItem_PreferenceCode),
|
|
CsvField(item.zaItem_QuotaNo),
|
|
CsvField(item.zaItem_MainProcedure),
|
|
CsvField(item.zaItem_AdditionalProc),
|
|
CsvField(item.zaItem_PrevProcedure),
|
|
CsvField(FormatDecimalForCsv(item.zaItem_GrossMass)),
|
|
CsvField(FormatDecimalForCsv(item.zaItem_NetMass)),
|
|
CsvField(item.zaItem_SuppUnitCode),
|
|
CsvField(FormatDecimalForCsv(item.zaItem_SuppQuantity)),
|
|
CsvField(FormatDecimalForCsv(item.zaItem_StatisticalValueEUR)),
|
|
CsvField(FormatDecimalForCsv(item.zaItem_CustomsValueEUR)),
|
|
CsvField(item.zaItem_InvoiceCurrency),
|
|
CsvField(FormatDecimalForCsv(item.zaItem_InvoiceValueForeign)),
|
|
CsvField(FormatDecimalForCsv(item.zaItem_InvoiceValueEUR)),
|
|
CsvField(item.zaItem_BeguenstigungCode),
|
|
CsvField(FormatNullableBoolForCsv(item.zaItem_DV1Flag)),
|
|
CsvField(item.zaItem_PosAddition),
|
|
CsvField(item.zaItem_Remarks),
|
|
CsvField(If(IsItemCBAM(item), "Y", "N"))
|
|
}))
|
|
Next
|
|
Else
|
|
sw.WriteLine(String.Join(";", {
|
|
CsvField(If(r("Abfertigungsnummer"), "")),
|
|
CsvField(FormatDateForCsv(r("Abfertigungsdatum"))),
|
|
CsvField(If(r("Absender"), "")),
|
|
CsvField(If(r("Empfänger"), "")),
|
|
CsvField(If(r("BelegNr"), "")),
|
|
CsvField(kdAtrNr),
|
|
CsvField(If(r("FilialenNr"), "")),
|
|
CsvField(If(r("AbfertigungsNr"), "")),
|
|
CsvField(If(r("Abfertigungsart"), "")),
|
|
CsvField(If(r("Abfertigungsbezeichnung"), "")),
|
|
CsvField(If(r("Zollsystem_Land"), "")),
|
|
CsvField(If(r("SendungID"), "")),
|
|
CsvField(If(cd Is Nothing, "", cd.za_Id.ToString())),
|
|
CsvField(If(cd Is Nothing, "", cd.za_System)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_CustomsSystem)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_CustomsSystemCountry)),
|
|
CsvField(If(cd Is Nothing, "", FormatBoolForCsv(cd.za_IsExternalSystem))),
|
|
CsvField(If(cd Is Nothing, "", FormatBoolForCsv(cd.za_IsFinalDeclaration))),
|
|
CsvField(If(cd Is Nothing, "", cd.za_UCR)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_Mandant_ID)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_Bereich_ID)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_Firma)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_Niederlassung)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_MRN)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_LRN)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_DeclarationNo)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ReferenceCustomer)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_REGIME)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_RegistrationType)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_MainProcedure)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_AdditionalProcedure)),
|
|
CsvField(If(cd Is Nothing, "", FormatDateForCsv(cd.za_DeclarationDate))),
|
|
CsvField(If(cd Is Nothing, "", FormatDateForCsv(cd.za_ReleaseDate))),
|
|
CsvField(If(cd Is Nothing, "", FormatDateForCsv(cd.za_AcceptanceDate))),
|
|
CsvField(If(cd Is Nothing, "", cd.za_CustomsOffice)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_EntryCustomsOffice)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_RepresentationCode)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_TransportModeInland)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_TransportModeBorder)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_MeansOfTransport_Vehicle)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_MeansOfTransport_Type)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_MeansOfTransport_Nationality)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ContainerNr1)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ContainerNr2)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ContainerNr3)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ContainerNr4)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ContainerNr5)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ContainerNr6)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ContainerNr7)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ContainerNr8)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ContainerNr9)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_CountryDispatch)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_CountryDestination)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_CountryDestinationState)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_CountryImport)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_WarehouseCode)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_Incoterms)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_IncotermsPlace)),
|
|
CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(cd.za_InvoiceAmount))),
|
|
CsvField(If(cd Is Nothing, "", cd.za_InvoiceCurrency)),
|
|
CsvField(If(cd Is Nothing, "", FormatNullableBoolForCsv(cd.za_FiscalRepFlag))),
|
|
CsvField(If(cd Is Nothing, "", FormatNullableBoolForCsv(cd.za_TaxDeduction))),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ApplicantTaxOffice)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_ApplicantVATNo)),
|
|
CsvField(If(cd Is Nothing, "", FormatNullableBoolForCsv(cd.za_DV1Flag))),
|
|
CsvField(If(cd Is Nothing, "", cd.za_PrevDocument_Type)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_PrevDocument_No)),
|
|
CsvField(If(cd Is Nothing OrElse Not cd.za_AvisoId.HasValue, "", cd.za_AvisoId.Value.ToString())),
|
|
CsvField(If(cd Is Nothing OrElse Not cd.za_SendungsId.HasValue, "", cd.za_SendungsId.Value.ToString())),
|
|
CsvField(If(cd Is Nothing, "", cd.za_Remarks)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_Sachbearbeiter)),
|
|
CsvField(If(cd Is Nothing, "", cd.za_SachbearbeiterId)),
|
|
CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(cd.za_TotGrossMass))),
|
|
CsvField(If(cd Is Nothing, "", allParties)),
|
|
CsvField(If(importer Is Nothing, "", importer.zaParty_Name)),
|
|
CsvField(If(importer Is Nothing, "", importer.zaParty_EORI)),
|
|
CsvField(If(exporter Is Nothing, "", exporter.zaParty_Name)),
|
|
CsvField(If(exporter Is Nothing, "", exporter.zaParty_EORI)),
|
|
CsvField(If(declarant Is Nothing, "", declarant.zaParty_Name)),
|
|
CsvField(If(declarant Is Nothing, "", declarant.zaParty_EORI)),
|
|
CsvField(If(cd Is Nothing, "", allDuties)),
|
|
CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(dutyTotal))),
|
|
CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(dutyEust))),
|
|
CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(dutyExcludingEust))),
|
|
CsvField(If(cd Is Nothing, "", headerDocs)),
|
|
CsvField(""),
|
|
CsvField(If(cd Is Nothing, "", headerDocs)),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField(""),
|
|
CsvField("")
|
|
}))
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
|
|
End Try
|
|
Next
|
|
End Using
|
|
|
|
If Open Then
|
|
Process.Start(path)
|
|
End If
|
|
|
|
Return path
|
|
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
|
|
Return ""
|
|
End Try
|
|
End Function
|
|
|
|
Private Function CreateTargetPathCsv(AbfVon As Date, AbfBis As Date, prefix As String) As String
|
|
Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SR\"
|
|
If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
|
|
My.Computer.FileSystem.CreateDirectory(sPath)
|
|
End If
|
|
|
|
Dim path As String = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & ".csv"
|
|
|
|
While System.IO.File.Exists(path)
|
|
path = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & "_" & Now.ToString("ddMMyyyyHHmmss") & ".csv"
|
|
End While
|
|
|
|
Return path
|
|
End Function
|
|
|
|
Private Function CsvField(value As Object) As String
|
|
Dim s As String = If(value, "").ToString()
|
|
s = s.Replace("""", """""")
|
|
Return """" & s & """"
|
|
End Function
|
|
|
|
Private Function FormatDateForCsv(value As Object) As String
|
|
If value Is Nothing OrElse value Is DBNull.Value Then Return ""
|
|
If IsDate(value) Then Return CDate(value).ToString("yyyy-MM-dd")
|
|
Return value.ToString()
|
|
End Function
|
|
|
|
Private Function FormatDecimalForCsv(value As Object) As String
|
|
If value Is Nothing OrElse value Is DBNull.Value Then Return ""
|
|
If IsNumeric(value) Then Return Convert.ToDecimal(value).ToString(System.Globalization.CultureInfo.InvariantCulture)
|
|
Return value.ToString()
|
|
End Function
|
|
|
|
Private Function FormatBoolForCsv(value As Boolean) As String
|
|
Return If(value, "1", "0")
|
|
End Function
|
|
|
|
Private Function FormatNullableBoolForCsv(value As Boolean?) As String
|
|
If Not value.HasValue Then Return ""
|
|
Return If(value.Value, "1", "0")
|
|
End Function
|
|
|
|
Private Function GetDutyAmountTotal(cd As cVERAG_CustomsDeclarations) As Decimal
|
|
If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D
|
|
Return cd.Duties.Sum(Function(d) If(d.zaDuty_AmountEUR, 0D))
|
|
End Function
|
|
|
|
Private Function GetParty(cd As cVERAG_CustomsDeclarations, roles As String()) As cVERAG_CustomsDeclarations_Parties
|
|
If cd Is Nothing OrElse cd.Parties Is Nothing Then Return Nothing
|
|
|
|
Return cd.Parties.FirstOrDefault(
|
|
Function(x) roles.Contains(If(x.zaParty_Role, "").Trim().ToUpper())
|
|
)
|
|
End Function
|
|
|
|
Private Function JoinParties(cd As cVERAG_CustomsDeclarations) As String
|
|
If cd Is Nothing OrElse cd.Parties Is Nothing OrElse cd.Parties.Count = 0 Then Return ""
|
|
|
|
Return String.Join(" || ",
|
|
cd.Parties.Select(Function(p)
|
|
Return String.Join(" | ", {
|
|
"Role=" & If(p.zaParty_Role, ""),
|
|
"Name=" & If(p.zaParty_Name, ""),
|
|
"EORI=" & If(p.zaParty_EORI, ""),
|
|
"EORI_NL=" & If(p.zaParty_EORI_NL, ""),
|
|
"Street=" & If(p.zaParty_Street, ""),
|
|
"PostalCode=" & If(p.zaParty_PostalCode, ""),
|
|
"City=" & If(p.zaParty_City, ""),
|
|
"Country=" & If(p.zaParty_Country, ""),
|
|
"TIN=" & If(p.zaParty_TIN, ""),
|
|
"VAT=" & If(p.zaParty_VATNumber, ""),
|
|
"TaxOffice=" & If(p.zaParty_TaxOffice, ""),
|
|
"Contact=" & If(p.zaParty_ContactName, ""),
|
|
"Phone=" & If(p.zaParty_Phone, ""),
|
|
"Email=" & If(p.zaParty_Email, "")
|
|
})
|
|
End Function))
|
|
End Function
|
|
|
|
Private Function JoinDuties(cd As cVERAG_CustomsDeclarations) As String
|
|
If cd Is Nothing OrElse cd.Duties Is Nothing OrElse cd.Duties.Count = 0 Then Return ""
|
|
|
|
Return String.Join(" || ",
|
|
cd.Duties.Select(Function(d)
|
|
Return String.Join(" | ", {
|
|
"DutyType=" & If(d.zaDuty_DutyType, ""),
|
|
"AmountEUR=" & FormatDecimalForCsv(d.zaDuty_AmountEUR),
|
|
"AmountForeign=" & FormatDecimalForCsv(d.zaDuty_AmountForeign),
|
|
"Currency=" & If(d.zaDuty_Currency, ""),
|
|
"BIN=" & If(d.zaDuty_BIN, ""),
|
|
"AccountType=" & If(d.zaDuty_AccountType, ""),
|
|
"AccountHeadCustoms=" & If(d.zaDuty_AccountHeadCustoms, ""),
|
|
"ApplicationType=" & If(d.zaDuty_ApplicationType, ""),
|
|
"AccountNo=" & If(d.zaDuty_AccountNo, ""),
|
|
"AccountEORI=" & If(d.zaDuty_AccountEORI, ""),
|
|
"AccountHolderName=" & If(d.zaDuty_AccountHolderName, ""),
|
|
"LimitDate=" & FormatDateForCsv(d.zaDuty_LimitDate)
|
|
})
|
|
End Function))
|
|
End Function
|
|
|
|
Private Function JoinDocuments(docs As List(Of cVERAG_CustomsDeclarations_Document)) As String
|
|
If docs Is Nothing OrElse docs.Count = 0 Then Return ""
|
|
|
|
Return String.Join(" || ",
|
|
docs.Select(Function(d)
|
|
Return String.Join(" | ", {
|
|
"Date=" & If(d.zaDoc_Date, ""),
|
|
"Section=" & If(d.zaDoc_Section, ""),
|
|
"Code=" & If(d.zaDoc_Code, ""),
|
|
"Reference=" & If(d.zaDoc_Reference, ""),
|
|
"Presentation=" & If(d.zaDoc_Presentation, ""),
|
|
"DepAmount=" & If(d.zaDoc_DepreciationAmount, ""),
|
|
"DepUnit=" & If(d.zaDoc_DepreciationUnitmeasurement, ""),
|
|
"DepQual=" & If(d.zaDoc_DepreciationUnitmeasurementQualifier, ""),
|
|
"Description=" & If(d.zaDoc_Description, "")
|
|
})
|
|
End Function))
|
|
End Function
|
|
|
|
Private Function MergeDocumentStrings(headerDocs As String, itemDocs As String) As String
|
|
If headerDocs = "" Then Return itemDocs
|
|
If itemDocs = "" Then Return headerDocs
|
|
Return headerDocs & " || " & itemDocs
|
|
End Function
|
|
|
|
|
|
End Class
|