Strona 1 z 1

API -> tworzenie ZS z pozycjami

: 22 lis 2020, 22:47
autor: Lilpri
Hej,
Mam małą zagwozdkę. Mam bazę testową XL'a 2019.3.4 i próbuję stworzyć ZS z pozycjami na podstawie zapytania SQL.
Niestety ZS nie wypełnia się pozycjami, XLDodajPozycjeZam kończy się kodem 12.

Mam taki kod w C#

Kod: Zaznacz cały

 if (LoginResult == 0)
            {
                Console.WriteLine("Udane logowanie!");
                
                int ZS_id = 0;
                XLDokumentZamNagInfo_20193 xl_zs_header = new XLDokumentZamNagInfo_20193();
                xl_zs_header.Wersja       = 20193;
                xl_zs_header.Typ          = 6; 
                xl_zs_header.KntTyp       = 32;

                xl_zs_header.KntNumer = 7302;

                xl_zs_header.Opis = "test";
                xl_zs_header.RealWCalosci = 1;
                
                int ZS_status = cdn_api.cdn_api.XLNowyDokumentZam(SesjaID, ref ZS_id, xl_zs_header);
                Console.WriteLine(ZS_id);
                using( con =
                    new SqlConnection(@"Data Source=ip\instancja;Initial Catalog=ERPXL_Test;Persist Security Info=True;User ID=sa;pwd=****;"))
                {
                    
                    con.Open();
                     cmd = new SqlCommand("select ZaE_TwrKod,ZaE_TwrNazwa,ZaE_TwrNumer, ZaE_Ilosc, ZaE_CenaUzgodniona from cdn.ZamElem join cdn.ZaNOpisy on ZaE_GIDNumer=ZnO_ZamNumer join cdn.ZamNag on ZaE_GIDNumer=zan_gidnumer where zno_opis like '%sprzedaż internetowa%' and zae_twrkod not like 'Transport' and ZaN_Stan in (4,3,2)",con);
                 
                    rdr = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                       XLDokumentZamElemInfo_20193 xl_zs_poz = new XLDokumentZamElemInfo_20193();
                       xl_zs_poz.Wersja = 20193;
                     
                       xl_zs_poz.Ilosc = rdr.GetDecimal("ZaE_Ilosc").ToString("0.00");
                       xl_zs_poz.TwrNumer = rdr.GetInt32("ZaE_TwrNumer");
                       xl_zs_poz.CenaSpr = (int) rdr.GetDecimal("ZaE_CenaUzgodniona");
                       cdn_api.cdn_api.XLDodajPozycjeZam(ZS_id, xl_zs_poz);
                       
                    }
                    rdr.Close();
                    con.Close();
                }

                XLZamkniecieDokumentuZamInfo_20193 xl_zs_close = new XLZamkniecieDokumentuZamInfo_20193();
                xl_zs_close.Wersja = 20193;
                xl_zs_close.TrybZamkniecia = 0;

                if (xl_zs_close != null)
                    ZS_status = cdn_api.cdn_api.XLZamknijDokumentZam(ZS_id, xl_zs_close);XLZamkniecieDokumentuZamInfo_20193 XLClose = new XLZamkniecieDokumentuZamInfo_20193();
                
                Console.WriteLine("Koniec");

            }

            cdn_api.cdn_api.XLLogout(SesjaID);
Dane pobiera ok, sprawdziłem to sobie debugując co pobiera Ilość, TwrNumer oraz CenaSpr. Ale mimo wszystko coś jest nie tak, bo nie dodaje ich do ZS... Może będziecie w stanie wskazać co i jak?:)


Próbowałem też odpalić ApiAutomator (fakt API ma od wersji 2016), ale również nic nie pomogło. Niby wszystko przebiega ok, ale ZS się nie dodaje.

Re: API -> tworzenie ZS z pozycjami

: 22 lis 2020, 22:59
autor: wacek
podaj kod towaru (najlepiej z CDN.TwrKarty) zamiast ZaE_TwrNumer

12 - Nie podano kodu, ani nazwy, ani GID’u towaru

Re: API -> tworzenie ZS z pozycjami

: 22 lis 2020, 23:11
autor: Lilpri
Dzięki, faktycznie dając Twr_Kod poszło. Twr_Gidnumer ten sam błąd dawał.

Jeszcze raz dzięki :) Bez dokumentacji i przykładów API tak troszkę po omacku działam, ale jakieś trudne to API to nie jest :)


PS. A kod 13 w wyniku dodawania pozycji co oznacza?

Re: API -> tworzenie ZS z pozycjami

: 27 lis 2020, 11:35
autor: rafalW
13 - Nie udało się pobrać przekazanego towaru