Niepoprawna zawartość generowanego pliku XML - co jest źle?

0

Witam serdecznie. Chyba mam za mało wiedzy, a nie mogę ogarnąć do końca tematu. Chodzi o tworzenie JPK_VAT.
Schemat ze strony MF dołączyłem do swojego programu:
Schemat_JPK_VAT2_v10.pas
Mój kod wygląda jak niżej:
tu.pas
Otrzymuję plik XML:

<?xml version="1.0" encoding="UTF-8"?>

-<JPK xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/" xmlns="http://jpk.mf.gov.pl/wzor/2016/10/26/10261/">


-<Naglowek>

<KodFormularza wersjaSchemy="1-0" kodSystemowy="JPK_VAT (2)">JPK_VAT</KodFormularza>

<WariantFormularza>2</WariantFormularza>

<CelZlozenia>1</CelZlozenia>

<DataWytworzeniaJPK>2017-03-26T16:09:12</DataWytworzeniaJPK>

<DataOd>2017-03-01</DataOd>

<DataDo>2017-03-31</DataDo>

<DomyslnyKodWaluty>PLN</DomyslnyKodWaluty>

<KodUrzedu>0203</KodUrzedu>

</Naglowek>


-<Podmiot1>


-<IdentyfikatorPodmiotu>

<NIP>123456789</NIP>

<PelnaNazwa>Moja nazwa</PelnaNazwa>

<REGON>Mój REGON</REGON>

</IdentyfikatorPodmiotu>


-<AdresPodmiotu>

<KodKraju>PL</KodKraju>

<Wojewodztwo>Lubelskie</Wojewodztwo>

<Powiat>Puławy</Powiat>

<Gmina>Puławy</Gmina>

<Ulica>ul. Lubelska 16</Ulica>

<NrDomu>16</NrDomu>

<NrLokalu>2</NrLokalu>

<Miejscowosc>Puławy</Miejscowosc>

<KodPocztowy>24-100</KodPocztowy>

<Poczta>Puławy</Poczta>

</AdresPodmiotu>

</Podmiot1>


-<SprzedazWiersz typ="G">

<LpSprzedazy>1</LpSprzedazy>

<NrKontrahenta>9460009303</NrKontrahenta>

<NazwaKontrahenta>Kontrahent 1</NazwaKontrahenta>

<AdresKontrahenta>Końskowola, ul. Małpi Gaj 2</AdresKontrahenta>

<DowodSprzedazy>1</DowodSprzedazy>

<DataWystawienia>2017-03-26</DataWystawienia>

<DataSprzedazy>2017-03-26</DataSprzedazy>

<K_19>100.00</K_19>

<K_20>23.00</K_20>

</SprzedazWiersz>


-<SprzedazWiersz typ="G">

<LpSprzedazy>2</LpSprzedazy>

<NrKontrahenta>9460009303</NrKontrahenta>

<NazwaKontrahenta>Kontrahent 2</NazwaKontrahenta>

<AdresKontrahenta>Końskowola, ul. Małpi Gaj 4</AdresKontrahenta>

<DowodSprzedazy>2</DowodSprzedazy>

<DataWystawienia>2017-03-26</DataWystawienia>

<DataSprzedazy>2017-03-26</DataSprzedazy>

<K_19>100.00</K_19>

<K_20>23.00</K_20>

</SprzedazWiersz>


-<SprzedazWiersz typ="G">

<LpSprzedazy>3</LpSprzedazy>

<NrKontrahenta>9460009303</NrKontrahenta>

<NazwaKontrahenta>Kontrahent 3</NazwaKontrahenta>

<AdresKontrahenta>Końskowola, ul. Małpi Gaj 6</AdresKontrahenta>

<DowodSprzedazy>3</DowodSprzedazy>

<DataWystawienia>2017-03-26</DataWystawienia>

<DataSprzedazy>2017-03-26</DataSprzedazy>

<K_19>100.00</K_19>

<K_20>23.00</K_20>

</SprzedazWiersz>


-<SprzedazCtrl>

<LiczbaWierszySprzedazy>3</LiczbaWierszySprzedazy>

<PodatekNalezny>1234.56</PodatekNalezny>

</SprzedazCtrl>


-<ZakupWiersz typ="G">

<LpZakupu>1</LpZakupu>

<NrDostawcy>7160011045</NrDostawcy>

<NazwaDostawcy>Dostawca 1</NazwaDostawcy>

<AdresDostawcy>Wąchock, ul. Małpi Gaj 2</AdresDostawcy>

