Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: dan258 w Luty 26, 2019, 18:01:15
-
Witam,
mam problem, który wydaje się błahy, ale nie wiem co robię źle.
Potrzebuję wystawić PAi lub FS do zamówienia ZK.
Ręczne stworzenie dokumentu np. PAi i dodanie pozycji, zapisanie wychodzi dobrze, do momentu gdy niektóre ZK zawierają dany towar, który jest zarezerwowany.
Jeżeli na stanie jest jedna sztuka towaru i jest ona zarezerwowana pod Zamówienie nr X, to dostępność jest zerowa w systemie - a towar może być tylko wpisany pod PAi lub FS które dotyczą zamówienia X.
Nie wiem jak zmusić Sferę, aby odnosiła się do zamówienia X, tworząc PAi lub FS.
Pierwotny kod:
IsZKExists := SubGT.Dokumenty.Istnieje(ADocZK.Nr);
if IsZKExists then
SuDok2 := SubGT.Dokumenty.Wczytaj(ADocZK.Nr)
else
raise Exception.Create('Nie istnieje dokument ZK o numerze: ' + ADocZK.Nr);
SuDok := SubGT.Dokumenty.Dodaj(gtaSubiektDokumentPAi);
SuDok.DoDokumentuNumerPelny := ADocZK.NrOrg;
SuDok.KontrahentId := SuDok2.KontrahentId;
SuDok.OdbiorcaId := SuDok2.OdbiorcaId;
for I := 0 to ADocZK.DocZKPos.Count - 1 do
begin
SuPoz := SuDok.Pozycje.Dodaj(OleVariant(Integer(ADocZK.DocZKPos[I].Id)));
SuPoz.IloscJm := Integer(Round(ADocZK.DocZKPos[I].Amount));
SuPoz.WartoscBruttoPoRabacie := ADocZK.DocZKPos[I].PriceGross;
end;
SuDok.Zapisz;
drugie podejście - próba 'wiązania' z ZK źródłowym
IsZKExists := SubGT.Dokumenty.Istnieje(ADocZK.Nr);
if IsZKExists then
SuDok2 := SubGT.Dokumenty.Wczytaj(ADocZK.Nr)
else
raise Exception.Create('Nie istnieje dokument ZK o numerze: ' + ADocZK.Nr);
case AType of
gtaSubiektDokumentFS: SuDok := SubGT.SuDokumentyManager.DodajFS;
gtaSubiektDokumentPAi: SuDok := SubGT.SuDokumentyManager.DodajPAi;
end;
SuDok.NumerOryginalny := ADocZK.NrOrg;
SuDok.NaPodstawie(SuDok2.Identyfikator);
SuDok.Przelicz();
SuDok.Zapisz;
ale nie wychodzi.
Proszę o wskazówki. Pozdrawiam
-
Drugi kierunek jest właściwy, należy skorzystać z metody "NaPodstawie" obiektu "SuDokument" tylko nie napisałeś co dokładnie Ci nie wychodzi - jaki komunikat błędu się pojawia, jaki pojawia się w interfejsie użytkownika ? Podejrzewam, że inne zamówienie rezerwuje towar, a Ty nie pomijasz rezerwacji towarów.
-
Albo brak parametrów albo jakieś losowe błędy COM.
Wystawiam konkretnie PAi lub FS pod konkretny ZK, który ma np. 1 sztukę i jest ona zarezerowana.
Wiec przypuszczam że brakuje mi dopięcia pomysłu (kod nr 2) aby popranwie powiązać ZK z PAi/FS - może brakuje jakiegoś pola obiektu?
-
Zamiast snuć domysł odpowiedz na moje pytania, sprawdź sugestie. Profilaktycznie możesz zapisać identyfikator ZK pod zmienną lokalną i zamknąć dokument.
-
Błędy w logach, 3 typy:
Szczegóły: Nieprawidłowa liczba parametrów
Szczegóły: Zdalne wywołanie procedury nie powiodło się
Szczegóły: Serwer RPC jest niedostępny
-
I nie pomyślałeś, aby przedebugować program i sprawdzić, która dokładnie operacja powoduje problem ? :o Błędy nie mają związku z samym przekształceniem dokumentu, robisz coś innego nie tak, ale ciężko mi zgadywać z fragmentu kodu. Jeśli też nie zamierzasz korzystać z moich sugestii to nie widzę sensu ciągnąć wątku.
-
Panie Danielu, doceniam każdą wskazówkę.
Obecnie kod wygląda tak (pozbyłem się dokumentu ZK, mam jego ID w innym miejscu):
case AType of
gtaSubiektDokumentFS: SuDok := SubGT.SuDokumentyManager.DodajFS;
gtaSubiektDokumentPAi: SuDok := SubGT.SuDokumentyManager.DodajPAi;
end;
SuDok.NumerOryginalny := ADocZK.NrOrg;
SuDok.NaPodstawie(ADocZK.Id);
SuDok.Przelicz(); //<---- Błąd jest w tej metodzie
SuDok.Zapisz;
Błąd jest w metodzie Przelicz, sugerujący: "Nieprawidłowa liczba parametrów", jest na tyle inwazyjny że wywala Subiekta/Sferę.
Czego mi brakuje?
-
W jakim języku programujesz, jak w tym języku wywołuje się metody bez parametrów bo delikatnie mówiąc widzę niekonsekwencję ?
-
Akurat to jest Delphi, bez parametrów to pusty nawias i tyle... W pomocy nie spotkałem się, żeby metoda przelicz miała parametry, więc jest to Przelicz().
Można pominąć nawias, jeśli jest pusty - nie ma znaczenia.
-
Usuń metodę "Przelicz" i sprawdź taki da to efekt, metoda ta jest zbędna w tym momencie (nie powinna też powodować problemu).
-
Duże prawdopodobieństwo, że i metoda Przelicz i Zapisz sypała się na jednym konkretnym (pierwszym na liście akurat) dokumencie ZK. Powodem było to, że miał on status nr 8 czyli rozliczono..... Nie wystawiono FS ani PA do niego, ale status rozliczono.... kasując to zamówienia z listy przetwarzania w programie, reszta poszła bez problemu..
-
Status 8 to nie "rozliczenie" tylko "zrealizowane"... No nie pomyślałem, że próbujesz realizować zamówienie już zrealizowane i nie spróbowałeś wcześniej zrobić w programie tego, co próbowałeś zrobić w Sferze...
Nie wystawiono FS ani PA do niego, ale status rozliczono....
I tak cały czas wracamy do początku: http://www.forumsubiekta.pl/dodatki-zestawienia/wystawienie-faktury/msg108156/#msg108156 (http://www.forumsubiekta.pl/dodatki-zestawienia/wystawienie-faktury/msg108156/#msg108156). Zobacz jakie masz możliwości realizacji zamówienia - jedna z nich to "Zrealizuj bez dokumentu".
-
Tak masz rację, 8 to zrealizowane - to miałem na myśli w głowie. Już kilka lat siędzę przy Subiekcie i sferze, ale pewnie jeszcze nie jedno mnie zaskoczy - robię to po godzinach i niestety potwierdzam Twój post - jednakże gdyby było inaczej forum byłoby puste w tym dziale :)