Roman Kopycki 2 Napisano 8 Czerwca 2021 Udostępnij Napisano 8 Czerwca 2021 w Tworzenie konta w pozycji dekretu. Witam Interesuje mnie jak można z poziomu Sfery Rewizora nexo dodać pozycję dekretu wraz z dodaniem analityk konta. Konto 217-01-A-B Gdzie A : to księgowy słownik własny B : to słownika Stawek VAT. Chciałbym użyć do tego celu funkcji dkr.DodajPozycje(Parametry); Prosiłbym o przesłanie fragmentu kodu programu. Udało mi się zrobić gdy konto miało tylko 2 analityki (w tym jedna słownikowa) Link to postu
Wojciech Urbanowski 56 Napisano 16 Czerwca 2021 Udostępnij Napisano 16 Czerwca 2021 w Tworzenie konta w pozycji dekretu. (edytowane) W dniu 8.06.2021 o 14:25, Roman Kopycki napisał: ... A : to księgowy słownik własny ... Uprzejmie proszę o doprecyzowanie czy chodzi o słownik własny czy o księgowy słownik użytkownika. Na użytek poniższego przykładu zakładam, że to drugie (księgowy słownik użytkownika). WartoscKsiegowegoSlownikaUzytkownika a = ...; StawkaVat b = ...; IDokumentKsiegowy dkr = ...; IDefinicjeKontaKsiegowego dkks = ...; // Pobrać ze sfery var dkk = dkks.Dane.Wszystkie() .Where(dkk => dkk.OkresObrachunkowy.Okres.DataPoczatkowa == /*...*/) // Jeśli znane jest Id okresu obr. to można ten warunek zmienić .Where(dkk => dkk.PelnyNumer == "217-01-A-B") .SingleOrDefault(); IElementyKartotekiKsiegowejZwykle ekkzs = ...; // Pobrać ze sfery var elementKartotekiA = ekkzs.Utworz(dkk.DefinicjaNadrzedna.Kartoteka, a); // Nic nie wybuchnie jeśli element ma już nadany numer analityki; można też nadać/zmienić numer analityki 3. parametrem jeśli nie ma automatu elementKartotekiA.Zapisz(); var elementKartotekiB = ekkzs.Utworz(dkk.Kartoteka, b); // Nic nie wybuchnie jeśli element ma już nadany numer analityki; można też nadać/zmienić numer analityki 3. parametrem jeśli nie ma automatu elementKartotekiB.Zapisz(); var pozycja = dkr.DodajPozycje(dkk, elementKartotekiA.Dane, elementKartotekiB.Dane); Edytowane 16 Czerwca 2021 przez Wojciech Urbanowski Link to postu
Roman Kopycki 2 Napisano 17 Czerwca 2021 Autor Udostępnij Napisano 17 Czerwca 2021 w Tworzenie konta w pozycji dekretu. Witam To jest księgowy słownik użytkownika IElementyKartotekiKsiegowejZwykle elementyKartotekKsiegowych = uchwyt.PodajObiektTypu<IElementyKartotekiKsiegowejZwykle>(); IKartotekiKsiegowe kartotekiKsiegowe = uchwyt.PodajObiektTypu<IKartotekiKsiegowe>(); var a = uchwyt.PodajObiektTypu<IWartosciKsiegowychSlownikowUzytkownika>().Dane.Wszystkie().Where(x => x.Slownik.Nazwa == "Słownik użytkownika 1").Where(x => x.Symbol == "03").FirstOrDefault(); //Zwraca mi jeden rekord var b = uchwyt.PodajObiektTypu<IStawkiVat>().Dane.Wszystkie().Where(x => x.Symbol == "23").FirstOrDefault(); IDokumentyKsiegowe mngDok = uchwyt.PodajObiektTypu<IDokumentyKsiegowe>(); //Zwraca mi jeden rekord using (var dkr = mngDok.Utworz()) { IDefinicjeKontaKsiegowego dkks = uchwyt.PodajObiektTypu<IDefinicjeKontaKsiegowego>(); var dkk = dkks.Dane.Wszystkie() .Where(dk => dk.OkresObrachunkowy.Id == okresObr.Id) .Where(dk => dk.PelnyNumer == "217-01-3-23") .SingleOrDefault(); // tutaj daje mi null. Jak mam uzupełnić warunki dkr.Dane.Typ = (byte)TypDokumentuKsiegowego.Dekret; dkr.Dane.OkresObrachunkowy = uchwyt.PodajObiektTypu<IOkresyObrachunkowe>().Dane.Wszystkie().FirstOrDefault(x => x.Id == okresObr.Id); dkr.Dane.RejestrKsiegowy = rejestryKsiegowe.Dane.Wszystkie().Where(x => x.OkresObrachunkowy.Id == dkr.Dane.OkresObrachunkowy.Id).First(r => r.Id == rejestr.Id); dkr.Dane.DataZapisu = miesiac.AddMonths(1).AddDays(-1); dkr.Dane.DataDowodu = miesiac.AddMonths(1).AddDays(-1); dkr.Dane.DataDokonaniaOperacji = miesiac.AddMonths(1).AddDays(-1); dkr.Dane.NumerWlasny = "asdasd"; dkr.Dane.Opis = "dasdf"; IElementyKartotekiKsiegowejZwykle ekkzs = uchwyt.PodajObiektTypu<IElementyKartotekiKsiegowejZwykle>(); var elementKartotekiA = ekkzs.Utworz(dkk.DefinicjaNadrzedna.Kartoteka, a); // Nic nie wybuchnie jeśli element ma już nadany numer analityki; można też nadać/zmienić numer analityki 3. parametrem jeśli nie ma automatu elementKartotekiA.Zapisz(); var elementKartotekiB = ekkzs.Utworz(dkk.Kartoteka, b); // Nic nie wybuchnie jeśli element ma już nadany numer analityki; można też nadać/zmienić numer analityki 3. parametrem jeśli nie ma automatu elementKartotekiB.Zapisz(); var pozycja = dkr.DodajPozycje(dkk, elementKartotekiA.Dane, elementKartotekiB.Dane); try { if (!dkr.Zapisz()) { throw new Exception(dkr.WypiszBledy()); } } catch() {] } Przesyłam zrzuty z Rewizora jak wyglądają konta W dkk zwraca mi null. Gdzie popełniłem błąd. Link to postu
Wojciech Urbanowski 56 Napisano 18 Czerwca 2021 Udostępnij Napisano 18 Czerwca 2021 w Tworzenie konta w pozycji dekretu. 17 godzin temu, Roman Kopycki napisał: var dkk = dkks.Dane.Wszystkie() .Where(dk => dk.OkresObrachunkowy.Id == okresObr.Id) .Where(dk => dk.PelnyNumer == "217-01-3-23") .SingleOrDefault(); // tutaj daje mi null. Jak mam uzupełnić warunki Trochę obrazkowo: zapytanie operujące na ddks.Dane.StoreQuery() nie jest wykonywane na wierszach widocznych w widoku "Plan kont z elementami kartotek" lecz na wierszach widocznych w widoku "Plan kont" (to ten widok z lewej gdzie nie ma rozbicia na elementy kartotek księgowych). W tej tabeli (kryjącej się za widokiem "Plan kont") nigdy nie będzie wiersza z pełnym numerem "217-01-3-23", bo to byt będący złożeniem definicji konta "217-01-kartoka1-kartoteka2" z doprecyzowaniem dwóch elementów kartotek. dkr.DodajPozycje(...) potrzebuje właśnie wpisu z tabeli "Plan kont". Trzeba zatem dostosować zapytanie do tego co jest w widoku "Plan kont" i "wyłuskać" wiersz, który wskazuje na definicję (tutaj nieco zgaduję): "217-01-Słownik użytkownika 1-Stawki VAT". A już zupełnie konkretnie: trzeba zamienić wyżej cytowane linie na następujące i powinno zadziałać: var dkk = dkks.Dane.Wszystkie() .Where(dk => dk.OkresObrachunkowy.Id == okresObr.Id) .Where(dk => dk.DefinicjaNadrzedna.DefinicjaNadrzedna.PelnyNumer == "217-01") .SingleOrDefault(); Reszta kodu jest bardzo dobrze napisana 🙂 Link to postu
Roman Kopycki 2 Napisano 21 Czerwca 2021 Autor Udostępnij Napisano 21 Czerwca 2021 w Tworzenie konta w pozycji dekretu. Zadziałało. Dziękuję bardzo.. Link to postu
Polecane posty