Files
KrzysztofandClaude Opus 5.5 2e2dc4eb8d Stan początkowy: XL-API 20251
Projekt ImportDokMag w wersji korzystającej z XL-API 20251
(cdn_api20251.net.dll), z połączeniem do bazy źródłowej przez
uwierzytelnianie Windows. Foldery .svn/ i Publikuj/ są poza repozytorium.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:12:42 +02:00

981 lines
40 KiB
VB.net
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Public Module FunkcjeXL
Public Const API_VERSION = 20251
Public Zalogowany As Boolean
Public wynikXL As Integer
Public Wersja As Integer
Dim Ilosc_Bledow As Integer
Dim Sesja As Integer
Dim IDDokumentu As Integer
Public NotaID As Integer
Dim Flagi As Integer
Dim Komunikat As String
'-------------------------------------------------------
' Funkcja XLLogin - W przypadku podania poprawnych parametrów poprzez strukturę XLLoginInfo _
' logowanie następuję automatycznie. W przeciwnym przypadku otwiera się okno _
' logowania do systemu CDN XL, w którym należy podać poprawne dane. _
' Poprzez parametr sesja zwracany jest numer przydzielonej dla programu sesji. _
' Numerem tym należy się posługiwać przy wywoływaniu następnych funkcji API.
Public Function Zaloguj(ByVal Baza As String, ByVal CDNop As String, ByVal Haslo As String, ByVal SerwerKlucza As String) As Boolean
Dim LoginInfo As New cdn_api.XLLoginInfo_20251
Dim sesja_temp As Int32
If Zalogowany And Sesja > 0 Then
wynikXL = 0
Ilosc_Bledow = 0
Zaloguj = Zalogowany
Exit Function
End If
Try
' listuj(" Logowanie do ERP XL - proszę czekać...", 1)
Zalogowany = False
Ilosc_Bledow = 0
' AttachThread()
Wersja = API_VERSION
LoginInfo.Wersja = Wersja ' numer wersji API
LoginInfo.UtworzWlasnaSesje = 0
LoginInfo.Winieta = -1
LoginInfo.TrybWsadowy = 1
LoginInfo.TrybNaprawy = 1
LoginInfo.ProgramID = "Import dok. magazynowych z Jastrzębia" ' nazwa programu korzystającego z XL-API (pojawia się na liście sesji)
LoginInfo.Baza = Baza & Chr(0) ' nazwa bazy danych do której ma nastąpić login pobierana
' z klucza HKEY_CURRENT_USER oraz HKEY_LOCAL_MACHINE (nazwa rejestracji w managerze baz an tym komputerze, nie rzeczywista nazwa bazy !!)
' LoginInfo.OpeIdent = CDNop & Chr(0) ' identyfikator CDNOpera logującego się
' LoginInfo.OpeHaslo = Haslo & Chr(0) ' hasło CDNOpera logującego się
LoginInfo.PlikLog = ""
LoginInfo.SerwerKlucza = SerwerKlucza
Sesja = 0
sesja_temp = 0
wynikXL = 0
wynikXL = cdn_api.cdn_api.XLLogin(LoginInfo, sesja_temp)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLLogin"
End Try
If wynikXL = 0 Then
Sesja = sesja_temp
Ilosc_Bledow = 0
Zalogowany = True
Else
Komunikat = "Nieokreślony błąd logowania do XL = " & CStr(wynikXL)
Select Case wynikXL
Case -9
Komunikat = "XLLogin: operator nie jest podpięty do żadnego centrum"
Case -8
Komunikat = "XLLogin: Nie podano nazwy bazy danych"
Case -7
Komunikat = "XLLogin: Baza niezarejestrowana w systemie"
Case -6
Komunikat = "XLLogin: Nie podano hasła lub brak operatora"
Case -5
Komunikat = "XLLogin: nieprawidłowe hasło"
Case -4
Komunikat = "XLLogin: konto operatora zablokowane"
Case -3
Komunikat = "XLLogin: nie podano nazwy programu (pole ProgramID)"
Case -2
Komunikat = "XLLogin: błąd otwarcia pliku tekstowego, do którego mają być zapisywane komunikaty. Nie znaleziono ścieżki lub nazwa pliku jest nieprawidłowa."
Case -1
Komunikat = "XLLogin: podano niepoprawną wersję API"
Case 1
Komunikat = "XLLogin: inicjalizacja nie powiodła się"
Case 2
Komunikat = "XLLogin: istnieje już jedna instancja programu i nastąpiło ponowne logowanie (z tego samego komputera i na tego samego operatora)"
Case 3
Komunikat = "XLLogin: istnieje już jedna instancja programu i nastąpiło ponowne logowanie z innego komputera i na tego samego operatora, ale operatora nie posiada prawa do wielokrotnego logowania"
Case 5
Komunikat = "XLLogin: występuje przy pracy terminalowej w przypadku, gdy operatora nie ma prawa do wielokrotnego logowania i na pytanie czy usunąć istniejące sesje terminalowe wybrano odpowiedź ‘Nie’"
Case 61
Komunikat = "XLLogin: błąd zakładania nowej sesji"
End Select
MainFrm.listuj(Komunikat)
Zalogowany = False
Ilosc_Bledow = Ilosc_Bledow + 1
End If
System.Threading.Thread.Sleep(200)
If Zalogowany Then MainFrm.listuj("Zalogowano")
Zaloguj = Zalogowany
End Function
'--------------------------------------------------------------------------------------------------
'Funkcja XLPolaczenie - podaje ConnectionStgring do bazy danych
' Funkcja XLPolaczenie - Funkcja umozliwia identyfikację połączenia do bazy
' zwraca nazwę serwera, bazy oraz connect string dla raportowania
'--------------------------------------------------------------------------------------------------
Public Function Polaczenie() As String
Dim PolaczenieInfo As New cdn_api.XLPolaczenieInfo_20251 With
{
.Wersja = Wersja, ' numer wersji API (20251) ustawiony w funkcji Zaloguj()
.NTMode = 0,
.Serwer = "" + Chr(0),
.Baza = "" + Chr(0),
.ConnectString = "" + Chr(0)
}
wynikXL = 0
wynikXL = cdn_api.cdn_api.XLPolaczenie(PolaczenieInfo)
If wynikXL >= 0 Then
Polaczenie = PolaczenieInfo.ConnectString
' Serwer = PolaczenieInfo.Serwer
Else
Polaczenie = ""
Komunikat = "XLPolaczenie: nieaktywna sesja API lub nieprawidłowy numer wersji"
End If
End Function
'--------------------------------------------------------------------------------------------------
' Funkcja XLLogout - Funkcja ta służy do zamykania sesji otwartej funkcją XLLogin. _
' Parametr sesja określa numer sesji, którą chcemy zamknąć _
' (numer przydzielany funkcją XLLogin).
'--------------------------------------------------------------------------------------------------
Public Sub Wyloguj()
Dim LogoutInfo As New cdn_api.XLLogoutInfo_20251
Dim wynik As Integer
If Zalogowany Or Sesja > 0 Then
LogoutInfo.Wersja = Wersja
LogoutInfo.TrybUsuwaniaDok = 0
If Sesja > 0 Then
Try
cdn_api.cdn_api.XLLogoutEx(LogoutInfo, Sesja)
Catch ex As Exception
wynik = -200
Komunikat = "Nie rozpoznany błąd API XLLogout"
End Try
End If
Zalogowany = False
Sesja = 0
End If
End Sub
'--------------------------------------------------------------------------------------------------
' Funkcja XLNowyDokument - Jest to funkcja, która zapoczątkowuje wystawianie dokumentu. _
' Nadaje ona nowy numer nagłówka, pobiera kontrahenta, _
' wypełnia rekord standardowymi ustawieniami i ustawia go w stan zajętości. _
' Wymagane jest użycie w komplecie co najmniej funkcji XLZamknijDokument _
' w celu zakończenia dokumentu i zwolnienia jego zajętości (bez wywołania _
' tej funkcji wewnętrzna kontrola XL'a spowoduje wycofanie wszelkich zapisów _
' do tego dokumentu).
'--------------------------------------------------------------------------------------------------
Public Sub UtworzNowyDok(DokNagInfo As cdn_api.XLDokumentNagInfo_20251)
Dim w, i As Integer
wynikXL = 0
For i = 1 To 200
Try
wynikXL = cdn_api.cdn_api.XLNowyDokument(Sesja, IDDokumentu, DokNagInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLNowyDokument"
Exit For
End Try
If wynikXL <> 106 Then Exit For
System.Threading.Thread.Sleep(40)
Next
Flagi = DokNagInfo.Flagi
w = OpisBledu(1, wynikXL, Flagi)
End Sub
'--------------------------------------------------------------------------------------------------
' Funkcja XLDodajPozycje - Funkcja ta jest odpowiedzialna za dodawanie do dokumentu elementów _
' oraz związanych z nim subelementów.
'--------------------------------------------------------------------------------------------------
Public Sub DodajPozycjeDok(DokEleInfo As cdn_api.XLDokumentElemInfo_20251)
Dim w, i As Integer
wynikXL = 0
If IDDokumentu > 0 Then
For i = 1 To 200
Try
wynikXL = cdn_api.cdn_api.XLDodajPozycje(IDDokumentu, DokEleInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLDodajPozycje"
Exit For
End Try
If wynikXL <> 106 Then Exit For
System.Threading.Thread.Sleep(40)
Next
End If
Flagi = DokEleInfo.Flagi
If wynikXL <> 17 Then w = OpisBledu(2, wynikXL, Flagi) 'bez drukowania kmunikatu, że zabrakło towaru
End Sub
'--------------------------------------------------------------------------------------------------
' Funkcja XLZamknijDokument - Funkcja odpowiada za zakończenie pracy z dokumentem.
'--------------------------------------------------------------------------------------------------
Public Sub ZamknijDokument(ByVal Tryb As Integer, Magazynowe As Integer)
Dim ZamkniecieDokumentuInfo As New cdn_api.XLZamkniecieDokumentuInfo_20251
Dim w, i As Integer
Try
With ZamkniecieDokumentuInfo
.Wersja = Wersja
.Tryb = Tryb '-10, 0 - zatwierdz dokument, 1 - do bufora, -3 - zamknięcie otwartego dok., -1 - skasowanie dokumentu, -2 - anulowanie
.Magazynowe = Magazynowe 'generowanie dokumentów WM i MMP: 0-wg. konfig., 1-nie generuj, 2-gen. do bufora, 3-gen. zatwierdzone
'dla MMW: 0x,1x,2x - WM (bez, bufor, zatw.); x1,x2,x3 - MMP (bez, bufor, zatw.)
End With
wynikXL = 0
If IDDokumentu > 0 Then
For i = 1 To 200
Try
wynikXL = cdn_api.cdn_api.XLZamknijDokument(IDDokumentu, ZamkniecieDokumentuInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLZamknijDokument"
Exit For
End Try
If wynikXL <> 106 Then Exit For
System.Threading.Thread.Sleep(40)
Next
End If
w = OpisBledu(7, wynikXL, 0)
Catch ex As Exception
wynikXL = -201
Komunikat = "Błąd w dostępie do danych w API XLZamknijDokument"
End Try
End Sub
'--------------------------------------------------------------------------------------------------
' Funkcja XLPodajKomunikat - Funkcja rozwiązuje podane numery bledów i ostrzeżeń na stringowy
' komunikat, rodzaje trybów: 0-tryb cichy, 1-tylko bledy, 2-bledy i ostrzeżenia
'--------------------------------------------------------------------------------------------------
Public Function OpisBledu(ByVal Funkcja As Integer, ByVal wynik_lokalny As Integer, ByVal Flagi As Integer) As Integer
Dim KomunikatInfo As New cdn_api.XLKomunikatInfo_20251
Dim Komunikat As String
OpisBledu = 0
If wynik_lokalny < -199 Then
MainFrm.listuj("Nie rozpoznany błąd API w funkcji " + CStr(Funkcja))
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja < 900 Then
KomunikatInfo.Wersja = Wersja
KomunikatInfo.Funkcja = Funkcja
KomunikatInfo.Blad = wynik_lokalny
KomunikatInfo.Ostrzezenie = Flagi
KomunikatInfo.Tryb = 0
Try
cdn_api.cdn_api.XLOpisBledu(KomunikatInfo)
Catch ex As Exception
wynik_lokalny = -200
Komunikat = "Nie rozpoznany błąd API XLOpisBledu"
End Try
Komunikat = "!------! UWAGA: " + KomunikatInfo.OpisBledu
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 999 Then
Komunikat = "XLOpisBledu: Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case 2
Komunikat = "XLOpisBledu: UWAGA: ustalono wybór z listy, a brak ustawienia trybu selekcji"
Case 3
Komunikat = "XLOpisBledu: UWAGA: błąd otwarcia tabeli"
Case 4
Komunikat = "XLOpisBledu: UWAGA: nie znaleziono rekordu o podanym GIDzie"
Case 5
Komunikat = "XLOpisBledu: UWAGA: ustalono wybór elementu z listy a brak procedury listy dla takiego typu dokumentu"
Case 6
Komunikat = "XLOpisBledu: UWAGA: ustalono wybór grupy z listy, a brak procedury listy dla takiego typu dokumentu"
Case 7
Komunikat = "XLOpisBledu: UWAGA: ustalono podgląd elementów listy, a brak procedury listy dla takiego typu dokumentu"
Case 8
Komunikat = "XLOpisBledu: UWAGA: nieobsługiwany GIDTyp"
Case Else
Komunikat = "XLOpisBledu: UWAGA: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 998 Then 'Generuj EAN
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -1
Komunikat = "UWAGA: API nie zostało aktywowane bądź błąd wersji"
Case 1
Komunikat = "UWAGA: Niepoprawny zakres"
Case 2
Komunikat = "UWAGA: Wystąpił niezidentyfikowany błąd, kod EAN nie został wygenerowany"
Case Else
Komunikat = "UWAGA: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 997 Then 'DodajAtrybut do obiektu
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -1
Komunikat = "UWAGA: brak sesji"
Case 2
Komunikat = "UWAGA: błąd przy zakładaniu logout"
Case 3
Komunikat = "UWAGA: nie znaleziono obiektu"
Case 4
Komunikat = "UWAGA: nie znalezniono klasy atrybutu"
Case 5
Komunikat = "UWAGA: klasa nieprzypisana do definicji obiektu"
Case 6
Komunikat = "UWAGA: atrybut juz istnieje w kolejce"
Case 7
Komunikat = "UWAGA: błąd ADO Connection"
Case 8
Komunikat = "UWAGA: błąd ADO"
Case 9
Komunikat = "UWAGA: brak zdefiniowanego obiektu"
Case Else
Komunikat = "UWAGA: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 996 Then 'Dodaj Partię
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -1
Komunikat = "UWAGA: API nie zostało aktywowane bądź błąd wersji"
Case 2
Komunikat = "UWAGA: Wystąpił błąd przy próbie zablokowania tabel dla wykonania transakcji"
Case 11
Komunikat = "UWAGA: nie znaleziono towaru"
Case 12
Komunikat = "UWAGA: Nie podano towaru"
Case 106
Komunikat = "UWAGA: Wystąpił błąd DeadLock"
Case 160
Komunikat = "UWAGA: Nie znaleziono podanej dostawy"
Case 178
Komunikat = "UWAGA: Partia o takich parametrach nie istnieje"
Case 210
Komunikat = "UWAGA: Nie znaleziono podanego identyfikatora partii"
Case Else
Komunikat = "UWAGA: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 995 Then 'Dokumenty związane
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -1
Komunikat = "UWAGA: API nie zostało aktywowane bądź błąd wersji"
Case 1
Komunikat = "UWAGA: taki dokument jest już na liście (błąd zwracany przy akcji dodawania)"
Case 30
Komunikat = "UWAGA: nie znaleziono dokumentu na liście"
Case Else
Komunikat = "UWAGA: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 994 Then 'Dodaj Dekret zbiorczy
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -1
Komunikat = "BŁĄD: API nie zostało aktywowane bądź błąd wersji"
Case 101
Komunikat = "BŁĄD: Niepoprawny dziennik księgowań"
Case 102
Komunikat = "BŁĄD: Niepoprawny bufor księgowań"
Case 103
Komunikat = "BŁĄD: Kwota = 0"
Case 104
Komunikat = "BŁĄD: Brak opisu"
Case 105
Komunikat = "BŁĄD: Dodawanie dekretu składowego bez otwarcia dekretu zbiorczego"
Case 1002
Komunikat = "BŁĄD: Otwarty poprzedni dekret lub zamknięty modyfikowany dekret"
Case 1031
Komunikat = "BŁĄD: Uruchomienie tej operacji nie jest możliwe ze względu na brak dostępu do modułu, problem z połączeniem lub niezgodność danych w kluczu ze stanem faktycznym."
Case 8001
Komunikat = "BŁĄD: Niepoprawne konto księgowań"
Case 8005
Komunikat = "BŁĄD: Bieżący okres obrachunkowy jest zamknięty do x.
Próbujesz księgować lub kasować księgowanie z datą y."
Case 8006
Komunikat = "BŁĄD: Data nie mieści się w żadnym z zadeklarowanych okresów obrachunkowych. Załóż okres i powtórz operację"
Case 8008
Komunikat = "BŁĄD: Zła data . Załóż nowy dekret księgowy. Błąd ten wyświetla się zawsze kiedy data nie mieści się w okresie obrachunkowym"
Case 8046
Komunikat = "BŁĄD: Nie można księgować na to samo konto"
Case 8190
Komunikat = "BŁĄD: Dokonywanie zapisu księgowego bez podania żadnego z kont"
Case Else
Komunikat = "UWAGA: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 993 Then 'Dodaj dekret składowy
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -1
Komunikat = "BŁĄD: API nie zostało aktywowane bądź błąd wersji"
Case 101
Komunikat = "BŁĄD: Niepoprawny dziennik księgowań"
Case 102
Komunikat = "BŁĄD: Niepoprawny bufor księgowań"
Case 103
Komunikat = "BŁĄD: Kwota = 0"
Case 104
Komunikat = "BŁĄD: Brak opisu"
Case 105
Komunikat = "BŁĄD: Dodawanie dekretu składowego bez otwarcia dekretu zbiorczego"
Case 1002
Komunikat = "BŁĄD: Otwarty poprzedni dekret lub zamknięty modyfikowany dekret"
Case 8001
Komunikat = "BŁĄD: Niepoprawne konto księgowań"
Case 8003
Komunikat = "BŁĄD: Konto posiada analitykę"
Case 8006
Komunikat = "BŁĄD: Data nie mieści się w żadnym z zadeklarowanych okresów obrachunkowych. Załóż okres i powtórz operację"
Case 8008
Komunikat = "BŁĄD: Zła data . Załóż nowy dekret księgowy. Błąd ten wyświetla się zawsze kiedy data nie mieści się w okresie obrachunkowym"
Case 8046
Komunikat = "BŁĄD: Nie można księgować na to samo konto"
Case 8190
Komunikat = "BŁĄD: Dokonywanie zapisu księgowego bez podania żadnego z kont"
Case Else
Komunikat = "UWAGA: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 992 Then 'Zamknij dekret zbiorczy, sumuj dekret zbiorczy
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -1
Komunikat = "BŁĄD: API nie zostało aktywowane bądź błąd wersji"
Case 101
Komunikat = "BŁĄD: Niepoprawny dziennik księgowań"
Case 102
Komunikat = "BŁĄD: Niepoprawny bufor księgowań"
Case 103
Komunikat = "BŁĄD: Kwota = 0"
Case 104
Komunikat = "BŁĄD: Brak opisu"
Case 105
Komunikat = "BŁĄD: Dodawanie dekretu składowego bez otwarcia dekretu zbiorczego"
Case 8001
Komunikat = "BŁĄD: Niepoprawne konto księgowań"
Case 8006
Komunikat = "BŁĄD: Data nie mieści się w żadnym z zadeklarowanych okresów obrachunkowych. Załóż okres i powtórz operację"
Case 8008
Komunikat = "BŁĄD: Zła data . Załóż nowy dekret księgowy. Błąd ten wyświetla się zawsze kiedy data nie mieści się w okresie obrachunkowym"
Case 8046
Komunikat = "BŁĄD: Nie można księgować na to samo konto"
Case 8190
Komunikat = "BŁĄD: Dokonywanie zapisu księgowego bez podania żadnego z kont"
Case Else
Komunikat = "UWAGA: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 990 Then 'Dodaj dekret pojedynczy
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -1
Komunikat = "BŁĄD: API nie zostało aktywowane bądź błąd wersji"
Case 101
Komunikat = "BŁĄD: Niepoprawny dziennik księgowań"
Case 102
Komunikat = "BŁĄD: Niepoprawny bufor księgowań"
Case 103
Komunikat = "BŁĄD: Kwota = 0"
Case 104
Komunikat = "BŁĄD: Brak opisu"
Case 105
Komunikat = "BŁĄD: Dodawanie dekretu składowego bez otwarcia dekretu zbiorczego"
Case 1002
Komunikat = "BŁĄD: Otwarty poprzedni dekret lub zamknięty modyfikowany dekret"
Case 8001
Komunikat = "BŁĄD: Niepoprawne konto księgowań"
Case 8003
Komunikat = "BŁĄD: Konto posiada analitykę"
Case 8006
Komunikat = "BŁĄD: Data nie mieści się w żadnym z zadeklarowanych okresów obrachunkowych. Załóż okres i powtórz operację"
Case 8008
Komunikat = "BŁĄD: Zła data . Załóż nowy dekret księgowy. Błąd ten wyświetla się zawsze kiedy data nie mieści się w okresie obrachunkowym"
Case 8046
Komunikat = "BŁĄD: Nie można księgować na to samo konto"
Case 8190
Komunikat = "BŁĄD: Dokonywanie zapisu księgowego bez podania żadnego z kont"
Case Else
Komunikat = "BŁĄD: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 989 Then 'Dodaj uproszczoną notę memoriałową
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -3
Komunikat = "BŁĄD: brak GIDTypu noty"
Case -2
Komunikat = "BŁĄD: błąd zakładania transakcji"
Case -1
Komunikat = "BŁĄD: niewłaściwy parametr SesjaID"
Case 1
Komunikat = "BŁĄD: błąd dodawania/aktualizacji/kasowania nagłówka;"
Case 2
Komunikat = "BŁĄD: błędny numer noty (XLNotaInfo.Numer już istnieje w ramach serii/miesiąca);"
Case 3
Komunikat = "BŁĄD: brak definicji noty"
Case 4
Komunikat = "BŁĄD: brak podmiotu (kontrahenta lub pracownika);"
Case 5
Komunikat = "BŁĄD: Nie znaleziono podanej waluty"
Case 6
Komunikat = "BŁĄD: brak płatnika"
Case 7
Komunikat = "BŁĄD: nota nie posiada treści"
Case 8
Komunikat = "BŁĄD: brak praw do używania tego modułu"
Case 9
Komunikat = "BŁĄD: seria nie istnieje w systemie"
Case 8001
Komunikat = "BŁĄD: Niepoprawne konto księgowań lub konto nie znajduje się w bieżącym okresie"
Case 8046
Komunikat = "BŁĄD: Nie można księgować na to samo konto lub oba konta puste"
Case 8047
Komunikat = "BŁĄD: po obu stronach pozycji noty konta rozrachunkowe"
Case Else
Komunikat = "BŁĄD: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 988 Then 'Dodaj pozycję noty
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -2
Komunikat = "BŁĄD: błąd zakładania transakcji"
Case -1
Komunikat = "BŁĄD: niewłaściwy parametr SesjaID"
Case 3
Komunikat = "BŁĄD: brak definicji noty"
Case 5
Komunikat = "BŁĄD: brak noty o podanym ID"
Case 7
Komunikat = "BŁĄD: pozycja noty nie posiada opisu"
Case 8
Komunikat = "BŁĄD: brak symbolu kwoty"
Case 9
Komunikat = "BŁĄD: błąd dodawania pozycji noty"
Case 10
Komunikat = "BŁĄD: błąd synchronizacji konta walutowego"
Case 8001
Komunikat = "BŁĄD: Niepoprawne konto księgowań lub konto nie znajduje się w bieżącym okresie"
Case 8046
Komunikat = "BŁĄD: Nie można księgować na to samo konto lub oba konta puste"
Case 8047
Komunikat = "BŁĄD: z uwagi na płatności, wygenerowanie noty nie jest możliwe. W ramach zapisu wprowadzono dekrety dwustronne, zawierające po obydwu stronach konta rozrachunkowe"
Case Else
Komunikat = "BŁĄD: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 987 Then 'Zamknij notę
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -2
Komunikat = "BŁĄD: błąd zakładania transakcji"
Case -1
Komunikat = "BŁĄD: niewłaściwy parametr SesjaID"
Case 1
Komunikat = "BŁĄD: błąd dodawania/aktualizacji/kasowania nagłówka"
Case 2
Komunikat = "BŁĄD: błędny numer noty (XLNotaInfo.Numer już istnieje w ramach serii/miesiąca);"
Case 3
Komunikat = "BŁĄD: brak definicji noty"
Case 5
Komunikat = "BŁĄD: brak noty o podanym ID"
Case 6
Komunikat = "BŁĄD: nota niezgodna z definicją (przychodowa/rozchodowa, podmiot);"
Case 7
Komunikat = "BŁĄD: nie udało się wygenerowanie płatności;"
Case Else
Komunikat = "BŁĄD: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
ElseIf wynik_lokalny <> 0 And Funkcja = 986 Then 'kasuj notę
Komunikat = "Nieokreślony błąd API XL"
Select Case wynik_lokalny
Case -2
Komunikat = "BŁĄD: błąd zakładania transakcji"
Case -1
Komunikat = "BŁĄD: niewłaściwy parametr SesjaID"
Case 1
Komunikat = "BŁĄD: błąd dodawania/aktualizacji/kasowania nagłówka"
Case 5
Komunikat = "BŁĄD: brak noty o podanym ID"
Case Else
Komunikat = "BŁĄD: Nieznany błąd"
End Select
MainFrm.listuj(Komunikat)
Ilosc_Bledow = Ilosc_Bledow + 1
OpisBledu = Ilosc_Bledow
End If
End Function
'--------------------------------------------------------------------------------------------------
' Funkcja XLPobierzNumerDokumentu rozwiązuje GID na sformatowany numer dokumentu
'--------------------------------------------------------------------------------------------------
Public Function NumerDokumentu(ByVal GIDTyp As Integer, ByVal GIDFirma As Integer, ByVal GIDNumer As Integer, ByVal GIDLp As Integer) As String
Dim NumerDokumentuInfo As New cdn_api.XLNumerDokumentuInfo_20251
Dim nrd As String
NumerDokumentuInfo.Wersja = Wersja
NumerDokumentuInfo.GIDTyp = GIDTyp
NumerDokumentuInfo.GIDFirma = GIDFirma
NumerDokumentuInfo.GIDNumer = GIDNumer
NumerDokumentuInfo.GIDLp = GIDLp
Try
wynikXL = cdn_api.cdn_api.XLPobierzNumerDokumentu(NumerDokumentuInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLPobierzNumerDokumentu"
End Try
NumerDokumentu = ""
nrd = ""
If wynikXL = 0 Then
nrd = NumerDokumentuInfo.NumerDokumentu
Else
If wynikXL = -1 Then
Komunikat = "XLPobierzNumerDokumentu: nieaktywna sesja API lub nieprawidłowy numer wersji"
ElseIf wynikXL = 1 Then
Komunikat = "XLPobierzNumerDokumentu: nie znaleziono dokumentu"
ElseIf wynikXL = 2 Then
Komunikat = "XLPobierzNumerDokumentu: podano nieobsługiwany GIDTyp"
End If
MainFrm.listuj(Komunikat)
End If
NumerDokumentu = RTrim(nrd)
End Function
'--------------------------------------------------------------------------------------------------
Public Function XLSprawdzLicencje() As Boolean
Dim LicencjaInfo As New cdn_api.XLLicencjaInfo_20251 With
{
.Wersja = Wersja,
.Licencja = 1,
.Odswiez = 1,
.Stan = 0
}
wynikXL = 0
XLSprawdzLicencje = False
Try
wynikXL = cdn_api.cdn_api.XLSprawdzLicencje(LicencjaInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLSprawdzLicencje"
End Try
If LicencjaInfo.Stan = 1 Then
XLSprawdzLicencje = True
Else
Komunikat = "Błąd API XLSprawdzLicencje = " & CStr(wynikXL)
If wynikXL = 0 Then
Select Case LicencjaInfo.Stan
Case 0
Komunikat = "XLSprawdzLicencje: nie pobrano licencji"
Case 2
Komunikat = "XLSprawdzLicencje: nie pobrano licencji - błąd pobrania licencji bądź ilość licencji wyczerpana"
Case 3
Komunikat = "XLSprawdzLicencje: licencja przeterminowana"
Case 4
Komunikat = "XLSprawdzLicencje: licencja promocyjna"
End Select
ElseIf wynikXL = -1 Then
Komunikat = "XLSprawdzLicencje: Sesja API nieaktywna lub nieprawidłowy numer"
ElseIf wynikXL = 1 Then
Komunikat = "XLSprawdzLicencje: błąd klucza sprzętowego"
End If
MainFrm.listuj(Komunikat)
End If
End Function
'-------------------------------------------------------------------------------------
' Funkcja XLDodajDekretPojedynczy - Funkcja dodaje jeden dekret pojedynczy - bez nagłówka
Sub XLDodajDekretPoj()
Dim DekretInfo As New cdn_api.XLDekretInfo_20251
Dim w As Integer
With DekretInfo
.Wersja = Wersja
'.Tryb = Range("b6").Value 'Tryb wystawienia (interakcyjny/wsadowy)
'.GIDTyp = Range("b7").Value 'GID dekretu (zwracanego po dodaniu)
'.GIDFirma = Range("b8").Value '
'.GIDNumer = Range("b9").Value '
'.GIDLp = Range("b10").Value '
'.Data = Range("b11").Value 'Data dekretu
'.DataDokumentu = Range("b12").Value 'Data dokumentu
'.Kwota = Str(Range("b13").Value) 'Kwota pomnożona przez 100
'.KwotaWalDT = Str(Range("b14").Value) 'Kwota winien w walucie pomnożona przez 100
'.KwotaWalCT = Str(Range("b15").Value) 'Kwota ma w walucie pomnożona przez 100
'.NumerDokumentu = Range("b16").Value + Chr(0) 'Numer dokumentu
'.Dziennik = Range("b17").Value + Chr(0) 'Dziennik księgowań
'.Bufor = Range("b18").Value + Chr(0) 'Bufor księgowań (pusty = KG)
'.KontoDebet = Range("b19").Value + Chr(0) 'Numer konta winien (WN)
'.KontoCredit = Range("b20").Value + Chr(0) 'Numer konta ma (MA)
'.KontoWalDT = Range("b21").Value + Chr(0)
'.KontoWalCT = Range("b22").Value + Chr(0)
'.Identyfikator = Range("b23").Value
'.Opis = Range("b24").Value + Chr(0) 'Opis dekretu
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLDodajDekretPojedynczy(Sesja, DekretInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLDodajDekretPojedynczy"
End Try
w = OpisBledu(990, wynikXL, 0)
End Sub
'-------------------------------------------------------------------------------------
' Funkcja XLDodajDekretZbiorczy - Funkcja dodaje nagłówek dekretu zbiorczego
Sub XLDodajDekretZb(DekretZbiorczyInfo As cdn_api.XLDekretZbiorczyInfo_20251)
Dim w As Integer
With DekretZbiorczyInfo
.Wersja = Wersja
.Tryb = 2 'Tryb wystawienia wsadowy
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLDodajDekretZbiorczy(Sesja, DekretZbiorczyInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLDodajDekretZbiorczy"
End Try
w = OpisBledu(994, wynikXL, 0)
End Sub
'-------------------------------------------------------------------------------------
' Funkcja XLDodajDekretSkladowy - Funkcja dodaje jeden dekret składowy w otwartym dekrecie zbiorczym
Sub XLDodajDekretSkl(DekretSkladowyInfo As cdn_api.XLDekretInfo_20251)
Dim w As Integer
With DekretSkladowyInfo
.Wersja = Wersja
.Tryb = 2 'Tryb wystawienia wsadowy
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLDodajDekretSkladowy(Sesja, DekretSkladowyInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLDodajDekretSkładowy"
End Try
w = OpisBledu(993, wynikXL, 0)
End Sub
'-------------------------------------------------------------------------------------
' Funkcja XLZamknijDekretZbiorczy - Funkcja zamyka dekret zbiorczy
Sub XLZamknijDekretZb(ZamknijDekretZbiorczyInfo As cdn_api.XLDekretZbiorczyInfo_20251)
Dim w As Integer
With ZamknijDekretZbiorczyInfo
.Wersja = Wersja
.Tryb = 2 'Tryb wystawienia wsadowy
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLZamknijDekretZbiorczy(Sesja, ZamknijDekretZbiorczyInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLZamknijDekretZbiorczy"
End Try
w = OpisBledu(992, wynikXL, 0)
End Sub
'-------------------------------------------------------------------------------------
' Funkcja XLSumujDekret - Funkcja podaje sumę dekretu zbiorczego
Sub XLSumujDekretZb(SumujDekretZbiorczyInfo As cdn_api.XLDekretZbiorczyInfo_20251)
Dim w As Integer
With SumujDekretZbiorczyInfo
.Wersja = Wersja
.Tryb = 2 'Tryb wystawienia (interakcyjny/wsadowy)
'.GIDTyp = Range("n7").Value 'GID dekretu (zwracanego po dodaniu)
'.GIDFirma = Range("n8").Value '
'.GIDNumer = Range("n9").Value '
'.GIDLp = Range("n10").Value '
'.Data = Range("n11").Value 'Data dekretu
'.DataDokumentu = Range("n12").Value 'Data dokumentu
'.KwotaDebet = Str(Range("n13").Value) + Chr(0) 'Kwota sumaryczna winien pomnożona przez 100
'.KwotaCredit = Str(Range("n14").Value) + Chr(0) 'Kwota sumaryczna ma pomnożona przez 100
'.NumerDokumentu = Range("n15").Value + Chr(0) 'Numer dokumentu
'.Dziennik = Range("n16").Value + Chr(0) 'Dziennik księgowań
'.Bufor = Range("n17").Value + Chr(0) 'Bufor księgowań (pusty = KG)
'.Identyfikator = Range("n18").Value
'.Opis = Range("n19").Value + Chr(0) 'Opis dekretu
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLSumujDekretZbiorczy(Sesja, SumujDekretZbiorczyInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLSumujDekretZbiorczy"
End Try
w = OpisBledu(992, wynikXL, 0)
End Sub
'-------------------------------------------------------------------------------------
' Funkcja XLKasujDekret - Funkcja kasuje dekret
Sub XLKasujDekretzb(KasujDekretInfo As cdn_api.XLDekretInfo_20251)
Dim w As Integer
With KasujDekretInfo
.Wersja = Wersja
.Tryb = 2 'Tryb wystawienia (interakcyjny/wsadowy)
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLKasujDekret(Sesja, KasujDekretInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLKasujDekret"
End Try
w = OpisBledu(992, wynikXL, 0)
End Sub
'--------------------------------------------------------------------------------------------------
' Funkcja XLDodajNote
Sub XLDodajNoteMem(NotaInfo As cdn_api.XLNotaInfo_20251)
Dim w, IDNoty As Integer
NotaID = 0
With NotaInfo
.Wersja = Wersja
.Tryb = 2
.GIDTyp = 4145 'nota uproszczona
'.DataWprow = Range("b24").Value
'.DataDok = Range("b25").Value
'.DataOper = Range("b26").Value
'.Seria = Range("b32").Value + Chr(0)
'.NumerDokumentu = Range("b33").Value + Chr(0)
'.Tresc = Range("b34").Value + Chr(0)
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLDodajNote(Sesja, IDNoty, NotaInfo)
NotaID = IDNoty
Catch ex As Exception
wynikXL = -200
NotaID = 0
Komunikat = "Nie rozpoznany błąd API XLDodajNote"
End Try
w = OpisBledu(989, wynikXL, 0)
End Sub
'--------------------------------------------------------------------------------------------------
' Funkcja XLDodajPozycjeNoty - Funkcja ta dodaje element do otwartej wcześniej noty
Sub XLDodajPozycjeNotyMem(PozycjaNotyInfo As cdn_api.XLPozycjaNotyInfo_20251)
Dim w As Integer
With PozycjaNotyInfo
.Wersja = Wersja
.Tryb = 2
'.KKSNumerDT = Range("e15").Value
'.KKSNumerCT = Range("e16").Value
'.DataDok = Range("e21").Value
'.DataOper = Range("e22").Value
'.Kwota = Str(Range("e23").Value) + Chr(0)
'.Opis = Range("e24").Value + Chr(0)
'.NumerDokumentu = Range("e29").Value
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLDodajPozycjeNoty(Sesja, NotaID, PozycjaNotyInfo)
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLDodajPozycjeNoty"
End Try
w = OpisBledu(988, wynikXL, 0)
End Sub
'--------------------------------------------------------------------------------------------------
' Funkcja XLZamknijNote - Funkcja ta zamyka otwartą notę memoriałową
Sub XLZamknijNoteMem(NotaInfo As cdn_api.XLNotaInfo_20251)
Dim w As Integer
With NotaInfo
.Wersja = Wersja
.Tryb = 2
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLZamknijNote(Sesja, NotaID, NotaInfo)
NotaID = 0
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLZamknijNote"
End Try
w = OpisBledu(987, wynikXL, 0)
End Sub
'--------------------------------------------------------------------------------------------------
' Funkcja XLKasujNote - Funkcja ta kasuje notę memoriałową
Sub XLKasujNoteMem(NotaInfo As cdn_api.XLNotaInfo_20251)
Dim w As Integer
With NotaInfo
.Wersja = Wersja
.Tryb = 2
'.GIDTyp = Range("k7").Value
'.GIDFirma = Range("k8").Value
'.GIDNumer = Range("k9").Value
'.GIDLp = Range("k10").Value
End With
wynikXL = 0
Try
wynikXL = cdn_api.cdn_api.XLKasujNote(Sesja, NotaID, NotaInfo)
NotaID = 0
Catch ex As Exception
wynikXL = -200
Komunikat = "Nie rozpoznany błąd API XLKasujNote"
End Try
w = OpisBledu(986, wynikXL, 0)
End Sub
End Module