Tehnička specifikacija za spajanje putem asinkronih web servisa (stari način razmjene)
Ovaj tekst ima svrhu opisivanja preduvjeta, koje je nužno ispuniti, da bi se ostvarila razmjena podataka između Fine, Pošiljatelja i Primatelja zainteresiranih za razmjenu podataka putem web servisa u sustavu e-Račun za poslovne korisnike (B2B). Način razmjene između Fine i poslovnih korisnika izveden je iz dosadašnjih najboljih praksi, koje osiguravaju sigurnu isporuku i zadovoljavanje određene razine sigurnosti, odnosno zaštite prijenosa i kontrole nepovredivosti sadržaja.
Komunikacijski uvjeti
Razmjena podataka u sustavu e-Račun za poslovne korisnike između Fine i korisnika vrši se putem internetske mreže. U testnom periodu nužno je obaviti snimanje prometa na komunikacijskom vodu, te po potrebi dati prijedlog povećanja propusnosti. Prijedlog povećanja propusnosti dat će se nakon detaljne analize prometa i zaključka da postoji prekomjerno opterećenje voda. Fina i Korisnik dužni su definirati kontakt osobe za ostvarivanje komunikacije, svatko sa svoje strane.
Koraci za ostvarivanje komunikacije
Korisnik koji želi slati i/ili primati račune u elektroničkom obliku mora biti registriran u sustav e-Račun za poslovne subjekte (B2B). Procedura prijave u sustav e-Račun za poslovne subjekte opisan je na stranici http://www.fina.hr/e-racun.
Da bi se obavila uspješna razmjena podataka, potrebno je poštivati propisane korake, jer u suprotnom, razmjena podataka između Fine i Korisnika neće biti moguća.
Izrada Web servisa
Fina i Korisnik, svatko sa svoje strane dužni su izraditi Web servis za razmjenu podataka, prema standardiziranoj XML shemi.
Razmjena informacija
Kontakt osobe će zatim razmijeniti podatke o poslužiteljima (testni, produkcijski, nazivi, IP adrese), na koje se pristupa od strane Fine, kao i od strane Korisnika. Jednako tako, definirat će se komunikacijski port (SSL), preko kojeg se dolazi do Web servisa od Fine prema Korisniku i obrnuto.
Osiguravanje zaštite prijenosnog puta
Zaštita prijenosnog puta ostvaruje se pomoću SSL-a (Secure Sockets Layer). Za potrebe testne razmjene podataka, Korisnik dobavlja DEMO certifikat od Fininog RDC-a (Registra za digitalne certifikate). Za potrebe produkcije Korisnik dobavlja produkcijski SSL certifikat od strane Fininog, RDC-a (Registra za digitalne certifikate). Procedure i obrasci za dobavu certifikata nalaze se na stranici http://rdc.fina.hr.
Osiguravanje zaštite integriteta podataka u prijenosu
Zaštita integriteta podataka ostvaruje se pomoću digitalnog potpisa SOAP poruke. Digitalni potpis SOAP poruke izvodi se pomoću aplikacijskog certifikata. Fina i Korisnik su dužni izgraditi mehanizam za verifikaciju potpisane poruke. Za potrebe testa Korisnik dobavlja aplikacijski DEMO certifikat od Fininog RDC-a (Registra za digitalne certifikate). Procedure i obrasci za dobavu certifikata nalaze se na stranici http://rdc.fina.hr.
Koncept razmjene podataka
Registrirani Korisnici (poslovni subjekti s pravom slanja e-računa) šalju pojedinačno izlazne račune na web servis na strani Fine po standardiziranoj XML shemi. Fina radi validaciju potpisa SOAP poruke, te započinje obradu izlaznog računa. Nakon uspješne obrade Fina generira poruku obrade izlaznog računa koju šalje na Korisnikov web servis.
Registriranim Korisnicima (poslovni subjekti s pravom primanja e-računa) se putem web servisa na Korisnikovoj strani šalje ulazni račun po standardiziranoj XML shemi. Korisnik obrađuje poruku s ulaznim računom u svom sustavu. Ovisno o promjenama statusa ulaznog računa u sustavu Korisnika, Korisnikov sustav šalje poruku na web servis Fine o promjeni statusa ulaznog računa. Paralelno s primanjem promjene statusa ulaznog računa, Fina šalje Pošiljatelju poruku o promjeni statusa izlaznog računa u sustav Pošiljatelja.
Slijede osnovne postavke koncepta:
- Fina će izraditi web servis sa dvije metode (metoda za slanje izlaznih e-računa (sendOutgoingInvoice) i metoda za slanje promjene statusa ulaznih računa (sendIncomingInvoiceStatus))
- Pošiljatelj e-računa će izraditi web servis s dvije metode:
- Primanje rezultata obrade izlaznog računa (receiveOutgoingInvoiceProcessing)
- Primanje promjene statusa izlaznog računa (receiveOutgoingInvoiceStatus)
- Primatelj će izraditi web servis s jednom metodom:
- Primanje ulaznog računa (receiveIncomingInvoice)
- Prilikom poziva web servisa Korisnika, te Fininog uspostavljat će se SSL.
- SOAP poruke će se potpisivati.
- Za kriptiranje kanala i potpisivanje poruke će se koristiti digitalni certifikati Fine.
- Za svaku SOAP poruku postojat će potvrdna SOAP poruka (acknowledgement message) koja će se potpisivati.
Slanje izlaznog računa
Primanje rezultata obrade izlaznog računa
Primanje ulaznog računa
Slanje promjene statusa ulaznog računa
Primanje promjene statusa izlaznog računa
Kreiranje SOAP poruka
Sve poruke koje se razmjenjuju web servisom su identičnog osnovnog izgleda. Sastoje se od zaglavlja (HeaderFinancialInstitution), podataka (Data), i slobodnog polja (##any).
Podaci (Data) je definiran za svaku poruku posebno i unutar elementa se nalazi XML struktura različita ovisno o poruci. Poruke koje sadrže samostalne xml strukture (npr. xml e-računa) se ugrađuju u „omotnice” (npr. InvoiceEnvelope) tipa base64binary u kojem se nalazi originalnixml encodiran u Base64.
Web servis za slanje izlaznog računa i slanje promjene statusa ulaznog računa na strani Fine
Pošiljatelj kreira SOAP poruku za slanje izlaznog računa te poziva web servis na strani Fine. Fina sinkrono odgovara na poruku i asinkrono kreće u obradu SOAP poruke.
Elementi SendOutgoingInvoiceMsg poruke (metoda sendOutgoingInvoice):
- Header
- MessageID
- SupplierID
- MessageType
- 101 – slanje izlaznog računa
- MessageAttributes – atribut (ili atributi odvojeni delimeterom). Za ovu vrstu poruke atribut je identifikator računa u sustavu Pošiljatelja
- Data
- OutgoingInvoiceEnvelope
- SupplierInvoiceID – Identifikator računa u sustavu Pošiljatelja
- BuyerID – Identifikator Primatelja računa u sustavu Fine
- InvoiceEnvelope – Omotač pojedinačnog računa, ili
- CreditNoteEnvelope – Omotač odobrenja, ili
- DebitNoteEnvelope – Omotač terećenja, ili
- ReminderEnvelope – Omotač opomene
- UtilityStatementEnevelope – Omotač specifikacije (opcionalno)
- AttachedDocumentEnvelope – Omotač privitaka (opcionalno)
- Signature – Potpis(opcionalno)
- OutgoingInvoiceEnvelope
Poruka SendOutgoingInvoiceMsg
Elementi SendIncomingInvoiceStatusMsg poruke (metoda sendIncomingInvoiceStatus):
- Header
- MessageID
- BuyerID
- MessageType
- 107 – Status ulaznog računa
- MessageAttributes – atribut (ili atributi odvojeni delimeterom). Za ovu vrstu poruku atribut je identifikator računa u sustavu Fine
- Data
- InvoiceStatus
- InvoiceID – Identifikator računa u sustavu e-Račun
- InvoiceStatusCode – Šifra statusa u sustavu e-Račun
- InvoiceStatusText – (opcionalno) opis šifre statusa
- InvoiceStatus
Poruka SendIncomingInvoiceStatusMsg
Web servis za primanje rezultata obrade izlaznog računa i primanje promjene statusa izlaznog računa
Web servis se nalazi na strani Pošiljatelja računa te mora implementirati sljedeće metode s opisima SOAP poruka:
Elementi ReceiveOutgoingInvoiceProcessingMsg poruke (metoda receiveOutgoingInvoiceProcessing):
- Header
- MessageID
- SupplierID
- MessageType
- 103 – Rezultat obrade izlaznog računa
- MessageAttributes – atribut (ili atributi odvojeni delimeterom). Za ovaj tip poruke MessageAttribute je identifikator izlaznog računa u sustavu Pošiljatelja
- Data
- OutgoingInvoiceProcessing
- CorrectOutgoingInvoice – Ispravno obrađen izlazni račun
- SupplierInvoiceID – Identifikator računa u sustavu Pošiljatelja
- InvoiceID – Identifikator računa u sustavu e-Račun
- InvoiceTimestamp – Vrijeme zaprimanje računa u sustavili
- IncorrectOutgoingInvoice – Neispravan izlazni račun
- SupplierInvoiceID – Identifikator računa u sustavu Pošiljatelja
- ErrorCode – Šifra greške (tablica grešaka)
- ErrorMessage – (opcionalno) tekstualni opis greške
- CorrectOutgoingInvoice – Ispravno obrađen izlazni račun
- OutgoingInvoiceProcessing
Poruka ReceiveOutgoingInvoiceProcessingMsg
Elementi ReceiveOutgoingInvoiceStatusMsg poruke (metoda receiveOutgoingInvoiceStatus):
- Header
- MessageID
- SupplierID
- MessageType
- 109 – Promjena statusa izlaznog računa
- MessageAttributes – atribut (ili atributi odvojeni delimeterom).
- Data
- InvoiceStatus
- InvoiceID – Identifikator računa u sustavu e-Račun
- InvoiceStatusCode – Šifra statusa računa
- InvoiceStatusText – (opcionalno) opis šifre statusa
- InvoiceStatus
Poruka ReceiveOutgoingInvoiceStatusMsg
Web servis za primanje ulaznih računa
Nakon uspješne obrade izlaznog računa poslanog od strane Pošiljatelja, sustav e-Račun šalje prema Primatelju ulazni račun. Web servis na strani Primatelja treba implementirati sljedeću metodu za primanje ulaznih računa s opisom SOAP poruke:
Elementi ReceiveIncomingInvoiceMsg poruke (metoda receiveIncomingInvoice):
- Header
- MessageID
- BuyerID
- MessageType
- 105 – primanje ulaznog e-računa
- MessageAttributes – atribut (ili atributi odvojeni delimeterom). Za ovaj tip poruke atribut je identifikator računa iz sustava e-Račun
- Data
- InvoiceID – Identifikator računa u sustavu e-Račun
- InvoiceEnvelope – Omotač ulaznog računaili
- CreditNoteEnvelope – Omotač odobrenjaili
- DebitNoteEnvelope – Omotač terećenjaili
- ReminderEnvelope – Omotač opomene
- UtilityStatementEnvelope – Omotač specifikacije (opcionalno)
- AttachedDocumentEnvelope – Omotač priloga računu (opcionalno)
- Signature – Potpis (opcionalno)
Poruka ReceiveIncomingInvoiceMsg
Sinkrone odgovorne SOAP poruke
Svaka SOAP poruka ima svoju sinkronu odgovornu poruku i sve su identične strukture:
Elementi odgovorne xxxAckMsg poruke (metoda sendOutgoingInvoice):
- MessageAck
- MessageID
- MessageAckID
- MessageType
- 102 – sinkroni odgovor na SendOutgoingInvoiceMsg
- 104 – sinkroni odgovor na ReceiveOutgoingInvoiceProcessingMsg
- 106 – sinkroni odgovor na ReceiveIncomingInvoiceMsg
- 108 – sinkroni odgovor na SendIncomingInvoiceStatusMsg
- 110 – sinkroni odgovor na ReceiveOutgoingInvoiceStatusMsg
- AckStatus – status odgovora
- ACCEPTEDili
- MSG_NOT_VALIDili
- SYSTEM_ERROR
- AckStatusCode – šifra statusa (tablica statusa)
- AckStatusText – (opcinalno) – Opis šifre statusa
Sinkrona odgovorna poruka xxxAckMsg
Opis statusa i grešaka u razmjeni
Prije puštanja na produkcijski sustav nužna je verifikacija uspješne razmjene podataka na testnim okruženjima Fine i Korisnika. Jednako tako potrebno je izvesti sistemske load testove razmjene podataka, kako bi se ispitala propusnost voda.
Slijedi tablica s opisima tipova poruka i odgovornih poruka:
Tip poruke | Opis | Poruka/metoda |
101 | Slanje izlaznog računa | SendOutgoingInvoiceMsg |
102 | Odgovor na slanje izlaznog računa | SendOutgoingInvoiceAckMsg |
103 | Primanje rezultata obrade izlaznog računa | ReceiveOutgoingInvoice ProcessingMsg |
104 | Odgovor na primanje rezultata obrade izlaznog računa | ReceiveOutgoingInvoice ProcessingAckMsg |
105 | Primanje ulaznog računa | ReceiveIncomingInvoiceMsg |
106 | Odgovor na primanje ulaznog računa | ReceiveIncomingInvoiceAckMsg |
107 | Slanje promjene statusa ulaznog računa | SendIncomingInvoiceStatusMsg |
108 | Odgovor na slanje promjene statusa ulaznog računa | SendIncomingInvoiceStatusAckMsg |
109 | Primanje promjene statusa izlaznog računa | ReceiveOutgoingInvoiceMsg |
110 | Odgovor na primanje promjene statusa izlaznog računa | ReceiveOutgoingInvoiceAckMsg |
Slijede tablice s opisima statusa odgovornih poruka za opisane web servise:
Na strani pošiljatelja (prima promjenu statusa)
AckStatus | AckStatusCode | AckStatusText | MessageType |
ACCEPTED | 10 | Poruka zaprimljena | 102, 106, 108, 110 |
MSG_NOT_VALID | 90 | XML poruke nije ispravan | 102, 106, 108, 110 |
MSG_NOT_VALID | 91 | Potpis poruke nije ispravan | 102, 106, 108, 110 |
SYSTEM_ERROR | 99 | Sistemska greška na strani web servisa + opis | 102, 106, 108, 110 |
Slijede tablice s opisima statusa izlaznih/ulaznih računa u razmjeni za opisane web servise:
Na strani pošiljatelja (prima promjenu statusa)
Status | Opis |
1 | Obavijest o plaćanju |
2 | Odbijen |
3 | Odobren (prihvaćen) |
4 | Neobrađen (automatski iz sustava e-račun) |
6 | Plaćen u Internet bankarstvu (automatski iz sustava e-račun) |
Na strani primatelja (šalje promjenu statusa)
Status | Opis |
1 | Obavijest o plaćanju |
2 | Odbijen |
3 | Odobren (prihvaćen) |
Slijedi tablica s opisima statusa grešaka u razmjeni za opisane web servise:
Šifra greške | Opis greške | Poruka |
151 | Identifikator poslovnog subjekta iz zaglavlja poruke nije definiran u sustavu e-Račun kao aktivni korisnik | Nepoznat ID poslovnog subjekta |
152 | Greška se javlja kada pošiljatelj poruke nema prava slati izlazne e-račune za identifikator pošiljatelja iz zaglavlja datoteke | Pošiljatelj nema prava slanja e-računa |
156 | Interna greška | Interna greška |
161 | Greška se javlja kada potpisnik poruke nema prava potpisa za izlazne e-račune za identifikator pošiljatelja iz zaglavlja poruke | Pošiljatelj nema prava potpisa poruke |
301 | Greška se javlja kada nije prošla kontrola valjanosti potpisa pojedinog e-računa unutar datoteke | Potpis e-računa nije valjan |
302 | Greška se javlja kada potpisnik e-računa unutar datoteke nema prava potpisa za izlazne e-račune za identifikator korisnika iz zaglavlja datoteke | Nemate prava potpisa za predani id pretinca |
303 | Identifikator pošiljatelja nije definiran u sustavu e-Račun kao aktivni korisnik | Nepoznati id pretinca |
304 | Greška se javlja kada identifikator primatelja iz omotača pojedinačnog računa (OutgoingInvoiceData->OutgoingInovice->BuyerID) nije uparen s OIB-om kupca | Nepostojeći oib primatelja |
305 | Greška se javlja kada identifikator pošiljatelja nije uparen s OIB-om pošiljatelja | Nepostojeći oib pošiljatelja |
306 | Greška se javlja nakon provjere jedinstvenosti broja računa | Neispravan broj računa |
307 | Greška ukoliko je „datum od“ u e-računu veći od „datuma do“ | Neispravan datum obračunskog perioda |
308 | Greška se javlja ukoliko je veličina priloga veća od dopuštene (3MB) | Nedopuštena veličina priloga |
309 | Greška se javlja ukoliko nije ispravan mail | Neispravan e-mail |
310 | Greška se javlja ukoliko je datum valute manji od današnjeg dana | Neispravan datum valute |
311 | Greška ukoliko je korišten nedopušteni specijalni znak | Nedozvoljen specijalni znak |
312 | Greška ukoliko postoji nedozvoljen broj stavki | Nedozvoljen broj stavki |
313 | Greška ukoliko je certifikat poništen | Certifikat poništen |
314 | Greška ukoliko certifikat ne vrijedi | Certifikat ne vrijedi (istekao rok uporabe ili još nije počeo) |
315 | Greška ukoliko certifikat ne pripada traženom izdavatelju certifikata (CA) | Certifikat ne pripada traženom izdavatelju (CA) |
318 | Greška ukoliko nije pronađen XML e-računa u datoteci | Nije pronađen e-račun |
319 | Greška ukoliko pretinac primatelja ne može primati e-račune po toj shemi | Pretinac ne može primati e-račun po odabranoj xml schemi |
320 | Greška se javlja ukoliko je napisana neispravna kategorija poreza | Neispravna kategorija poreza |
322 | Greška se javlja ako e-račun ne odgovara XML shemi e-računa | e-račun ne odgovara xml schemi |
323 | Greška se javlja ako je u XML elementu „Party-PartyLegalEntity-RegistrationName“ naziv dobavljača duži od 200 znakova | Dužina polja RegistrationName je veca od dozvoljene |
324 | Greška se javlja ako je u XML elementu „Party-PartyLegalEntity- CompanyID“ OIB duži od 13 znakova | Dužina polja CompanyID je veca od dozvoljene |
325 | Greška se javlja ako je u XML elementu „Party-PostalAddress- StreetName“ naziv ulice duži od 25 znakova | Dužina polja StreetName je veća od dozvoljene |
326 | Greška se javlja ako je u XML elementu „Party-PostalAddress- BuildingNumber“ kućni broj duži od 5 znakova | Dužina polja BuildingNumber je veća od dozvoljene |
327 | Greška se javlja ako je u XML elementu „Party-PostalAddress- CityName“ mjesto duži od 25 znakova | Dužina polja CityName je veća od dozvoljene |
328 | Greška se javlja ako je u XML elementu „Party-PostalAddress- PostalZone“ poštanski broj duži od 5 znakova | Dužina polja PostalZone je veća od dozvoljene |
329 | Greška se javlja ako je u XML elementu „Party-PostalAddress-AddressLine“ adresa duža od 64 znakova | Dužina polja AddressLine je veća od dozvoljene |
330 | Greška se javlja ako je u XML elementu „Party-PostalAddress-Country-IdentificationCode“ ISO identifikator države duži od 2 znaka | Dužina polja Country - IdentificationCode je veća od dozvoljene |
331 | Greška se javlja ako je u XML elementu „Party-PostalAddress-Country-Name“ naziv države duža od 64 znaka | Dužina polja Country - Name je veća od dozvoljene |
332 | Greška se javlja ako je u XML elementu „SellerContact-Name“ naziv kontakta duži od 25 znaka | Dužina polja SellerContact - Name je veća od dozvoljene |
333 | Greška se javlja ako je u XML elementu „SellerContact-Telephone“ telefon kontakta duži od 20 znaka | Dužina polja SellerContact - Telephone je veća od dozvoljene |
334 | Greška se javlja ako je u XML elementu „SellerContact-Telefax“ telefaks kontakta duži od 20 znakova | Dužina polja SellerContact - Telefax je veća od dozvoljene |
335 | Greška se javlja ako je u XML elementu „SellerContact- ElectronicMail“ email kontakta duži od 255 znakova | Dužina polja SellerContact - ElectronicMail je veća od dozvoljene |
336 | Greška se javlja ako je u XML elementu s referencama „ID“ ID duži od 13 znakova | Dužina polja OrderReference - ID je veća od dozvoljene |
337 | Greška se javlja ako je u XML elementu s referencama „IssueDate“ ID duži od 10 znakova | Dužina polja IssueDate je veća od dozvoljene |
338 | Greška se javlja ukoliko su identifikatori kupca i dobavljača isti | ID kupca i dobavljača ne smije biti isti |
339 | Greška se javlja ukoliko su postoci poreza na potrošnju različiti po stavkama, moraju biti isti | Porez na potrošnju mora biti isti za sve stavke |
340 | Greška se javlja ukoliko je korištena nepostojeća jedinica mjere | Neispravna jedinica mjere |
341 | Greška se javlja ukoliko je upisana kriva vrsta računa - InvoiceTypeCode | Neispravna vrsta računa |
342 | Greška se javlja ukoliko je element SellersItemIdentification-Id dužina veća od 20 znakova | Dužina polja SellersItemIdentification - Id je veća od dozvoljene |
343 | Greška se javlja ukoliko je element Item-Description dužina veća od 40 znakova | Dužina polja 'opis' je veća od dozvoljene |
344 | Greška se javlja ukoliko je element InvoiceLine-InvoicedQuantity manji od 0 i veći od 1000000000 | Veličina stavke InvoicedQuantity nije dozvoljena |
345 | Greška se javlja ukoliko je element Price-PriceAmount manja od 0 i veća od 1000000000 | Veličina stavke Price-PriceAmount nije dozvoljena |
346 | Greška se javlja ukoliko je element AllowanceCharge-MultiplierFactorNumeric manja od 0 i veća od 1 | Veličina stavke MultiplierFactorNumeric nije dozvoljena |
347 | Greška se javlja ukoliko je element Invoice-Note veći od 1024 znaka | Dužina polja Invoice - Note je veća od dozvoljene |
348 | Greška se javlja ukoliko je element PaymentMeans-InstructionNote veći od 105 znakova | Dužina polja InstructionNote je veća od dozvoljene |
349 | Greška se javlja ukoliko nije popunjeno mjesto izdavanja – ExtensionContent-InvoiceIssuePlace | InvoiceIssuePlace mora biti popunjeno |
350 | Greška se javlja ukoliko je pogrešan poredak ExtensionContenta | Krivi poredak ExtensionContent-a |
351 | Greška se javlja ukoliko je element DocumentCurrencyCode prazan | Polje DocumentCurrencyCode ne postoji |
352 | Greška se javlja ukoliko je element ExtensionContent-InvoiceIssuer duži od dozvoljenoe veličine od 1000 znakova | Dužina polja InvoiceIssuer je veća od dozvoljene |
353 | Greška se javlja ukoliko ne postoji niti jedan TaxTotal-TaxSubtotal u ukupnom porezu | Nije pronađen niti jedan TaxSubtotal u ukupnom porezu |
354 | Greška se javlja ukoliko je upisana nepostojeća kategorija poreza u elementu TaxSubtotal-TaxCategory | Neispravna kategorija ukupnog poreza |
355 | Greška se javlja ukoliko je element ExtensionContent-InvoiceIssuePlace veći od dozvoljenih 25 znakova | Dužina polja "mjesto" je veća od dozvoljene |
356 | Greška se javlja ukoliko je neispravan AttachedDocument | Neispravan prilog |
357 | Greška se javlja ukoliko datum nije unutar 100 godina od današnjeg datuma | Datum mora biti unutar 100 godina od današnjeg datuma |
358 | Greška se javlja ukoliko je element PaymentMeans-PaymentID popunjen neispravno | Neispravan model plaćanja |
359 | Greška se javlja ukoliko element BaseQuantity ima broj decimala veći od 3 | Nedozvoljen broj decimala u polju BaseQuantity |
360 | Greška se javlja ukoliko element PriceAmount ima broj decimala veći od 6 | Nedozvoljen broj decimala u polju PriceAmount |
361 | Greška se javlja ukoliko element LineExtensionAmount ima broj decimala veći od 2 | Nedozvoljen broj decimala u polju LineExtensionAmount |
362 | Greška se javlja ukoliko element MultiplierFactorNumeric ima broj decimala veći od 4 | Nedozvoljen broj decimala u polju MultiplierFactorNumeric |
363 | Greška se javlja ukoliko element PayableAmount ima broj decimala veći od 2 | Nedozvoljen broj decimala u polju PayableAmount |
364 | Greška se javlja ukoliko element MultiplierFactorNumeric u ukupnim rabatima ima broj decimala veći od 8 | Nedozvoljen broj decimala u polju MultiplierFactorNumeric kod rabata |
365 | Greška se javlja ukoliko element TaxAmount ima broj decimala veći od 2 u stavkama računa | Nedozvoljen broj decimala u polju TaxAmount u stavkama računa |
366 | Greška se javlja ukoliko element Percent u kategorijama poreza ima broj decimala veći od 2 u stavkama računa | Nedozvoljen broj decimala u polju Percent kod kategorije u stavkama računa |
367 | Greška se javlja ukoliko element Percent u kategorijama poreza ima broj decimala veći od 2 u ukupnom porezu | Nedozvoljen broj decimala u polju Percent kod kategorije u ukupnom porezu |
368 | Greška se javlja ukoliko element TaxableAmount u kategorijama poreza ima broj decimala veći od 2 u ukupnom porezu | Nedozvoljen broj decimala u polju TaxableAmount u ukupnom porezu |
369 | Greška se javlja ukoliko element TaxAmount ima broj decimala veći od 2 u ukupnom porezu | Nedozvoljen broj decimala u polju TaxAmount u ukupnom porezu |
370 | Greška se javlja ukoliko element TaxAxemptionReason ima dužinu polja veću od dozvoljenih 80 znakova | Dužina polja TaxAxemptionReason u stavkama računa je veća od dozvoljene |
371 | Greška se javlja ukoliko element SpecialTerms ima dužinu polja veću od dozvoljenih 5000 znakova | Dužina polja SpecialTerms u uvjetima isporuke je veća od dozvoljene |
372 | Greška se javlja ukoliko element SpecialTerms ima iznos polja manju od 0 i veću od 1000000000 | Veličina stavke BaseQuantity u stavkama računa nije dozvoljena |
373 | Greška se javlja ukoliko element LineExtensionAmount ima iznos polja manji od 0 i veći od 1000000000 | Veličina stavke LineExtensionAmount u stavkama računa nije dozvoljena |
374 | Greška se javlja ukoliko element PayableAmount ima iznos polja manji od 0.00 i veći od 1000000000000.00 | Veličina stavke PayableAmount u stavkama računa nije dozvoljena |
375 | Greška se javlja ukoliko element TaxableAmount ima broj decimala veći od 2 u stavkama računa | Nedozvoljen broj decimala u polju TaxableAmount u stavkama računa |
376 | Greška se javlja ukoliko element TaxableAmount ima iznos polja manju od 0 i veću od 1000000000 u stavkama računa | Veličina stavke TaxableAmount u stavkama računa nije dozvoljena |
377 | Greška se javlja ukoliko element TaxAmount ima iznos polja manju od 0 i veću od 1000000000 u stavkama računa | Veličina stavke TaxAmount u stavkama računa nije dozvoljena |
378 | Greška se javlja ukoliko element MultiplierFactorNumeric ima iznos polja manju od 0 i veću od 1 u rabatima | Veličina stavke MultiplierFactorNumeric kod rabata nije dozvoljena |
379 | Greška se javlja ukoliko element Amount ima iznos polja manju od 0 i veću od 1000000000 u rabatima | Veličina stavke Amount kod rabata nije dozvoljena |
380 | Greška se javlja ukoliko element TaxAmount ima iznos polja manju od 0 i veću od 1000000000 u rabatima | Veličina stavke TaxAmount kod rabata nije dozvoljena |
381 | Greška se javlja ukoliko element TaxableAmount ima iznos polja manju od 0 i veću od 1000000000 u ukupnom porezu | Veličina stavke TaxableAmount kod ukupnog poreza nije dozvoljena |
382 | Greška se javlja ukoliko element Percent ima iznos polja manju od 0 i veću od 100 u ukupnom porezu | Veličina stavke Percent kod ukupnog poreza nije dozvoljena |
383 | Greška se javlja ukoliko element PostalZone nije broj | Neispravno polje PostalZone |
384 | Greška se javlja ukoliko element Amount ima broj decimala veći od 2 u rabatima | Nedozvoljen broj decimala u polju Amount kod rabata |
385 | Greška se javlja ukoliko element DocumentType nije popunjen | Polje DocumentType kod priloga nije popunjeno |
386 | Greška se javlja ukoliko veličina elementa DocumentType više od dozvoljenih 50 znakova | Dužina polja DocumentType kod priloga je veća od dozvoljene |
387 | Greška se javlja ukoliko u elementu Attachment nedostaje element EmbeddedDocumentBinaryObject | AttachedDocument nije prema shemi, nedostaje element EmbeddedDocument BinaryObject |
388 | Greška se javlja ukoliko nema atributa Filename u elementu EmbeddedDocumentBinaryObject | Atribut Filename kod priloga ne postoji |
389 | Greška se javlja ukoliko veličina atributa Filename više od dozvoljenih 50 znakova | Dužina atributa Filename kod priloga je veća od dozvoljene |
390 | Greška se javlja ukoliko u elementu AttachedDocument nedostaje element Attachment | AttachedDocument nije prema shemi, nedostaje element Attachment |
391 | Greška se javlja ukoliko u elementu AttachedDocument nedostaje element AttachedDocument | AttachedDocument nije prema shemi, nedostaje element AttachedDocument |
392 | Greška se javlja ukoliko je dužina elementa ID u AttachedDocument veći od 50 znakova | Dužina polja ‘ID’ kod priloga je veća od dozvoljene |
393 | Greška se javlja ukoliko je neispravan broj dokumenta na koji se AttachedDocument referencira (ParentDocumentID) | Neispravan broj dokumenta u prilogu |
394 | Greška se javlja ukoliko je neispravan identifikator pošiljatelja (SenderID) | Neispravan pošiljatelj priloga |
395 | Greška se javlja ukoliko je neispravan identifikator naručitelja (ReceiverID) | Neispravan naručitelj priloga |
396 | Greška se javlja ukoliko ne postoji element ID u AttachedDocument | Broj (ID) priloga je obavezan |
397 | Greška se javlja ukoliko prilog nije po standardnoj UBL AttachedDocument shemi | Prilog nije po UBL - Attached Document schemi |
398 | Greška se javlja ukoliko nije upisan IBAN primatelja (ID) | Nepostojeći IBAN primatelja |
399 | Greška se javlja ukoliko nije upisan IBAN platitelja (ID) | Nepostojeći IBAN platitelja |
400 | Greška se javlja ukoliko je nispravno upisan IBAN primatelja | Neispravni IBAN primatelja |
401 | Greška se javlja ukoliko je nispravno upisan IBAN platitelja | Neispravni IBAN platitelja |
402 | Greška se javlja ukoliko ukupan iznos na razini stavke dokumenta nije ispravan (LineExtensionAmount) | Neispravan ukupan iznos na razini stavke dokumenta |
403 | Greška se javlja ukoliko iznos pojedinog poreza na razini stavke dokumenta nije ispravan (TaxAmount) | Neispravan iznos pojedinog poreza na razini stavke dokumenta |
404 | Greška se javlja ukoliko iznos ukupnog poreza na razini stavke dokumenta nije ispravan (TaxAmount) | Neispravan iznos ukupnog poreza stavke dokumenta |
405 | Greška se javlja ukoliko iznos ukupnog poreza na razini stavke dokumenta nije ispravan (TaxExclusiveAmount) | Neispravan ukupan iznos na razini cijelog dokumenta |
406 | Greška se javlja ukoliko iznos pojedinog poreza dokumenta nije ispravan (TaxAmount) | Neispravan iznos pojedinog poreza |
407 | Greška se javlja ukoliko iznos ukupnog poreza dokumenta nije ispravan (TaxAmount) | Neispravan iznos ukupnog poreza |
408 | Greška se javlja ukoliko iznos pojedine osnovice za porez dokumenta nije ispravan (TaxableAmount) | Neispravan ukupni iznos osnovice za porez za pojedinu poreznu stopu |
409 | Greška se javlja ukoliko ukupni iznos osnovice za porez dokumenta nije ispravan (TaxableAmount) | Neispravan ukupni iznos poreza za pojedinu poreznu stopu |
410 | Greška se javlja ukoliko ukupni iznos rabata dokumenta nije ispravan (Amount) | Neispravni iznosi ukupnog rabata |
411 | Greška se javlja ukoliko iznos osnovice za rabat dokumenta nije ispravan (BaseAmount) | Neispravan iznos osnovice za rabat |
412 | Greška se javlja ukoliko se u dokumentu nalaze nepostojeće porezne stope | U rekapitulaciji poreza se nalaze nepostojeće porezne stope |
413 | Greška se javlja ukoliko se u dokumentu nalaze nepostojeće porezne stope kod rabata | Nepostojeća porezna stopa kod ukupnog rabata |
414 | Greška se javlja ukoliko je veličina stavke BaseAmount veća od 1000000000000.00 ili manja od 0.00 | Veličina stavke ‘BaseAmount’ kod ukupnog rabata nije dozvoljena |
415 | Greška se javlja ukoliko je broj decimala u polju BaseAmount kod ukupnog rabata veći od 2 | Nedozvoljen broj decimala u polju ‘BaseAmount’ kod ukupnog rabata |
416 | Greška se javlja ukoliko je u odobrenju dužina polja ID veća od 20 | Dužina polja ‘Broj računa’ (ID) je veća od dozvoljene |
417 | Greška se javlja ukoliko je element InvoiceIssuer na pogrešnom mjestu unutar elementa UBLExtensions | Krivi poredak ExtensionContent-a. Memorandum mora biti na drugom mjestu |
418 | Greška se javlja ukoliko je element IssuerLogo na pogrešnom mjestu unutar elementa UBLExtensions | Krivi poredak ExtensionContent-a. Logo mora biti na trećem mjestu |
419 | Greška se javlja ukoliko je element AccountingDocumentLabel na pogrešnom mjestu unutar elementa UBLExtensions | Krivi poredak ExtensionContent-a. Vrsta računa mora biti na četvrtom mjestu |
420 | Greška se javlja ukoliko unutar elementa AccountingDocumentLabel nije upisan R1 ili R2 | Vrsta računa mora biti popunjena |
421 | Greška se javlja ukoliko su elementi unutar elementa UBLExtensions pogrešno poredani | Nedovoljan broj elemenata u ExtensionContent-u. ExtensionContent redom mora sadržavati elemente: 1. Mjesta izdavanja 2. Memoranduma 3. Logoa 4. Vrste računa 5. Potpisa |
422 | Greška se javlja ukoliko je element Percent kod rabata nije popunjen | Nepostojeći postotak poreza kod ukupnog rabata |
423 | Greška se javlja ukoliko je broj decimala u elementu DebitLineAmount u opomeni veći od 2 | Nedozvoljen broj decimala u polju ‘DebitLineAmount’ u stavkama opomene |
424 | Greška se javlja ukoliko je DebitLineAmount u opomeni veći od 1000000000 ili manji od 0 | Iznos duga u stavkama opomene nije dozvoljen |
425 | Greška se javlja ukoliko je broj decimala u CreditLineAmount u opomeni veći od 2 | Nedozvoljen broj decimala u polju ‘CreditLineAmount’ u stavkama opomene |
426 | Greška se javlja ukoliko je CreditLineAmount u opomeni veći od 1000000000 ili manji od 0 | Već plaćeni iznos u stavkama opomene nije dozvoljen |
427 | Greška se javlja ukoliko je broj decimala u elementu Amount u opomeni veći od 2 | Nedozvoljen broj decimala u polju ‘Amount’ u stavkama opomene |
428 | Greška se javlja ukoliko je Amount u opomeni veći od 1000000000 ili manji od 0 | Ukupni iznos u stavkama opomene nije dozvoljen |
429 | Greška se javlja ukoliko je element PaymentTerms veći od 1024 znaka | Dužina polja ‘uvjeti plaćanja’ je veća od dozvoljene |
430 | Greška se javlja ukoliko ne postoji ID referentnog dokumenta | Nedostaje ID dokumenta na koji se veže opomena |
431 | Greška se javlja ukoliko ne postoji IssueDate referentnog dokumenta | Nedostaje datum izdavanja dokumenta na koji se veže opomena |
432 | Greška se javlja ukoliko je element Amount pogrešno izračunat (DebitLineAmount - CreditLineAmount) | Neispravno ukupno dugovanje |
433 | Greška se javlja ukoliko je element Amount pogrešno izračunat na razini stavke (DebitLineAmount - CreditLineAmount) | Neispravan iznos preostalog duga na razini stavke |
434 | Greška se javlja ukoliko su elementi unutar elementa UBLExtensions pogrešno poredani | Nedovoljan broj elemenata u ExtensionContent-u. ExtensionContent redom mora sadržavati elemente: 1. Mjesta izdavanja 2. Memoranduma 3. Logoa 4. Potpisa |
435 | Greška se javlja ukoliko element Payer/ID sadrži nepostojeću oznaku države u IBAN-u | Nepostojeća oznaka države u IBAN-u platitelja |
436 | Greška se javlja ukoliko element Payee/ID sadrži nepostojeću oznaku države u IBAN-u | Nepostojeća oznaka države u IBAN-u primatelja |
437 | Greška se javlja ukoliko je element Note u opomeni ne sadrži tekst opomene | Tekst opomene nije unešen |
438 | Greška se javlja ukoliko je opis oslobođenja od poreza duži od 4000 znakova | Tekst uvjeta za jednu od poreznih stopa u Rekapitulaciji je veći od 4000 znakova |
439 | Greška se javlja ukoliko je ID opomene nije unešen | Broj opomene je obavezan |
440 | Greška se javlja ukoliko nije unesen RegistrationName supplier-a | Naziv tvrtke ili ime i prezime kod dobavljača mora biti popunjeno |
441 | Greška se javlja ukoliko je element Amount u stavci opomene prazan ili 0.00 | Iznos u stavci opomene mora biti popunjen i veći od 0.00 |
442 | Greška se javlja ukoliko nije popunjen element ID u odobrenju | Broj odobrenja je obavezan |
443 | Greška se javlja ukoliko nije popunjen element ID u računu | Broj računa je obavezan |
Postupci prije produkcije
Prije puštanja na produkcijski sustav nužna je verifikacija uspješne razmjene podataka na testnim okruženjima Fine i Korisnika. Jednako tako potrebno je izvesti sistemske load testove razmjene podataka, kako bi se ispitala propusnost voda.
Ne može se napraviti iznimka izostajanja testiranja razmjene, na testnim okruženjima Fine i Korisnika, kao ni sistemski testovi. Jednako tako je potrebno detaljno dokumentirati komponente razmjene podataka.
Specifikacija e-računa (UBL-Invoice)
Nacrti specifikacije e-računa Ministarstva gospodarstva, rada i poduzetništva RH, Povjerenstva za e-račun.
Nacrti specifikacije e-računa - prosinac 2009.
Nacrti specifikacije e-računa - srpanj 2011.
UBL sheme
UBL sheme nalaze se ovdje.
Sheme poruka i definicije web servisa
Sheme poruka i definicija Web servisa nalazi se ovdje.