Czy jest jakaś łatwy sposób usunięcia wszystkich znaków "-", ale tylko z linii zaczynających się od konkretnego ciągu znaków? Chodzi mi o plik JPK, który nie może mieć myślników w NIPach.
Wszystkie linie z NIPem zaczynają się od <tns:NrKontrahenta>.
Program musiałby odnaleźć te linie, a następnie usunąć z nich myślniki, o ile takie występują.
Myślałem, że w Notepad++ uda mi się to zrobić, ale najwyraźniej nie potrafię.
Może jakieś inne edytory tekstowe sobie z tym bez problemu poradzą?
nic ci to nie da, plik JPK ma do tego, że po wygenerowaniu już nic w nim nie zmienisz, bo US z miejsca go odrzuci, wraz z generowanie pliku generowany jest "specjalny ciąg cyfr" inaczej suma kontrolna pliku na podstawie danych z dokumentu, jak usuniesz myślniki to suma się zmieni i US go odrzuci
nic ci to nie da, plik JPK ma do tego, że po wygenerowaniu już nic w nim nie zmienisz, bo US z miejsca go odrzuci, wraz z generowanie pliku generowany jest "specjalny ciąg cyfr" inaczej suma kontrolna pliku na podstawie danych z dokumentu, jak usuniesz myślniki to suma się zmieni i US go odrzuci
Hmm.
W którym momencie/miejscu jest generowana suma kontrolna i skąd US wie jaka jest ta właściwa?
W sensie to jest zapisane gdzieś w XMLu jako tekst? Pierwsza interakcja US z ma przecież miejsce dopiero po przesłaniu pliku.
Patrząc tutaj https://jpk.info.pl/wysylka-jpk/bledy-upo-plik-jpk/. Rzeczywiście jest błąd sumy kontrolnej, ale to jest zupełnie inna suma niż ta, o której mówisz, bo po prostu dotyczy sumowania kwot w JPK.
Z twojej wypowiedzi zrozumiałem że JPK miałby sprawdzać sumy kontrolne typu CRC32 czy MD5, tylko nie bardzo wiem jak miałby to weryfikować.
A wracając do tematu, jak to najłatwiej zrobić, pomijając czy US to łyknie czy nie?
Zapewne używając regex, wyrażenie regularne. Wydaje mi się, że notepad++ ma taką opcję.
Ma (nie, ze sie nauczylem jak obslugiwac, ale raz mi ktos powiedzial co mam zrobic). Jednakze, jezeli jest jak mowi A_wildwolf_A to sprawa sie komplikuje.
Właśnie o tym czytam, tylko niewiele z tego wynika.
Trzeba będzie trochę pogłówkować :(
Są fajne narzędzia online do debugowania tych wyrażeń, ja się nigdy tego dobrze się nie nauczyłem. Te gotówce fajnie na żywo pokazują, czy wyrażenie działa prawidłowo.
Ale zaraz, ten myślnik jest tu czy tu:
a) <tns:NrKontrahenta>-12345</tns:NrKontrahenta>
b) <tns:-NrKontrahenta>12345</tns:NrKontrahenta>
(Ja zrozumiałem że opcja a)
Regex do znalezienia konkretnych linii to będzie takie cudo:
^<tns:\S1,15>-\d1,15<\/tns:\S1,15>$ (gdzie 1,15 wyznacza min-max ilość znaków)
Ale to się nie bardzo przyda, bo w Notepad++ nie da się (albo ja nie wiem jak) podmienić dane wyrażenia regularnego tak żeby nie zrobił burdelu.
Nie prościej byłoby zrobić:
Find in files: >-
Replace with >
A później po prostu sprawdzić na szybko w aplikacji do porównania zmian (np. diffchecker) czy nie zrobiło to jakichś kwiatków tam gdzie nie powinno - ale nie sądzę że zrobi, bo połączenia znaków ">-" czy ":-" (jeżeli opcja B jest właściwa) raczej nie widuje się na co dzień.
Ale jak rzeczywiście JPK tworzy checksum to plik może się wykrzaczyć po takich zmianach na etapie weryfikacji.
Masz plik w którym jest wiele linii <tns:NrKontrahenta>nrNIP</tns:NrKontrahenta>
czyli np w niektórych jest
<tns:NrKontrahenta>123457890</tns:NrKontrahenta>
a w niektórych
<tns:NrKontrahenta>123-45-67-890</tns:NrKontrahenta>
a jeszcze w niektórych
<tns:NrKontrahenta>12-34-567-890</tns:NrKontrahenta>
Chodzi o to żeby z tych linii usunął myślniki.
Nie mogę usunąć wszystkich myślników, bo w innych liniach też są, ale akurat tam są potrzebne, bo np daty mają format 01-01-2020.
Po prostu w JPK NIPy nie mogą mieć myślników.
I JPK nie tworzy żadnych checksumów, jestem pewny na 99% (tzn na tym etapie nie tworzy)
Tak na szybko:
Notepad++, CTRL+H, zaznacz na dole w okienku "Wyrażenia regularne"
Szukany tekst: (<tns:NrKontrahenta>\d;;2,3;;)-(\d;;2,3;;)-(\d;;2,3;;)-(\d;;2,3;;</tns:NrKontrahenta>)
Zamień na: $1$2$3$4
https://i.imgur.com/G110i1k.png tutaj podgląd.
Powinno działać na takie: https://i.imgur.com/UEtVBkE.png
Edit: forum tutaj zmienia nawiasy klamrowe na jakieś znaczki. Musisz to zmienić przed wklejeniem https://pastebin.com/nQMkLuEP
W skrócie działa to tak, że łapiesz grupy w nawiasy () i potem się do nich odnosisz jako $1$2$3$4 Z nawiasów są wykluczone myślniki ;D Barbarzyńsko, ale ja tylko tak regexy robię :P
Wielkie dzięki xiver jak tylko będę miał trochę wolnego czasu to nad tym siądę i potestuję.
No trochę mnie te JPK męczą, bo różne przerabiałem, ale ostatnio większość hula bez cudowania i kombinowania ;D
https://i.imgur.com/yGDJ3br.png
A weź mnie nie załamuj.
My używamy programów WAPRO od Asseco i wydawałoby się, że tak wielka firma nie powinna mieć problemów z tak banalnymi zagadnieniami, a burdel jest niesamowity.
Jeszcze w listopadzie dało się wygenerować plik bez myślników, ale coś pokombinowali i obecnie się nie da. Znają problem i pracują nad rozwiązaniem, ale czy się wyrobią?
A co US obchodzą twoje problemy techniczne? Ręce opadają.
Asseco słynie z "niezawodnego i nowoczesnego" softu. Szczególnie w przetargach publicznych ;)
Na linuksie:
sed -i '/tns/s/-//g' nazwapliku.xml
powinno działać. Na wszelki wypadek zrób kopię pliku, bo ta komenda podmieni dane bezpośrednio w pliku źródłowym.
Działa!
Jeszcze raz wielkie dzięki.
[edit]
Już nawet zrozumiałem co zrobiłeś
Twoje całe zastępowanie opiera się na założeniu,
że NIP składa się albo z 2, albo z 3 cyfrowych bloków, przedzielonych 3 myślnikami, inaczej ciąg nie zostanie odnaleziony.
W sumie wydaje się to założeniem bezpiecznym i powinno wystarczyć.
Pokombinuję jeszcze tak sam dla siebie :)