<DowodZakupu>1</DowodZakupu>

<DataZakupu>2017-03-26</DataZakupu>

<DataWplywu>2017-03-26</DataWplywu>

<K_43>100.24</K_43>

<K_44>23.06</K_44>

</ZakupWiersz>


-<ZakupCtrl>

<LiczbaWierszyZakupow>1</LiczbaWierszyZakupow>

<PodatekNaliczony>123.90</PodatekNaliczony>

</ZakupCtrl>

</JPK>

a powinienem:

<?xml version="1.0" encoding="UTF-8"?>

-<JPK xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/" xmlns="http://jpk.mf.gov.pl/wzor/2016/10/26/10261/">


-<Naglowek>

<KodFormularza wersjaSchemy="1-0" kodSystemowy="JPK_VAT (2)">JPK_VAT</KodFormularza>

<WariantFormularza>2</WariantFormularza>

<CelZlozenia>1</CelZlozenia>

<DataWytworzeniaJPK>2017-03-26T16:13:51</DataWytworzeniaJPK>

<DataOd>2017-03-01</DataOd>

<DataDo>2017-03-31</DataDo>

<DomyslnyKodWaluty>PLN</DomyslnyKodWaluty>

<KodUrzedu>0203</KodUrzedu>

</Naglowek>


-<Podmiot1>


-<IdentyfikatorPodmiotu>

<etd:NIP>1234567890</etd:NIP>

<etd:PelnaNazwa>Moja nazwa</etd:PelnaNazwa>

<etd:REGON>123456789</etd:REGON>

</IdentyfikatorPodmiotu>


-<AdresPodmiotu>

<KodKraju>PL</KodKraju>

<Wojewodztwo>Lubelskie</Wojewodztwo>

<Powiat>Puławy</Powiat>

<Gmina>Puławy</Gmina>

<Ulica>ul. Lubelska 16</Ulica>

<NrDomu>16</NrDomu>

<NrLokalu>2</NrLokalu>

<Miejscowosc>Puławy</Miejscowosc>

<KodPocztowy>24-100</KodPocztowy>

<Poczta>Puławy</Poczta>

</AdresPodmiotu>

</Podmiot1>


-<SprzedazWiersz typ="G">

<LpSprzedazy>1</LpSprzedazy>

<NrKontrahenta>9460009303</NrKontrahenta>

<NazwaKontrahenta>Kontrahent 1</NazwaKontrahenta>

<AdresKontrahenta>Końskowola, ul. Małpi Gaj 2</AdresKontrahenta>

<DowodSprzedazy>1</DowodSprzedazy>

<DataWystawienia>2017-03-26</DataWystawienia>

<DataSprzedazy>2017-03-26</DataSprzedazy>

<K_19>100</K_19>

<K_20>23</K_20>

</SprzedazWiersz>


-<SprzedazWiersz typ="G">

<LpSprzedazy>2</LpSprzedazy>

<NrKontrahenta>9460009303</NrKontrahenta>

<NazwaKontrahenta>Kontrahent 2</NazwaKontrahenta>

<AdresKontrahenta>Końskowola, ul. Małpi Gaj 4</AdresKontrahenta>

<DowodSprzedazy>2</DowodSprzedazy>

<DataWystawienia>2017-03-26</DataWystawienia>

<DataSprzedazy>2017-03-26</DataSprzedazy>

<K_19>100</K_19>

<K_20>23</K_20>

</SprzedazWiersz>


-<SprzedazWiersz typ="G">

<LpSprzedazy>3</LpSprzedazy>

<NrKontrahenta>9460009303</NrKontrahenta>

<NazwaKontrahenta>Kontrahent 3</NazwaKontrahenta>

<AdresKontrahenta>Końskowola, ul. Małpi Gaj 6</AdresKontrahenta>

<DowodSprzedazy>3</DowodSprzedazy>

<DataWystawienia>2017-03-26</DataWystawienia>

<DataSprzedazy>2017-03-26</DataSprzedazy>

<K_19>100</K_19>

<K_20>23</K_20>

</SprzedazWiersz>


-<SprzedazCtrl>

<LiczbaWierszySprzedazy>3</LiczbaWierszySprzedazy>

<PodatekNalezny>69</PodatekNalezny>

</SprzedazCtrl>


-<ZakupWiersz typ="G">

<LpZakupu>1</LpZakupu>

<NrDostawcy>7160011045</NrDostawcy>

<NazwaDostawcy>Dostawca 1</NazwaDostawcy>

