Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Faktury obce #7

Closed
kuncy7 opened this issue Dec 12, 2023 · 20 comments
Closed

Faktury obce #7

kuncy7 opened this issue Dec 12, 2023 · 20 comments
Labels
enhancement New feature or request

Comments

@kuncy7
Copy link

kuncy7 commented Dec 12, 2023

Aktualna wersja 0.1.12 działa znakomicie, wysyła faktury, pobiera upo (w formacie xml i pdf),
potrafi też pobrać własną fakturę z ksef w formacie pdf.
Do pełnej funkcjonalności brakuje opcji pobierania faktur obcych (kosztowych, czy tam zakupowych).
Czy będzie dostępna taka opcja??

@toudi
Copy link
Owner

toudi commented Dec 12, 2023

będzie będzie.. po prostu obecnie pracuję nad dokumentacją (jest nawet od tego branch) muszę dorobić github action żeby zbudowana dokumentacja dołączała się do binarki oraz wysyłała na serwer no i wciąż muszę dorobić logowanie. Ja to serio robię po godzinach :D

@toudi toudi added the enhancement New feature or request label Dec 12, 2023
@kuncy7
Copy link
Author

kuncy7 commented Dec 12, 2023

Super, właśnie z tej dokumentacji dowiedziałem się o opcji: ksef download-pdf , sprawdziłem, działa!

Jak na robotę po godzinach, to jest do znakomita robota, dzięki! :)

@toudi
Copy link
Owner

toudi commented Dec 15, 2023

zobacz najnowszego builda. oczywiście nie muszę chyba dodawać, że ta opcja jak każda inna w programie jest eksperymentalna :) w plikach znajdziesz też dokumentację w PDF

@kuncy7
Copy link
Author

kuncy7 commented Dec 15, 2023

Dziś się nie uda sprawdzić, coś tam robią na bramce test,

@kuncy7
Copy link
Author

kuncy7 commented Dec 18, 2023

Dziś sprawdziłem i jest jakiś problem z komendą ./ksef download-pdf:

ksef download-pdf -i '*' -p KSeF/in/registry.yaml -token 43BF872C1A3E7DFF92CE8784329437227DFBFBF42C9DB77EF39153EA0A30C011 -xml
request URL: https://ksef-test.mf.gov.pl/api/online/Session/AuthorisationChallenge
error running download-pdf:
unable to login to interactive session: cannot retrieve gateway token: failed to unlock correct collection '/org/freedesktop/secrets/collection/login'

Jakby podanego wprost tokena nie widział. Sprawdzane na wersji 0.1.17 .

@toudi
Copy link
Owner

toudi commented Dec 18, 2023

masz rację, zaraz to poprawię

@toudi
Copy link
Owner

toudi commented Dec 18, 2023

mea culpa - nowy build już dostępny :)

@kuncy7
Copy link
Author

kuncy7 commented Dec 18, 2023

To teraz OK:

