Piotr Taraszkiewicz 12 Napisano 31 Grudnia 2019 Udostępnij Napisano 31 Grudnia 2019 w Sfera a fiskalizacja paragonów (edytowane) W Subiekcie GT przy wydruku dokumentu z poziomu Sfery były fiskalizowane paragony. W Subiekcie nexo wydaje się to działać inaczej. Czy da się wywołać drukowanie tak, aby wykonała się fiskalizacja wg ustawień Subiekta, czy trzeba ją osobno wymuszać? Mamy funkcję drukowania: private void DrukujDokument(Uchwyt sfera, int daneId) { IDokumenty dokumenty = _sfera.PodajObiektTypu<IDokumenty>(); Dokument dokumentDoWydruku = dokumenty.Dane .Wszystkie() .FirstOrDefault(x => x.Id == daneId); IWydruki manager = _sfera.PodajObiektTypu<IWydruki>(); TypDokumentu typ = dokumentDoWydruku.PodajTypDokumentu(); string symbol = dokumentDoWydruku.Symbol; // utworzenie zadania drukowania TypWzorcaWydruku typWzorca = TypWzorcaWydruku.DokumentSprzedazy; if (symbol == "PI") typWzorca = TypWzorcaWydruku.ParagonImienny; else if (symbol == "PA") typWzorca = TypWzorcaWydruku.Paragon; else typWzorca = TypWzorcaWydruku.DokumentSprzedazy; using (IWydruk wydruk = manager.Utworz(typWzorca)) { wydruk.ObiektDoWydruku = dokumentDoWydruku; wydruk.Drukuj(); Loger.Instance.ZalogujInformacje($"Wydruk {daneId} {dokumentDoWydruku.Symbol} z sukcesem: {wydruk.OstatniaOperacjaZakonczonaSukcesem}"); if (!wydruk.OstatniaOperacjaZakonczonaSukcesem) { var listaBledow = wydruk.PobierzListeBledow().ToList(); var zlaczone = Laczenie.ZlaczStringi(listaBledow, Environment.NewLine); Loger.Instance.ZalogujWaznaInformacje(zlaczone); } } } Po takim wydruku paragon nie jest fiskalizowany. Nie są zwracane żadne błędy podczas drukowania. W ustawieniach paragonu Subiekta nexo jest ustawione "Zawsze" dla fiskalizacji nowych i istniejących dokumentów. Próbowałem użyć interfejsu do fiskalizacji: IDokumentySprzedazy dokumenty = _sfera.PodajObiektTypu<IDokumentySprzedazy>(); DokumentDS dokument = dokumenty.Dane .Wszystkie() .FirstOrDefault(x => x.Id == daneId); IFiskalizacjaDokumentu fiskalizator = _sfera.PodajObiektTypu<IFiskalizacjaDokumentu>(); StatusFiskalizacji statusFiskalizacji = (StatusFiskalizacji) dokument.StatusFiskalizacji; Loger.Instance.ZalogujInformacje($"{daneId} status fiskalizacji: {statusFiskalizacji}"); fiskalizator.RozpoczetoFiskalizacje += FiskalizacjaRozpoczeta; fiskalizator.FiskalizacjaZablokowana += FiskalizacjaZablokowana; fiskalizator.PrzyjetoPolecenieFiskalizacji += PrzyjetoFiskalizacje; fiskalizator.ZakonczonoFiskalizacje += FiskalizacjaZakonczona; fiskalizator.Fiskalizuj( daneId, idDrukarki); Id drukarki biorę z tabeli: UrzadzeniaZewnetrzne. Wywoływane są zdarzenia rozpoczęcia i zakończenia fiskalizacji, ale paragon z drukarki nie wychodzi i z poziomu Subiekta nie ma statusu fiskalizacji. Co powinniśmy zrobić aby wymusić fiskalizację (a najlepiej aby uzależnić fiskalizację od ustawień Subiekta)? Edytowane 31 Grudnia 2019 przez Piotr Taraszkiewicz Link to postu
Wojciech Szopiński 227 Napisano 7 Stycznia 2020 Udostępnij Napisano 7 Stycznia 2020 w Sfera a fiskalizacja paragonów Czy po wywołaniu "Fiskalizuj" uchwyt do sfery jest zamykany? Link to postu
Piotr Taraszkiewicz 12 Napisano 7 Stycznia 2020 Autor Udostępnij Napisano 7 Stycznia 2020 w Sfera a fiskalizacja paragonów Tak, dla każdej operacji otwieramy nową instancję i wykonujemy akcję Dispose();. Czyli mogę rozumieć że kierunek jest właściwy, tylko może być problem z wykonaniem? .... .... try { _sfera = PolaczBezOkna(_konfiguracja, _uzytkownik); ... fiskalizator.Fiskalizuj( daneId, idDrukarki); _sfera.Dispose(); _sfera = null; } catch (Exception ex) { Loger.Instance.ZalogujBlad(ex); if (_sfera != null) { _sfera.Dispose(); _sfera = null; } PrzechwycBledy(ex); throw; } Link to postu
Wojciech Szopiński 227 Napisano 7 Stycznia 2020 Udostępnij Napisano 7 Stycznia 2020 w Sfera a fiskalizacja paragonów Fiskalizacja wykonywana jest w osobnym wątku i przez wykonanie Dispose na uchwycie do sfery operacja nie wykonuje się do końca. Należałoby poczekać na zakończenie procesu fiskalizacji na przykład odpytując cyklicznie o status fiskalizacji dokumentu. Można również wykorzystać zdarzenie "ZakonczonoFiskalizacje" podłączyć do niego handler, w którym wykorzystując semafor WaitEventHandler przyblokujemy główny wątek aplikacji żeby zaczekał na zakończenie fiskalizacji. Ewentualnie być może dobrze byłoby przemyśleć architekturę aplikacji bo może nie ma konieczności tworzenia nowego uchwytu do sfery przed wystawieniem każdego dokumentu. 1 Link to postu
Piotr Taraszkiewicz 12 Napisano 8 Stycznia 2020 Autor Udostępnij Napisano 8 Stycznia 2020 w Sfera a fiskalizacja paragonów Zgodnie z sugestią przerobiliśmy rozwiązanie aby nie zamykać Uchwytu i wykorzystywać ten sam dla różnych dokumentów. Paragony się teraz fiskalizują. Dziękuję bardzo za podpowiedź. Link to postu
R2 D2 2 Napisano 1 Lipca 2021 Udostępnij Napisano 1 Lipca 2021 w Sfera a fiskalizacja paragonów Pozwolę sobie odkopać wątek, gdyż po aktualizacji do najnowszej wersji (nexoSDK_36.0.0.4611) mam podobny problem - na wersji (nexoSDK_34.1.1.4334) ten sam kod prawidłowo fiskalizował dokumenty. Kod (zgodnie z powyższą sugestią) czeka na zakończenie fiskalizacji (oczekuje na "ZakonczonoFiskalizacje"). Prawidłowo wywołuje się "RozpoczetoFiskalizacje" jak i "ZakonczonoFiskalizacje". W rejestrze zdarzeń dla drukarki - brak wpisu o zdarzeniu. Czy mogę prosić o podpowiedź, gdzie szukać problemu? Link to postu
R2 D2 2 Napisano 1 Lipca 2021 Udostępnij Napisano 1 Lipca 2021 w Sfera a fiskalizacja paragonów 4 godziny temu, R2 D2 napisał: Pozwolę sobie odkopać wątek, gdyż po aktualizacji do najnowszej wersji (nexoSDK_36.0.0.4611) mam podobny problem - na wersji (nexoSDK_34.1.1.4334) ten sam kod prawidłowo fiskalizował dokumenty. Kod (zgodnie z powyższą sugestią) czeka na zakończenie fiskalizacji (oczekuje na "ZakonczonoFiskalizacje"). Prawidłowo wywołuje się "RozpoczetoFiskalizacje" jak i "ZakonczonoFiskalizacje". W rejestrze zdarzeń dla drukarki - brak wpisu o zdarzeniu. Czy mogę prosić o podpowiedź, gdzie szukać problemu? Udało się rozwiązać problem poprzez usunięcie wszystkich plików wynikowych i zbudowanie rozwiązania na nowo (uprzednio próbowałem wymusić przebudowanie, ale w dalszym ciągu wystawianie paragonów nie działało). Link to postu
Polecane posty