<AdresDostawcy>Wąchock, ul. Małpi Gaj 2</AdresDostawcy>

<DowodZakupu>1</DowodZakupu>

<DataZakupu>2017-03-26</DataZakupu>

<DataWplywu>2017-03-26</DataWplywu>

<K_43>100.24</K_43>

<K_44>23.06</K_44>

</ZakupWiersz>


-<ZakupCtrl>

<LiczbaWierszyZakupow>1</LiczbaWierszyZakupow>

<PodatekNaliczony>23.06</PodatekNaliczony>

</ZakupCtrl>

</JPK>

Proszę o jakąś wskazówkę. Pozdrawiam.

0

Myślę że będzie prościej jak napiszesz na czym polega różnica w plikach nikt nie będzie sprawdzał linijka po linijce gdzie się różnią ani wklejał kodu do programu który ma możliwość wyszukania różnic.

0

Słusznie , przepraszam. Chodzi o wiersze 16,17,18, czyli

<etd:NIP>1234567890</etd:NIP>
 
<etd:PelnaNazwa>Moja nazwa</etd:PelnaNazwa>
 
<etd:REGON>123456789</etd:REGON>
 
A mi tworzy:
<NIP>1234567890</NIP>
 
<PelnaNazwa>Moja nazwa</PelnaNazwa>
 
<REGON>123456789</REGON>

Walidacja (na razie zewnętrznym programem) tutaj zgłasza mi błąd o nieoczekiwanej instrukcji.

0

W tym pliku Schemat_JPK_VAT2_v10.pas masz implementację klasy TXMLTIdentyfikatorOsobyNiefizycznej a tam w Get i Set odwołania typu:

function TXMLTIdentyfikatorOsobyNiefizycznej.Get_NIP: WideString;
begin
  Result := ChildNodes['NIP'].Text;
end;

procedure TXMLTIdentyfikatorOsobyNiefizycznej.Set_NIP(Value: WideString);
begin
  ChildNodes['NIP'].NodeValue := Value;
end;

zamiast:

function TXMLTIdentyfikatorOsobyNiefizycznej.Get_NIP: WideString;
begin
  Result := ChildNodes['etd:NIP'].Text;
end;

procedure TXMLTIdentyfikatorOsobyNiefizycznej.Set_NIP(Value: WideString);
begin
  ChildNodes['etd:NIP'].NodeValue := Value;
end;

Oczywiście to tylko niesprawdzone przypuszczenie że to jest źle ale coś mi się wydaje że mam rację (oczywiście przy pelnanazwa i regon podobnie musisz zmienić) .

0

Rzeczywiście, zmieniłem na razie sam NIP na etd:NIP i nowoutworzony plik przeszedł walidację. Dzięki bardzo za sugestię. Później zmienię resztę i dam znać, czy przyniosło efekt. Pozdrawiam i dziękuję.

Jeszcze spytam o jedno kAzek. Jak podglądam plik XML jako tekstowy, to mam wszystko ciurkiem. Jak wstawia się przejścia do nowej linii, ewentualnie jakieś tabulatory, aby ładnie sformatować?

0

Raczej zależy w czym podglądasz ten plik. W standardowym Notatniku z Windows pewnie masz jak piszesz ale użyj Notepad++ a z pewnością wszystko będzie sformatowane (a nawet kolorowanie składni).

0

aby uzyskać "wcięcia" i znaczniki końca wiersza a tym samym formatownie XML'a ustaw:

XMLDocument.Options := XMLDocument.Options + [doNodeAutoIndent];
0

Serdeczne dzięki za poradę.

1

napiszę z doświadczenia - przerobione generowanie JPK praktycznie wszystkich poza KPiR, generowane pliki zarówno po kilka MB jak i kilkaset MB.

Olej XMLDocument póki możesz. Pliki wynikowe są na tyle proste, że tworzenie ich "ręcznie" jest banalne a jest znacznie szybsze.

0

Teraz, jak mam trochę więcej wiedzy na ten temat, to przyznaję rację. Lepiej chyba tworzyć samemu. Przy okazji jeno pytanie. Raporty dobowe fiskalne ewidencjonować codziennie, czy raz na podstawie raportu miesięcznego, i jak to tytułować?

0

Raporty dobowe fiskalne ewidencjonować codziennie, czy raz na podstawie raportu miesięcznego

pytanie dotyczy sposobu księgowania, to problem "księgowy" a nie "programistyczny" i tym samym wykracza poza tematyczny zakres tego forum ..
napisz na priv

1 użytkowników online, w tym zalogowanych: 0, gości: 1