Imports IntraSell_DLL
Imports MySql.Data.MySqlClient

Module ModuleBuchVorgangBar

    Function GetBarrechnungKundNr() As Integer
        If Not ExistsVarValue(BARRECHNUNG_KUNDNR) Then
            SetVarValue(BARRECHNUNG_KUNDNR, FirstRow("select min(idnr) from ofAdressen"))
        End If
        Return VarValue(BARRECHNUNG_KUNDNR)
    End Function
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Friend Function ExistiertNichtAbgeschlossenVorgang(VorgangTyp As String, KundNr As Integer) As Decimal
        Dim sql As String = "select Nummer from buchVorgang where Typ=@VorgangTyp and abgeschlossen=0 and Datum > DATE_ADD(CURRENT_TIMESTAMP, INTERVAL -30 DAY) " &
                            " AND KundNr=@KundNr AND NOT exists (select * from tasks where task = 'VorgangAbschliessenBar' and Parameter = concat(Typ, '-', Nummer)) " &
                            " order by Datum desc, Nummer desc"

        Dim cmd As New MySqlCommand(sql)
        cmd.Parameters.AddWithValue("VorgangTyp", VorgangTyp)
        cmd.Parameters.AddWithValue("KundNr", KundNr)
        Dim istAbgeschlossen = FirstRow(cmd)
        If IsNumeric(istAbgeschlossen) Then
            Return istAbgeschlossen
        End If
        Return -1
    End Function

    ''' <summary>
    ''' Letzter offener Vorgang eines Kunden suchen
    ''' </summary>
    ''' <param name="VorgangTyp"></param>
    ''' <param name="KundNr"></param>
    ''' <remarks></remarks>
    Public Function GetLetzterOffenerVorgang(VorgangTyp As String, KundNr As Integer) As Object
        'Zuerst Prüfung ob Vorgang bereits offen 
        Dim cmdCheck As New MySqlCommand("select Nummer from buchVorgang " &
                                         "where kundNr=@KundNr and Typ=@Typ and Datum > date_Add(current_timestamp, Interval -1 day ) " &
                                         " and abgeschlossen=0")
        cmdCheck.Parameters.AddWithValue("KundNr", KundNr)
        cmdCheck.Parameters.AddWithValue("Typ", VorgangTyp)

        Dim vorgangBereitsOffen = FirstRow(cmdCheck)
        Return vorgangBereitsOffen
    End Function

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="Typ"></param>
    ''' <param name="Nummer"></param>
    ''' <remarks></remarks>
    Public Sub PrintVorgangBarOhneUeberleitung(Typ As String, Nummer As Integer)
        VorgangDrucken(VorgangTyp:=Typ, VorgangNummer:=Nummer, isUeberleitung:=False, showPreview:=VarValue_Default(PRINT_AM_BILDSCHIRM, False))
    End Sub

End Module
