R2API - Użytkownik nie zgadza się na warunki licencji

Napisz jakie masz sugestie oraz pytania odnośnie działania programów R2fk, R2księga, R2środki, R2środkiPRO i R2środkiSBO. Możesz tu także zgłaszać wszelkie błędy, usterki czy nieprawidłowości nieopisane w części FAQ, z którymi spotkałeś się podczas pracy z programami.
Tymoteusz
Posty: 8
Rejestracja: pt, 16 lipca 2021 10:17

R2API - Użytkownik nie zgadza się na warunki licencji

Post autor: Tymoteusz » pn, 19 lipca 2021 10:30

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?
Awatar użytkownika
Ul
 
Posty: 89
Rejestracja: pt, 09 marca 2018 10:12
Lokalizacja: SYMFONIA sp. z o.o.
Kontakt:

Re: R2API - Użytkownik nie zgadza się na warunki licencji

Post autor: Ul » pn, 19 lipca 2021 12:10

Zgadza się, wszystkie pliki związane z API (np.: .exe czy .dll) muszą się znajdować w katalogu BIN programu R2.
Tymoteusz
Posty: 8
Rejestracja: pt, 16 lipca 2021 10:17

Re: R2API - Użytkownik nie zgadza się na warunki licencji

Post autor: Tymoteusz » wt, 20 lipca 2021 10:00

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.
Awatar użytkownika
Ul
 
Posty: 89
Rejestracja: pt, 09 marca 2018 10:12
Lokalizacja: SYMFONIA sp. z o.o.
Kontakt:

Re: R2API - Użytkownik nie zgadza się na warunki licencji

Post autor: Ul » wt, 20 lipca 2021 11:13

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.
Tymoteusz
Posty: 8
Rejestracja: pt, 16 lipca 2021 10:17

Re: R2API - Użytkownik nie zgadza się na warunki licencji

Post autor: Tymoteusz » wt, 20 lipca 2021 11:46

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
            {
            }
Awatar użytkownika
Ul
 
Posty: 89
Rejestracja: pt, 09 marca 2018 10:12
Lokalizacja: SYMFONIA sp. z o.o.
Kontakt:

Re: R2API - Użytkownik nie zgadza się na warunki licencji

Post autor: Ul » śr, 21 lipca 2021 10:50

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.
Tymoteusz
Posty: 8
Rejestracja: pt, 16 lipca 2021 10:17

Re: R2API - Użytkownik nie zgadza się na warunki licencji

Post autor: Tymoteusz » pt, 23 lipca 2021 12:15

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)(() =>
            {
            }));
ODPOWIEDZ