Kolejny temat i kolejne problemy xD.
Czytam sobie właśnie dokumentację do API i ciężko mi to rozgryźć w połączeniu z C#. O co chodzi?...
Piszę program do automatycznego importu FZ z plików. No i trochę mi się nie zgadza dokumentacja API z tym, co trzeba napisać.
Ot choćby algorytm postępowania:
Kod: Zaznacz cały
1 XLLogin - inicjalizacja bibliotek CDN-XL, login operatora do bazy danych
2 XLNowyDokument – otwarcie nagłówka nowego dokumentu; powoduje zapisanie w bazie danych otwartego nagłówka dokumentu (w omawianym przypadku jest to faktura sprzedaży)
3 XLDodajPozycje – dodanie pozycji do faktury; wywołanie tej funkcji może nastąpić wielokrotnie, jeżeli do dokumentu chdemy dopisać więcej niż jedną pozycję
4 XLDodajPlatnosc – zapis płatności do tworzonej faktury; wywołanie tej funkcji jest opcjonalne – jeżeli nie zostanie wywołana, system automatycznie wygeneruje płatność domyślną przy zamykaniu faktury; funkcjamoże być wołana wielokrotnie – np. w przypadku specyfikacji płatności ratalnej
5 XLZamknijDokument – zakończenie edycji i zamknięcie dokumentu; dokument może być zamykany w trybie normalnym (zapis bez możliwości późniejszej modyfikacji) lub w trybie „do bufora”
6 XLLogout – w obrębie jednej sesji otwartej funkcją XLLogin możemy wystawić dowolną ilość dokumentów. Wystawienie każdego z nich powinno zaczynać się wywołaniem funkcji XLNowyDokument i kończyć wywołaniem funkcji XLZamknijDokument. XLDokumentNagInfo_22 i XLDokumentElemInfo_22 - a one już nie są udokumentowane (Gdzie tu XLDodajPozycje?). No i jadę na czuja. Czy jakiś lepszy programista ode mnie może potwierdzić, czy idę w dobrym kierunku (pole akronim - wiem, do poprawy. To się rozwiąże):
Kod: Zaznacz cały
private void button1_Click(object sender, EventArgs e)
{
try
{
filepaths = Directory.GetFiles(@sciezka, "*.xml");
foreach (string file in filepaths)
{
ds.ReadXml(file);
cdn_api.XLDokumentNagInfo_22 xldokumentnaginfo = new XLDokumentNagInfo_22();
xldokumentnaginfo.Wersja = 22;
xldokumentnaginfo.Typ = 1521;
xldokumentnaginfo.Akronim = ds.Tables[1].Rows[0].ToString(); //TU JEST BŁĄD!!!!!!!!! SKĄDŚ INDZIEJ BRAĆ AKRONIM
cdn_api.XLDokumentElemInfo_22 dokumenteleminfo = new XLDokumentElemInfo_22();
dokumenteleminfo.Wersja = 22;
dokumenteleminfo.Ilosc = ds.Tables[3].Rows.Count.ToString();
cdn_api.cdn_api.XLNowyDokument(sesjaID, ref IDokumentID, xldokumentnaginfo);
foreach (DataRow row in ds.Tables[1].Rows)
{
MessageBox.Show(row["NAZWA_DST"].ToString() + " " + row["ID_MAG"].ToString() + " " + row["ID_KLT_DST"].ToString() +
" " + row["NAZWA"].ToString() + " " + row["KLT_NIP"].ToString());
}
foreach (DataRow row in ds.Tables[2].Rows)
{
MessageBox.Show(row["NR_DOK"].ToString() + " " + row["RAZEM_NETTO"].ToString() + " " + row["RAZEM_VAT"].ToString() +
" " + row["RAZEM_BRUTTO"].ToString() + " " + row["DATA_DOK"].ToString() + " " + row["FORMA_PLAT"].ToString() +
" " + row["TERMIN_PLAT"].ToString() + " " + row["NIP_SPR"].ToString() + " " + row["ADR_UL_SPR"].ToString() +
" " + row["ADR_KOD_SPR"].ToString() + " " + row["ADR_MIASTO_SPR"].ToString() + " " + row["TERMIN_DNI"].ToString() +
" " + row["KNT_MODEM"].ToString());
}
foreach (DataRow row in ds.Tables[3].Rows)
{
dokumenteleminfo.TowarEAN = row["EAN"].ToString();
cdn_api.cdn_api.XLDodajPozycje(IDokumentID, dokumenteleminfo);
MessageBox.Show(row["EAN"].ToString() + " " + row["NAZWA"].ToString() + " " + row["ILOSC_SZT"].ToString() +
" " + row["ILOSC"].ToString() + " " + row["JM"].ToString() + " " + row["PRZELICZ_JM"].ToString() +
" " + row["RABAT_POZ"].ToString() + " " + row["WART_NETTO"].ToString() + " " + row["WART_VAT"].ToString() +
" " + row["WART_BRUTTO"].ToString() + " " + row["CENA_NETTO"].ToString() + " " + row["CENA_NETTO_SZT"].ToString() +
" " + row["GRUPA_VAT"].ToString() + " " + row["STAWKA_VAT"].ToString() + " " + row["PKWIU"].ToString());
}
cdn_api.XLZamkniecieDokumentuInfo_22 zamknieciedokumentuinfo = new XLZamkniecieDokumentuInfo_22();
zamknieciedokumentuinfo.Wersja = 22;
cdn_api.cdn_api.XLZamknijDokument(IDokumentID, zamknieciedokumentuinfo);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Poważny błąd");
}
}
Kod: Zaznacz cały
Int32 sesjaID = 0;
Int32 IDokumentID = 0;
string[] filepaths;
DataSet ds = new DataSet();EDIT: zmieniłem nazwę tematu bo o inny typ dokumentu chodzi