Public Class cFakturierungInterfaceSyska



    Private Sub TrdinSchreiben()
        '3430 On Error GoTo PROC_Error

        '         Dim wrk As DAO.Workspace
        '        Dim db As DAO.Database
        '        Dim rstRK As DAO.Recordset
        '        Dim qryRP As DAO.QueryDef
        '        Dim rstRP As DAO.Recordset
        '        Dim rstInvoice As DAO.Recordset
        '        Dim rstProduct As DAO.Recordset
        '        Dim strPrompt As String
        '        Dim strTitle As String
        '        Dim strSachkonto As String
        '        Dim fInTransaktion As Boolean
        '        Dim lngFortschritt As Long
        '        Dim curInvoiceSteuerpflichtigerBetragLokal As Currency
        '        Dim curInvoiceSteuerfreierBetragLokal As Currency
        '        Dim curInvoiceSteuerbetragLokal As Currency
        '        Dim curInvoiceRechnungsbetragLokal As Currency
        '        Dim curInvoiceSteuerpflichtigerBetragFremd As Currency
        '        Dim curInvoiceSteuerfreierBetragFremd As Currency
        '        Dim curInvoiceSteuerbetragFremd As Currency
        '        Dim curInvoiceRechnungsbetragFremd As Currency
        '        Dim curProductSteuerpflichtigerBetragLokal As Currency
        '        Dim curProductSteuerfreierBetragLokal As Currency
        '        Dim curProductSteuerpflichtigerBetragFremd As Currency
        '        Dim curProductSteuerfreierBetragFremd As Currency
        '        Dim curWährungsdifferenzSteuerpflichtigerBetrag As Currency
        '        Dim curWährungsdifferenzSteuerfreierBetrag As Currency
        '        Dim lngSatzzähler As Long

        '3440     DoCmd.Hourglass True

        '3450     Call Logbucheintrag(0, 0, "VERAG-Daten-Transfer.TrdinSchreiben", 0, "gestartet")

        '3460     Set wrk = DBEngine.Workspaces(0)
        '3470     Set db = CurrentDb

        '         ' Rechnungskopfsätze lesen.
        '3480     Set rstRK = db.OpenRecordset("qryTrdinSchreiben_Select_RK", dbOpenSnapshot, dbSeeChanges)
        '3490     If Not rstRK.EOF Then

        '3500         rstRK.MoveLast
        '3510         Call SysCmd(acSysCmdInitMeter, "Rechnungen werden verarbeitet.", rstRK.RecordCount)
        '3520         rstRK.MoveFirst
        '3530         lngFortschritt = 0

        '3540         Do Until rstRK.EOF

        '3550             lngFortschritt = lngFortschritt + 1
        '3560             Call SysCmd(acSysCmdUpdateMeter, lngFortschritt)
        '3570             DoEvents

        '                 ' RK - Währungsabhängige Datenaufbereitung.
        '3580             If rstRK![RK_Währungscode] = LOKALWÄHRUNG Then
        '                     ' Lokalwährung (EURO)
        '3590                 curInvoiceSteuerpflichtigerBetragLokal = rstRK![RK_SteuerpflichtigerBetrag]
        '3600                 curInvoiceSteuerfreierBetragLokal = rstRK![RK_SteuerfreierBetrag]
        '3610                 curInvoiceSteuerbetragLokal = rstRK![RK_Steuerbetrag]
        '3620                 curInvoiceRechnungsbetragLokal = rstRK![RK_Rechnungsbetrag]
        '3630                 curInvoiceSteuerpflichtigerBetragFremd = 0
        '3640                 curInvoiceSteuerfreierBetragFremd = 0
        '3650                 curInvoiceSteuerbetragFremd = 0
        '3660                 curInvoiceRechnungsbetragFremd = 0
        '3670             Else
        '                     ' Fremdwährung.
        '3680                 curInvoiceSteuerpflichtigerBetragFremd = rstRK![RK_SteuerpflichtigerBetrag]
        '3690                 curInvoiceSteuerfreierBetragFremd = rstRK![RK_SteuerfreierBetrag]
        '3700                 curInvoiceSteuerbetragFremd = rstRK![RK_Steuerbetrag]
        '3710                 curInvoiceRechnungsbetragFremd = rstRK![RK_Rechnungsbetrag]
        '                     ' Fremdwährung in Lokalwährung umrechnen.
        '3720                 curInvoiceSteuerpflichtigerBetragLokal = fktEuro(rstRK![RK_SteuerpflichtigerBetrag], rstRK![RK_Währungscode], LOKALWÄHRUNG)
        '3730                 curInvoiceSteuerfreierBetragLokal = fktEuro(rstRK![RK_SteuerfreierBetrag], rstRK![RK_Währungscode], LOKALWÄHRUNG)
        '3740                 curInvoiceSteuerbetragLokal = CLng(curInvoiceSteuerpflichtigerBetragLokal * rstRK![RK_SteuersatzProzent] * 100) / 100
        '3750                 curInvoiceRechnungsbetragLokal = curInvoiceSteuerpflichtigerBetragLokal + curInvoiceSteuerfreierBetragLokal + curInvoiceSteuerbetragLokal
        '                     ' Basis zur Feststellung von Rundungsdifferenzen schaffen.
        '3760                 curWährungsdifferenzSteuerpflichtigerBetrag = curInvoiceSteuerpflichtigerBetragLokal
        '3770                 curWährungsdifferenzSteuerfreierBetrag = curInvoiceSteuerfreierBetragLokal
        '3780                 lngSatzzähler = rstRK!RK_Satzzähler
        '3790             End If

        '                 ' Buchungskopfsatz lesen.
        '3800             Set rstInvoice = SPRecordsetMitParameter("dbo.spTrdinSchreibenSelectInvoicePKey", AktuelleVerbindungszeichenfolge(0), rstRK![RK_RechnungsDatum], rstRK![RK_RechnungsNr])
        '3810             If Not rstInvoice.EOF Then
        '3820                 rstInvoice.Close

        '                     ' Nachricht
        '3830                 strPrompt = "Rechnung-Nr. " & rstRK![RK_RechnungsNr] & " vom " & rstRK![RK_RechnungsDatum] & " kann nicht verbucht werden. " & _
        '                         "Es ist bereits ein Eintrag vorhanden." & vbCrLf & vbCrLf & "Möchten Sie den Buchungsvorgang abbrechen?"
        '3840                 strTitle = "Daten-Transfer.TrdinSchreiben"
        '3850                 If (MsgBox(strPrompt, vbCritical + vbYesNo + vbDefaultButton1, strTitle)) = vbYes Then
        '3860                     GoTo PROC_Exit
        '3870                 Else
        '3880                     GoTo RK_MoveNext
        '3890                 End If

        '3900             Else
        '3910                 rstInvoice.Close

        '                     ' Transaktion starten.
        '3920                 wrk.BeginTrans
        '3930                 fInTransaktion = True

        '                     ' Buchungskopfsatz erstellen.
        '3940                 Call SPAktionsabfrageOhneErgebnis("dbo.spTrdinSchreibenInsertInvoice", AktuelleVerbindungszeichenfolge(0), _
        '                         rstRK![RK_RechnungsDatum], rstRK![RK_RechnungsNr], DLookup("[Speditionsbuch]", "Filialen", "[FilialenNr]=" & rstRK![RK_FilialenNr]), _
        '                         rstRK![RK_FilialenNr], rstRK![RK_AbfertigungsNr], rstRK![RK_UnterNr], rstRK![RK_Abfertigungsdatum], rstRK![RK_BelegartenNr], _
        '                         rstRK![RK_KundenNrZentrale], rstRK![RK_RechnungsKundenNr], rstRK![RK_RechnungsLandKz], rstRK![RK_RechnungsUstIdKz], rstRK![RK_RechnungsUstIdNr], _
        '                         IIf(rstRK![RK_Lastschrift], 1, 0), rstRK![RK_Steuerschlüssel], rstRK![RK_SteuersatzProzent], _
        '                         LOKALWÄHRUNG, curInvoiceSteuerpflichtigerBetragLokal, curInvoiceSteuerfreierBetragLokal, curInvoiceSteuerbetragLokal, curInvoiceRechnungsbetragLokal, _
        '                         IIf(rstRK![RK_Währungscode] <> LOKALWÄHRUNG, rstRK![RK_Währungscode], Null), curInvoiceSteuerpflichtigerBetragFremd, curInvoiceSteuerfreierBetragFremd, _
        '                         curInvoiceSteuerbetragFremd, curInvoiceRechnungsbetragFremd, Null, 0, rstRK![RK_Nettozahlungsziel], rstRK![RK_Firma_ID], Null)

        '                     ' Rechnungspositionssätze lesen.
        '3950                 Set qryRP = db.QueryDefs("qryTrdinSchreiben_Select_RP")
        '3960                 qryRP.Parameters("[prmRechnungsDatum]") = rstRK![RK_RechnungsDatum]
        '3970                 qryRP.Parameters("[prmRechnungsNr]") = rstRK![RK_RechnungsNr]
        '3980                 Set rstRP = qryRP.OpenRecordset(dbOpenForwardOnly, dbSeeChanges)
        '3990                 qryRP.Close

        '4000                 Do Until rstRP.EOF

        '                         ' RP - Währungsabhängige Datenaufbereitung.
        '4010                     If rstRK![RK_Währungscode] = LOKALWÄHRUNG Then
        '                             ' Lokalwährung (EURO)
        '4020                         curProductSteuerpflichtigerBetragLokal = rstRP![RP_SteuerpflichtigerBetrag]
        '4030                         curProductSteuerfreierBetragLokal = rstRP![RP_SteuerfreierBetrag]
        '4040                         curProductSteuerpflichtigerBetragFremd = 0
        '4050                         curProductSteuerfreierBetragFremd = 0
        '4060                     Else
        '                             ' Fremdwährung in Lokalwährung umrechnen.
        '4070                         curProductSteuerpflichtigerBetragFremd = rstRP![RP_SteuerpflichtigerBetrag]
        '4080                         curProductSteuerfreierBetragFremd = rstRP![RP_SteuerfreierBetrag]
        '4090                         curProductSteuerpflichtigerBetragLokal = fktEuro(rstRP![RP_SteuerpflichtigerBetrag], rstRK![RK_Währungscode], LOKALWÄHRUNG)
        '4100                         curProductSteuerfreierBetragLokal = fktEuro(rstRP![RP_SteuerfreierBetrag], rstRK![RK_Währungscode], LOKALWÄHRUNG)
        '                             ' Rundungsdifferenzen bei der Währungsumrechnung in der letzten Position ausgleichen.
        '4110                         curWährungsdifferenzSteuerpflichtigerBetrag = curWährungsdifferenzSteuerpflichtigerBetrag - curProductSteuerpflichtigerBetragLokal
        '4120                         curWährungsdifferenzSteuerfreierBetrag = curWährungsdifferenzSteuerfreierBetrag - curProductSteuerfreierBetragLokal
        '4130                         lngSatzzähler = lngSatzzähler - rstRP!RP_Satzzähler
        '4140                         If lngSatzzähler = 0 Then
        '4150                             If curWährungsdifferenzSteuerpflichtigerBetrag <> 0 Then
        '4160                                 curProductSteuerpflichtigerBetragLokal = curProductSteuerpflichtigerBetragLokal + curWährungsdifferenzSteuerpflichtigerBetrag
        '4170                             End If
        '4180                             If curWährungsdifferenzSteuerfreierBetrag <> 0 Then
        '4190                                 curProductSteuerfreierBetragLokal = curProductSteuerfreierBetragLokal + curWährungsdifferenzSteuerfreierBetrag
        '4200                             End If
        '4210                         End If
        '4220                     End If

        '                         ' Sachkonto ermitteln.
        '4230                     If IsNull(rstRK![RK_RechnungsLandKz]) _
        '                         Or rstRK![RK_RechnungsLandKz] = " " _
        '                         Or rstRK![RK_RechnungsLandKz] = "A" _
        '                         Or rstRK![RK_RechnungsLandKz] = "AT" Then
        '4240                         If rstRP![RP_Steuerpflichtig] Then
        '4250                             strSachkonto = Nz(DLookup("[SachkontoInlandSteuerpflichtig]", "Leistungen", "[LeistungsNr]=" & rstRP![RP_LeistungsNr]), "")
        '4260                         Else
        '4270                             strSachkonto = Nz(DLookup("[SachkontoInlandSteuerfrei]", "Leistungen", "[LeistungsNr]=" & rstRP![RP_LeistungsNr]), "")
        '4280                         End If
        '4290                     Else
        '4300                         If DLookup(Nz("[MitgliedslandEU]", False), "[Währungstabelle]", "[LandKz]='" & rstRK![RK_RechnungsLandKz] & "'") Then
        '4310                             If rstRP![RP_Steuerpflichtig] Then
        '4320                                 strSachkonto = Nz(DLookup("[SachkontoEUSteuerpflichtig]", "Leistungen", "[LeistungsNr]=" & rstRP![RP_LeistungsNr]), "")
        '4330                             Else
        '4340                                 strSachkonto = Nz(DLookup("[SachkontoEUSteuerfrei]", "Leistungen", "[LeistungsNr]=" & rstRP![RP_LeistungsNr]), "")
        '4350                             End If
        '4360                         Else
        '4370                             strSachkonto = Nz(DLookup("[Sachkonto3Land]", "Leistungen", "[LeistungsNr]=" & rstRP![RP_LeistungsNr]), "")
        '4380                         End If
        '4390                     End If

        '                         ' Buchungspositionssatzsatz lesen.
        '4400                     Set rstProduct = SPRecordsetMitParameter("dbo.spTrdinSchreibenSelectProductPKey", AktuelleVerbindungszeichenfolge(0), _
        '                             rstRK![RK_RechnungsDatum], rstRK![RK_RechnungsNr], rstRP![RP_LeistungsNr], rstRP![RP_LeistungsBez], IIf(rstRP![RP_Steuerpflichtig], 1, 0))
        '4410                     If Not rstProduct.EOF Then
        '4420                         rstProduct.Close

        '                             ' Transaktion zurücksetzen.
        '4430                         If fInTransaktion Then
        '4440                             wrk.Rollback
        '4450                             fInTransaktion = False
        '4460                         End If

        '                             ' Nachricht
        '4470                         strPrompt = "Rechnung-Nr. " & rstRK![RK_RechnungsNr] & " vom " & rstRK![RK_RechnungsDatum] & vbCrLf & _
        '                                 "Leistungs-Nr. " & rstRP![RP_LeistungsNr] & " Leistungsbezeichnung " & rstRP![RP_LeistungsBez] & vbCrLf & _
        '                                 "Steuerpflichtig " & IIf(rstRP![RP_Steuerpflichtig], "Ja", "Nein") & vbCrLf & _
        '                                 "kann nicht verbucht werden. Es ist bereits ein Eintrag vorhanden." & vbCrLf & vbCrLf & "Möchten Sie den Buchungsvorgang abbrechen?"
        '4480                         strTitle = "Daten-Transfer.TrdinSchreiben"
        '4490                         If (MsgBox(strPrompt, vbCritical + vbYesNo + vbDefaultButton1, strTitle)) = vbYes Then
        '4500                             GoTo PROC_Exit
        '4510                         Else
        '4520                             GoTo RK_MoveNext
        '4530                         End If

        '4540                     Else
        '4550                         rstProduct.Close

        '                             ' Buchungspositionssatz erstellen.
        '4560                         Call SPAktionsabfrageOhneErgebnis("dbo.spTrdinSchreibenInsertProduct", AktuelleVerbindungszeichenfolge(0), _
        '                                 rstRK![RK_RechnungsDatum], rstRK![RK_RechnungsNr], rstRP![RP_LeistungsNr], rstRP![RP_LeistungsBez], IIf(rstRP![RP_Steuerpflichtig], 1, 0), _
        '                                 curProductSteuerpflichtigerBetragLokal, curProductSteuerfreierBetragLokal, curProductSteuerpflichtigerBetragFremd, curProductSteuerfreierBetragFremd, _
        '                                 rstRP![RP_Belegdaten], strSachkonto, rstRK![RK_Buchungstext])

        '4570                     End If

        '4580                     rstRP.MoveNext
        '4590                 Loop
        '4600                 rstRP.Close

        '                     ' Buchung im Rechnungskopfsatz eintragen.
        '4610                 Call SPAktionsabfrageOhneErgebnis("dbo.spTrdinSchreibenUpdateRK", AktuelleVerbindungszeichenfolge(0), rstRK![RK_RechnungsDatum], rstRK![RK_RechnungsNr], 1)

        '                     ' Transaktion beenden.
        '4620                 If fInTransaktion Then
        '4630                     wrk.CommitTrans
        '4640                     fInTransaktion = False
        '4650                 End If

        '4660             End If

        'RK_MoveNext:
        '4670             rstRK.MoveNext
        '4680         Loop

        '4690     End If
        '4700     rstRK.Close

        'PROC_Exit:
        '4710 On Error Resume Next
        '4720     If Not rstProduct Is Nothing Then
        '4730         rstProduct.Close
        '4740         Set rstProduct = Nothing
        '4750     End If
        '4760     If Not rstInvoice Is Nothing Then
        '4770         rstInvoice.Close
        '4780         Set rstInvoice = Nothing
        '4790     End If
        '4800     If Not rstRP Is Nothing Then
        '4810         rstRP.Close
        '4820         Set rstRP = Nothing
        '4830     End If
        '4840     If Not rstRK Is Nothing Then
        '4850         rstRK.Close
        '4860         Set rstRK = Nothing
        '4870     End If
        '4880     If Not qryRP Is Nothing Then
        '4890         qryRP.Close
        '4900         Set qryRP = Nothing
        '4910     End If
        '4920     If Not db Is Nothing Then Set db = Nothing
        '4930     If Not wrk Is Nothing Then Set wrk = Nothing
        '4940     Call SysCmd(acSysCmdRemoveMeter)
        '4950     DoCmd.Hourglass False
        '4960     Exit Sub

        'PROC_Error:
        '        ' Änderungen am Datenbestand zurücknehmen.
        '4970     If fInTransaktion Then
        '4980         wrk.Rollback
        '4990         fInTransaktion = False
        '5000     End If
        '         ' Fehlerinformation anzeigen.
        '5010     ErrNotify Err, "Form_Daten-Transfer", "TrdinSchreiben", eNormalError
        '5020     Resume PROC_Exit

    End Sub

End Class