ksef download-pdf -i '*' -p KSeF/in/registry.yaml -token 43BF872C1A3E7DFF92CE8784329437227DFBFBF42C9DB77EF39153EA0A30C011 -xml
request URL: https://ksef-test.mf.gov.pl/api/online/Session/AuthorisationChallenge
set token 800ea34f825460625b6e69a282fa44c77550d91c53f0147126c1e6baffec7c51
request URL: https://ksef-test.mf.gov.pl/api/online/Session/Status/20231218-SE-8ED08D533F-175E046D14-97
session status code = 100
request URL: https://ksef-test.mf.gov.pl/api/online/Session/Status/20231218-SE-8ED08D533F-175E046D14-97
session status code = 310
request URL: https://ksef-test.mf.gov.pl/api/online/Session/Status/20231218-SE-8ED08D533F-175E046D14-97
request: &{Method:GET URL:https://ksef-test.mf.gov.pl/api/online/Invoice/Get/9999999999-20231218-1F8BE23107D8-28 Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Sessiontoken:[800ea34f825460625b6e69a282fa44c77550d91c53f0147126c1e6baffec7c51]] Body:<nil> GetBody:<nil> ContentLength:0 TransferEncoding:[] Close:false Host:ksef-test.mf.gov.pl Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:{emptyCtx:{}}}
request: &{Method:GET URL:https://ksef-test.mf.gov.pl/api/online/Invoice/Get/9999999999-20231218-84443461222D-8C Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Sessiontoken:[800ea34f825460625b6e69a282fa44c77550d91c53f0147126c1e6baffec7c51]] Body:<nil> GetBody:<nil> ContentLength:0 TransferEncoding:[] Close:false Host:ksef-test.mf.gov.pl Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:{emptyCtx:{}}}
request: &{Method:GET URL:https://ksef-test.mf.gov.pl/api/online/Invoice/Get/9999999999-20231217-0DD168712B3E-93 Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Sessiontoken:[800ea34f825460625b6e69a282fa44c77550d91c53f0147126c1e6baffec7c51]] Body:<nil> GetBody:<nil> ContentLength:0 TransferEncoding:[] Close:false Host:ksef-test.mf.gov.pl Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:{emptyCtx:{}}}

Natomiast chciałem pobrać faktury "własne" i takie coś mam:

ksef download -t -income -d KSeF/invoce -start-date 2023-12-17 -token 43BF872C1A3E7DFF92CE8784329437227DFBFBF42C9DB77EF39153EA0A30C011request URL: https://ksef-test.mf.gov.pl/api/online/Session/AuthorisationChallenge
error running download:
unable to login: unexpected response code: 400 != 2xx or err: <nil>

Choć może "oni" tam coś na tej bramce testowej mieszają, bo nawet na sesji interaktywnej tych faktur typu 3 nie mogę zobaczyć.

@toudi
Copy link
Owner

toudi commented Dec 18, 2023

coś mi się wydaje, że powodem tego błędu jest to że przy opcji download musisz i tak podać numer NIP, nawet jak podajesz token - bo klient musi się zalogować do KSeF a NIP jest częścią wyzwania autoryzacyjnego. spróbowałem na swoich fakturach i przeszło. NIP-u nie musisz podawać jedynie w przypadku opcji -refresh bo wtedy wszystkie parametry są zapisane do pliku registry.yaml. pewnie to jest kandydat do poprawki - na zasadzie że jeśli nie podałeś nipu a nie ma opcji refresh to program powinien wyrzucić komunikat o błędnym wykonaniu

@toudi
Copy link
Owner

toudi commented Dec 18, 2023

acha, również potwierdzam że nie jestem w stanie pobrać ani faktur z typem 3 ani tych autoryzowanych (na oryginalnej aplikacji KSeF).

@kuncy7
Copy link
Author

kuncy7 commented Dec 18, 2023

Dzięki, rzeczywiście trzeba podać nip, sorry mój błąd.
Jakaś sygnalizacja błędu by się przydała, bo miałem błędną fakturę i dopiero próba pobrania upo dawała błąd,
wysyłka przechodziła bez żadnej informacji o błędzie.

Ta stronka z dokumentacją bardzo fajna!

@toudi
Copy link
Owner

toudi commented Dec 18, 2023

tak, tylko akurat tutaj obawiam się że nic nie jestem w stanie zrobić (tj. jeśli chodzi o wysyłkę błędnej faktury) ponieważ wysyłka w trybie interaktywnym jest asynchroniczna. innymi słowy o ile KSeF po swojej stronie nie będzie miał jakiegoś błędu z bazą danych czy czegoś podobnego to wysyłka faktury (nawet błędnej) zawsze da status 200 / 201. dopiero po odpaleniu komendy status dowiesz się czy została sparsowana. Udało mi się zauważyć jeszcze to, że kiedy plik XML z fakturą wrzucam przez formularz webowy to w konsoli (zakładka network) da radę wyśledzić bardziej szczegółowe błędy których klient KSeF nie wyświetla - co jest pomocne bo wtedy możesz się zorientować mniej więcej co jest nietak w przesyłanej fakturze. to jest wywołanie o nazwie albo upload albo log, nie pamiętam do końca ale jak rozwiniesz sobie tą zakładkę network to napewno się zorientujesz. a jeśli nie to daj znać, podeślę screeny.

@kuncy7
Copy link
Author

kuncy7 commented Dec 18, 2023

Szkoda, myślałem że api daje jakąś odpowiedź OK lub BAD oprócz kodu 200.
W sumie trzeba zadbać żeby faktura była poprawna i tyle.

Teraz nie pozostaje nic innego niż używać, choć gdzieś tam czytałem że ksef może być jeszcze bardziej opóźniony.

@toudi
Copy link
Owner

toudi commented Dec 18, 2023

chyba nawet wysyłka wsadowa / batch też jest asynchroniczna - różnica jest tylko taka że jeśli we wsadowej coś pójdzie nie tak to odrzucana jest cała grupa faktur. w przypadku wysyłki interaktywnej myślę, że musiałbym dorobić coś takiego że jeśli wysyłasz faktury z tego samego katalogu to program omija te które już zostały zaraportowane i został im nadany numer KSeF. oprócz tego chciałem dorobić wizualizację w PDF ale własną a nie tą z ministerstwa ale to wbrew pozorom będzie trochę roboty. to co jeszcze czytałem że ma się zmienić to że ministerstwo planuje zrezygnować z tokenów na rzecz certyfikatów. z jednej strony spoko bo może umożliwiłoby to generowanie kodów QR faktycznie w trybie offline a z drugiej strony zastanawiam się jak to będzie się mieć do integracji jaką będzie mieć np. infakt / fakturownia czy coś podobnego bo wtedy chyba oni musieliby trzymać u siebie klucz prywatny do certyfikatu klienta

@kuncy7
Copy link
Author

kuncy7 commented Dec 19, 2023

Miałem zapytać/sprawdzić. Czyli powinno być tak, że jak wyślę fakturę(y) i uda się pobrać upo, to trzeba usunąć/przenieść z katalogu "wysyłkowego" te wysłane faktury? Z tą wizualizacją faktury w PDF to faktycznie będzie robota, niektórzy nie zwracają wcale uwagi na wygląd, a inni wydziwiają i chcą takich "ozdóbek" (loga, ramki, dopiski, itd.) że głowa mała.
Te certyfikaty i usuwanie tokenów 6 miesięcy przed startem systemu to tylko czubek bałaganu jaki panuje w temacie ksef.

@toudi
Copy link
Owner

toudi commented Dec 19, 2023

no właśnie w tej chwili trzeba je usunąć ale w moim rozumieniu to jest błąd tj. niedopracowanie programu. bo powinno być tak (tzn. tak mi się intuicyjnie wydaje) że katalog wysyłkowy masz jeden na sesję i dzięki temu że jest plik rejestru (czyli taka pseudo baza danych) to jak po raz kolejny uruchomisz komendę upload (bo np. masz jakieś faktury do poprawki) to program nie wysyła tych faktur które już raz wysłał. na marginesie na środowisku testowym jest tak że jak wyślesz drugi raz taką samą fakturę (nawet z taką samą datą wysyłki) to systemowi to nie przeszkadza i w KSeF pojawia się duplikat. pytałem ich o to ale mi nie odpisali.

zastanawiałem się też czy warto dorobić jakieś pseudo GUI (myślałem o svelte) do programu ale brutalnie mówiąc mam wrażenie że program jest na tyle mało używany że nie ma to sensu :D i wolę skupić się na logowaniu i wyczyszczeniu kodu.

@toudi
Copy link
Owner

toudi commented Dec 19, 2023

p.s. certyfikaty mogłyby paradoksalnie być zaletą z tego względu że za pomocą certyfikatu mógłbyś podpisać skrót faktury a co za tym idzie mógłbyś faktycznie, realnie offline wygenerować QRKod nawet przy niedziałającym KSeF. ze swojej strony KSeF musiałby tylko mieć operację odwrotną tj. podpisany skrót -> obiekt faktury. również pisałem w tej sprawie do ministerstwa.

co do generowania własnego PDF to można spróbować projektu puppeteer oraz drugi o jakim słyszałem to https://gotenberg.dev/ . wtedy mój program musiałby jedynie wystawiać dane faktury i QRkod a twórca szablonu by sobie te dane parsował i mógł dzięki temu zapisać własnego PDF. wówczas sam program nie musiałby mieć żadnego szablonu HTML bo każdy by sobie zaprojektował taki jaki by mu się podobał

@kuncy7
Copy link
Author

kuncy7 commented Dec 19, 2023

no właśnie w tej chwili trzeba je usunąć ale w moim rozumieniu to jest błąd tj. niedopracowanie programu. bo powinno być tak (tzn. tak mi się intuicyjnie wydaje) że katalog wysyłkowy masz jeden na sesję i dzięki temu że jest plik rejestru (czyli taka pseudo baza danych) to jak po raz kolejny uruchomisz komendę upload (bo np. masz jakieś faktury do poprawki) to program nie wysyła tych faktur które już raz wysłał.

To byłby fajny "enhancment", coś jak refresh przy opcji download . W sensie że korzysta z tego pliku rejestru.

na marginesie na środowisku testowym jest tak że jak wyślesz drugi raz taką samą fakturę (nawet z taką samą datą wysyłki) to systemowi to nie przeszkadza i w KSeF pojawia się duplikat. pytałem ich o to ale mi nie odpisali.

To jest ten "bałagan" o którym pisałem!

zastanawiałem się też czy warto dorobić jakieś pseudo GUI (myślałem o svelte) do programu ale brutalnie mówiąc mam wrażenie że program jest na tyle mało używany że nie ma to sensu :D i wolę skupić się na logowaniu i wyczyszczeniu kodu.

Dla mnie niepotrzebne, zastanawiam się czy crona nie użyć do wysyłki i pobierania, lepiej skupić się na kodzie. :)

@toudi
Copy link
Owner

toudi commented Dec 21, 2023

@kuncy7 czy ten ticket można uznać za rozwiązany ?

@kuncy7
Copy link
Author

kuncy7 commented Dec 21, 2023

Tak, też zamykam.

@kuncy7 kuncy7 closed this as completed Dec 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants