Skocz do zawartości

Tworzenie konta w pozycji dekretu.

Polecane posty

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
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 przez Wojciech Urbanowski
Link to postu

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.

image.thumb.png.8ef1385b72489776a46b1a6bf826ef22.png

image.thumb.png.67c7ea2b1f2d21096f8811dbb4b16335.png

 

Link to postu
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
×
×
  • Dodaj nową pozycję...