R2API - Użytkownik nie zgadza się na warunki licencji
R2API - Użytkownik nie zgadza się na warunki licencji
Chciałbym wykorzystać w swoim programie R2API. Dodałem do swojego projektu klasy R2Api.cs, Utils.cs i wszystkie wymagane elementy, na podstawie tego co jest napisane w przykładowym wykorzystaniu w projekcie Demo (C:\RESET2\Firma.10xx\DEMOS\C#). Niestety w momencie uruchomienia programu i próby logowania przez R2API, wyskakuje mi błąd: "Błąd uruchomienia programu: Użytkownik nie zgadza się na warunki licencji". Sama przykładowa aplikacja DEMO działa i tam logowanie odbywa się poprawnie, również sam program R2FirmaPro uruchamia się poprawnie i w nim licencja jest widoczna jako ważna. W projekcie demo jest następująca informacja:
//Uwagi ogólne:
//1.R2firmaApiDemo.exe generuje się w folderze BIN. Tam muszą znajdować się
// wszystkie aplikacje korzystające z Api, gdyż tam znajduje się R2firmaApi.dll
// oraz R2firma.ini zawierający parametry logowania do bazy danych.
W swoim programie tego nie zrobiłem, aplikacja jest zainstalowana w innym folderze, ponieważ w przypadku zainstalowania jej w folderze C:\RESET2\Fk.10xx\BIN, niektóre pliki z obu aplikacji mogłyby się powtarzać i powodowałoby to błędy, więc odwołanie do R2API zrobiłem ścieżką bezwzględną: "fApi = new R2Api("C:\\RESET2\\Fk.10xx\\BIN\\R2firmaApi.dll");".
Czy muszę mimo wszystko swój program instalować w folderze BIN, żeby działało to poprawnie? Czy błąd, który wyskakuje jest spowodowany czymś innym? Czy ktoś spotkał się z tym błędem i byłby w stanie mi pomóc, żeby R2API poprawnie się zalogowało?
//Uwagi ogólne:
//1.R2firmaApiDemo.exe generuje się w folderze BIN. Tam muszą znajdować się
// wszystkie aplikacje korzystające z Api, gdyż tam znajduje się R2firmaApi.dll
// oraz R2firma.ini zawierający parametry logowania do bazy danych.
W swoim programie tego nie zrobiłem, aplikacja jest zainstalowana w innym folderze, ponieważ w przypadku zainstalowania jej w folderze C:\RESET2\Fk.10xx\BIN, niektóre pliki z obu aplikacji mogłyby się powtarzać i powodowałoby to błędy, więc odwołanie do R2API zrobiłem ścieżką bezwzględną: "fApi = new R2Api("C:\\RESET2\\Fk.10xx\\BIN\\R2firmaApi.dll");".
Czy muszę mimo wszystko swój program instalować w folderze BIN, żeby działało to poprawnie? Czy błąd, który wyskakuje jest spowodowany czymś innym? Czy ktoś spotkał się z tym błędem i byłby w stanie mi pomóc, żeby R2API poprawnie się zalogowało?
Re: R2API - Użytkownik nie zgadza się na warunki licencji
Zgadza się, wszystkie pliki związane z API (np.: .exe czy .dll) muszą się znajdować w katalogu BIN programu R2.
Re: R2API - Użytkownik nie zgadza się na warunki licencji
A w jaki sposób mógłbym zdiagnozować, dlaczego R2API nie działa?
Po przeniesieniu instalacji programu do folderu BIN logowanie odbywa się pomyślnie, R2API nie zwraca żadnych błędów, ale faktury nie pojawiają się w R2FirmaPRO. Te same faktury, wygenerowane w formie .XML, dodane w R2FirmaPRO w menu Zbiory > Import danych > Import faktur poprawnie pojawiają się w programie. Dodawanie ich przez R2API jednak nie działa, ale nie wyskakują żadne błędy.
Po przeniesieniu instalacji programu do folderu BIN logowanie odbywa się pomyślnie, R2API nie zwraca żadnych błędów, ale faktury nie pojawiają się w R2FirmaPRO. Te same faktury, wygenerowane w formie .XML, dodane w R2FirmaPRO w menu Zbiory > Import danych > Import faktur poprawnie pojawiają się w programie. Dodawanie ich przez R2API jednak nie działa, ale nie wyskakują żadne błędy.
Re: R2API - Użytkownik nie zgadza się na warunki licencji
W pliku DEMOS\C#\R2firmaApiDemo\ImportFakturXLS.cs znajduje się przykład dopisania nowej faktury (na przykładzie importu). Proszę tam sprawdzić, czy podaje Pan wszystkie niezbędne dane.
Re: R2API - Użytkownik nie zgadza się na warunki licencji
Chcę dodawać faktury z plików XML, nie XLS, więc przygotowałem kod na podstawie tego co jest w pliku DEMOS\C#\R2firmaApiDemo\ImportFakturXML.cs, w pliku ImportFakturXLS.cs nie widzę niczego, co mógłbym wykorzystać w mojej sytuacji. Poniżej załączam kod, który wykorzystuję do wgrania faktur przez R2API, ale niestety faktury się nie pojawiają w programie R2FirmaPRO. Zarówno fApi.LoginUser jak i fApi.ImportFakturFromXML zwracają wyniki poprawne, czyli 0. Czy w tym kodzie czegoś brakuje?
Kod: Zaznacz cały
private const int WM_ADDONMSG3 = WM_Messages.WM_USER + 1;
nazwaFirmy = "NAZWA TWOJEJ FIRMY";
ModuleItem aModuleItem = (new ModuleItem("Faktury", 3));
if (fApi == null)
{
fApi = new R2Api("C:\\RESET2\\Fk.10xx\\BIN\\R2firmaApi.dll");
fApi.ApiSetCallbackMsg(this.Handle, WM_Messages.WM_USER);
aModule = aModuleItem.Module;
aFirma = nazwaFirmy;
aUserName = "username";
aPassword = "password";
int aUserID = fApi.LoginUser(aModule, aFirma, aUserName, aPassword);
if (aUserID <= 0)
{
string aErrorStr = fApi.LastError;
fApi.Dispose();
fApi = null;
MessageBox.Show(aErrorStr, "błąd");
}
else
{
success = true;
MessageBox.Show("Logowanie pomyślne", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("użytkownik już zalogowany - błąd");
}
Dok2Dok item = new Dok2Dok
{
ParametryTransmisji = new Dok2DokParametryTransmisji
{
Data = DateTime.Now.Date,
Czas = Convert.ToDateTime(DateTime.Now.ToString("hh:mm:ss")),
Firma = "NAZWA TWOJEJ FIRMY",
Osoba = LoggedUser.Login,
AsortymentyIdentyfikacja = "Skrot",
KontrahenciIdentyfikacja = "NIP",
RodzajDok = "Automatycznie",
},
Dokument = new Dok2DokDokument[]
{
new Dok2DokDokument
{
Waluta = typWaluta.PLN,
RodzajDokumentu = "Faktura",
Numer = 1,
DataWystawienia = data,
DataSprzedazy = dataspr,
SposobKsiegowania = Dok2DokDokumentSposobKsiegowania.SSprzedażkrajowa,
TerminPlatnosci = termin,
Wystawil = string.Empty,
Miejscowosc = "Wrocław",
X_Nr = "1",
Kontrahent = new Dok2DokDokumentKontrahent
{
Skrot = customerAkronim,
Waluta = typWaluta.PLN,
NIP = invoiceData.NIP,
NazwaIAdres = "",
Nazwa = customerAkronim,
Ulica = "",
Miejscowosc = "" ,
Nr_domu = "",
Nr_lokalu = "",
KodPocztowy = "",
PlatnikVAT = "Tak",
Odbiorca = "Tak",
Dostawca = "Nie",
Inny = "Nie",
UE = "Nie",
Termin = terminDni,
},
Asortymenty = new Dok2DokDokumentAsortyment[]
{
},
}
}
};
List<Dok2DokDokumentAsortyment> lista = new List<Dok2DokDokumentAsortyment>();
for (int i = 0; i < towarkod.Length; i++)
{
lista.Add(new Dok2DokDokumentAsortyment
{
Indeks = "",
Nazwa = towarkod[i],
NazwaPelna = towarNazwa[i],
StawkaVAT = "23",
Magazyn = string.Empty,
Ilosc = Convert.ToDecimal(ilosc[i]),
Jm = "szt",
Cena = Convert.ToDecimal(cena[i]),
ProcentRabatu = 0,
PKWiU = string.Empty,
Rodzaj = "towar",
TPU1 = "towar",
Precyzja = 2,
KGO = 0,
Waga = 0,
});
}
item.Dokument[0].Asortymenty = lista.ToArray();
serializer2.Serialize(writer, item);
writer.Close();
if (File.Exists(pathToXMLInvoice))
{
try
{
fApi.ApiSetDates(DateTime.MinValue, DateTime.MinValue, _invoiceYear, _invoiceMonth);
if (fApi.ImportFakturFromXML(pathToXMLInvoice) != 0)
{
throw new System.Exception(fApi.GetLastError());
}
else
{
MessageBox.Show("Import faktury z XMLa zakończony powodzeniem.", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch(Exception x)
{
MessageBox.Show(x.ToString());
}
}
try
{
fApi.Dispose();
fApi = null;
}
catch
{
}
Re: R2API - Użytkownik nie zgadza się na warunki licencji
Proszę pamiętać, aby ustawić odpowiednio DATY oraz OKRES KSIĘGOWY (w oknie Daty) - importowane faktury muszą się zmieścić w tym OKRESIE (tzn. w wybranym miesiącu).
Jeśli natomiast życzyłby Pan zlecić nam szczegółową analizę załączonego kodu, która jest usługą dodatkową - poproszę o kontakt z działem serwisu pod numerem 71 38 28 702.
Jeśli natomiast życzyłby Pan zlecić nam szczegółową analizę załączonego kodu, która jest usługą dodatkową - poproszę o kontakt z działem serwisu pod numerem 71 38 28 702.
Re: R2API - Użytkownik nie zgadza się na warunki licencji
Udało mi się dojść do tego, dlaczego R2API w moim przypadku nie działało - okazało się, że cała procedura łączenia z API musi być wykonana wewnątrz poniższego kodu, i już wszystko działa:
Kod: Zaznacz cały
this.BeginInvoke((Action)(() =>
{
}));