274 lines
17 KiB
VB.net
274 lines
17 KiB
VB.net
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
|