Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: dan258 w Luty 26, 2019, 18:01:15

Tytuł: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana 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
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dkozlowski w Luty 26, 2019, 18:15:02
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.
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dan258 w Luty 26, 2019, 19:12:26
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?
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dkozlowski w Luty 26, 2019, 19:24:38
Zamiast snuć domysł odpowiedz na moje pytania, sprawdź sugestie. Profilaktycznie możesz zapisać identyfikator ZK pod zmienną lokalną i zamknąć dokument.
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dan258 w Luty 27, 2019, 08:07:10
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
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dkozlowski w Luty 27, 2019, 09:33:17
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.
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dan258 w Luty 27, 2019, 13:04:03
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?
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dkozlowski w Luty 27, 2019, 18:49:52
W jakim języku programujesz, jak w tym języku wywołuje się metody bez parametrów bo delikatnie mówiąc widzę niekonsekwencję ?
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dan258 w Luty 27, 2019, 21:19:17
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.
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dkozlowski w Luty 27, 2019, 21:28:11
Usuń metodę "Przelicz" i sprawdź taki da to efekt, metoda ta jest zbędna w tym momencie (nie powinna też powodować problemu).
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dan258 w Luty 27, 2019, 22:24:13
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..
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dkozlowski w Luty 27, 2019, 22:41:11
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".
Tytuł: Odp: Dodanie PAi oraz FS na podstawie ZK
Wiadomość wysłana przez: dan258 w Luty 27, 2019, 22:50:39
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 :)