toudi / ksef Goto Github PK
View Code? Open in Web Editor NEWprogram do generowania i wysyłki efaktur (Krajowy System eFaktur)
Home Page: http://ksef.po-godzinach.info
program do generowania i wysyłki efaktur (Krajowy System eFaktur)
Home Page: http://ksef.po-godzinach.info
Na jakiej licencji udostępniany jest kod?
Dzień dobry,
Wysyłam fakturę do KSeF przez:
ksef upload -t -i -p ms -token 2CFBB.....
Potem chciałbym sprawdzić status:
ksef status -p ms\registry.yaml
I otrzymuję
błąd wykonania -p:
unable to download UPO: unexpected UPO processing status: 310 != 200
wydaje mi się, że jeszcze kilka dni temu działało, sprawdziłem też na poprzedniej działającej u mnie wersji programu ksef (0.1.23) i też nie działa. Coś zmienili w KSeF, czy ja coś robię nie tak?
rozmawiałem dzisiaj z księgowym i podsunął mi pomysł na funkcjonalność. chodzi o to, że kiedy otrzymuje on od klientów faktury to potrzebuje czegoś w rodzaju mapowania pozycji na rodzaj kosztu. KSeF nie daje takiej możliwości, w szczególności jeśli idzie o faktury kosztowe.
potrafię sobie wyobrazić kilka rozwiązań:
1/ w pliku rejestru podajemy mapę adnotacji przy obiekcie faktury
2/ jeśli faktury są powtarzalne - trzymamy osobny plik z mapowaniem np. kodu towaru lub jego opisu na informację czytelną dla księgowych
Pozostaje pytanie jak to nanieść na fakturę.. musiałbym albo przegryźć się przez specyfikację PDF od Adobe albo pobrać fakturę, wyedytować ją (np. w evince), zapisać do nowego pliku i zrobić diffa żeby zobaczyć w jaki sposób nanieść adnotacje
na środowisku "test" - tylko walidacja długości
na środowisku produkcyjnym - walidacja z wagami i modulo 11
Przepraszam że tak marudzę, ale sprawdzam wszystkie potrzebne mi opcje.
O ile ksef status -p KSeF/out/registry.yaml
działa prawidłowo,
to już komenda: ksef status -p KSeF/out/registry.yaml -o KSeF/UPO
kończy się tak:
ksef status -p KSeF/out/registry.yaml -o KSeF/UPO
request URL: https://ksef-test.mf.gov.pl/api/common/Status/20231219-SE-E554A4EEA0-84C548A5FE-F4
error running status:
unable to download UPO: unable to create UPO PDF file: open KSeF/UPO: is a directory
Jak podam w opcji -o nazwę pliku to upo zapisuje się tam jako ten plik.
Myślałem że po "-o" powinien być katalog.
Fajny projekt, ale zakłada że system (linux) używa dbus i gnome-keyring.
Mam taki problem ze starszym sytemem i takim bez desktopa, np. czysty ubuntu server:
./ksef save-token -t -nip 9999999999 -token E71A51F77xxxxxxxxxxxxxxxxxxxxxxxxxxxx
error running save-token:
The name org.freedesktop.secrets was not provided by any .service files
Jest alternatywny sposób przechowywania tokena?
nie do końca jeszcze wiem jak się za to zabrać ale myślałem o składni w rodzaju:
./ksef generate-pdf -r plik-rejestru.yaml -i numer-faktury-lub-plik-xml -p plik-ekstraktora.js -tmpl szablon-html -o wyjscie.pdf
i teraz idea byłaby taka, że mógłbym dostarczyć powiedzmy "podstawowe" funkcjonalności parsera tj. funkcję która zwraca fakturę w postaci obiektu JS i zamienia te pola P_8, P_12 itd itd na mnemoniki, oprócz tego produkowałaby podsumowanie stawek VAT itd itd natomiast plik ekstraktora byłby po to, żeby każdy mógł sobie dodatkowo ze źródłowego XML wyekstraktować (np. przez XPath) te informacje których potrzebuje. alternatywą byłaby konwersja XML na obiekt javascriptowy aczkolwiek przez zastosowanie namespace'ów w XML nie wiem na ile byłoby to wykonalne.
nie mam pojęcia na ile taki zamysł ma sens, byłbym wdzięczny za podpowiedzi / dyskusję
wrzuciłem właśnie wersję 0.1.20-rc1. Dokumentacja która opisuje loggery i plik konfiguracyjny znajduje się tutaj: https://ksef.po-godzinach.info/content/logowanie.html
z racji późnej pory oznaczam to jako draft bo mógł mi się gdzieś palec omsknąć przy refaktoringu :)
w razie problemów proszę o zgłaszanie bugów.
opcja podobna do opcji -refresh
przy komendzie download
. chodzi o to, żeby program nie wysyłał wszystkich faktur z katalogu źródłowego a jedynie te których jeszcze nie wysłał. Jest to opcja przydatna wtedy, kiedy w kilku plikach wejściowych pojawi się błąd ale pozostałe wyślą się bez błędu. wtedy chcielibyśmy ponowić wysyłkę i wówczas nie możemy wysyłać ponownie wszystkich faktur bo stworzą się duplikaty.
jeśli dobrze rozumiem zamysł (nie czytałem jeszcze dokumentacji) to faktura najpierw musiałaby być wysłana do KSeF, wtedy dostaniemy jej numer referencyjny i wówczas można by przygotować XML'a do JPK; w wariancie optymistycznym po prostu wypchnąć fakturę do bramki JPK
myślałem o następującej idei - klient KSeF działa jako demon i nasłuchuje na pliki w określonym katalogu. jeśli plik się pojawi, wówczas klient nawiązuje sesję, przeprowadza wysyłkę i zrzuca UPO + faktury do innego katalogu. Zaletą takiego rozwiązania byłoby to że można by uruchamiać klienta na niezależnej maszynie i współdzielić katalogi do wymiany faktur przez np. udział samby.
Coś pozmieniali na bramce test, kiedyś działało:
ksef upload -t -i -p KSeF/out -token 43BF872C1A3E7DFF92CE8784329437227DFBFBF42C9DB77EF39153EA0A30C011
request URL: https://ksef-test.mf.gov.pl/api/online/Session/AuthorisationChallenge
error running upload:
cannot login to gateway: unexpected response code: 400 != 2xx or err: <nil>
Pewnie nip'u brakuje. Ciekawe jak to wcześniej działało?? Nieźle tam mają namieszane!
w kliencie webowym KSeF, kiedy dodajemy pozycję ze stawką "np" można wybrać dwa rodzaje - "w rozumieniu ustawy" oraz "z wyłączeniem ustawy" (albo jakoś podobnie). ma to o tyle znaczenie, że wartości sumują się do innego pola P_
Poniżej spreparowany plik VAT7M.xml
JPK_VAT.xml.zip
Czy to jest problem z bramką test, czy coś "oni" znowu pozmieniali??
ksef download-pdf -i '*' -p /u/firmatic/firmatic/KSeF/in/registry.yaml -token 2356E5A8DF63195FE4D95AB583F8D2D95D05959D996E7BF3E67E9483D9FB294B -xml
request: &{Method:GET URL:https://ksef-test.mf.gov.pl/api/online/Invoice/Get/5342134255-20240111-4C4984495458-9C Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Sessiontoken:[099b0d6141d0e5937e0c14b913c8a280b6451838df6500c72f2ad3adb6811db6]] 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:{}}}
błąd wykonania -i:
unable to download PDF: unable to perform download request: Post "/web/api/invoice/get-invoice-pdf-file?ksefReferenceNumber=5342134255-20240111-4C4984495458-9C": unsupported protocol scheme ""
Pobiera się jedna (pierwsza faktura?) w xml, bez klucza -xml
pdf (nawet jeden) się nie pobiera.
Podając konkretny numer xml się pobiera, pdf nie.
ksef download-pdf -i 'FVs-138/1/2021' -p /u/firmatic/firmatic/KSeF/in/registry.yaml -token 2356E5A8DF63195FE4D95AB583F8D2D95D05959D996E7BF3E67E9483D9FB294B
błąd wykonania -i:
unable to download PDF: unable to perform download request: Post "/web/api/invoice/get-invoice-pdf-file?ksefReferenceNumber=5342134255-20240111-26A1A80D6818-0E": unsupported protocol scheme ""
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??
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.