Specyfikacja techniczna e
Transkrypt
Specyfikacja techniczna e
oprogramowanie dla biznesu Specyfikacja techniczna e-Faktury firmy Sage W systemach produkowanych przez firmę Sage w Polsce stosowane są dwie postaci faktur elektronicznych: podpisany plik PDF z „zaszytą” informacją dotyczącą treści dokumentu wraz z z podpisanym XML-em. format uproszczony - plik XML Do podpisywania dokumentów XML używany jest standardowy mechanizm podpisu kluczem asymetrycznym XML Advanced Electronic Signature – XAdES. Kluczem podpisującym może być dowolny certyfikat w standardzie X509Certificate2, do którego prywatnej części ma dostęp tylko osoba podpisująca dokument. Mogą to być następujące podpisy: podpis kwalifikowany w rozumieniu przepisów podpis wygenerowany przez dowolne centrum autoryzacyjne także swoista „pieczęć firmowa”, wygenerowana za pomocą standardowych mechanizmów Windows, która nie jest poparta żadnym centrum autoryzacyjnym, ale może zostać użyta do potwierdzenia autentyczności oraz integralności faktury Podpisany dokument XML jest „zaszywany” w postaci informacji niejawnych w PDF-ie. „Zaszyte” informacje są widoczne z poziomu dostępu do PDF-a (po API), ale nie widoczny dla „zwykłego” czytelnika pliku.. Taki PDF jest następnie podpisywany tym samym podpisem, którym został podpisany XML, przy pomocy standardowej metody podpisywania dokumentów PDF. W chwili obecnej schemat do danych XML czytelnych dla systemów Sage ma następującą postać: <?xml version="1.0" encoding="utf-8"?> <xs:schema id="FormatXML" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="FormatXML" msdata:IsDataSet="true" msdata:Locale="en-US"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="e-Faktura"> <xs:complexType> <xs:sequence> <xs:element name="Wersja" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="DokumentHandlowy"> <xs:complexType> <xs:sequence> <xs:element name="GUID" type="xs:string" minOccurs="0" /> <xs:element name="Status" type="xs:string" minOccurs="0" /> <xs:element name="DataWystawieniaDuplikatu" type="xs:string" minOccurs="0" /> <xs:element name="NumerDokumentu" type="xs:string" minOccurs="0" /> <xs:element name="Nazwa" type="xs:string" minOccurs="0" /> <xs:element name="Charakter" type="xs:string" minOccurs="0" /> <xs:element name="Typ" type="xs:string" minOccurs="0" /> <xs:element name="Seria" type="xs:string" minOccurs="0" /> <xs:element name="Wystawca" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="GUIDEDS" type="xs:string" minOccurs="0" /> <xs:element name="GUID" type="xs:string" minOccurs="0" /> <xs:element name="Kod" type="xs:string" minOccurs="0" /> <xs:element name="Nazwa" type="xs:string" minOccurs="0" /> <xs:element name="Ulica" type="xs:string" minOccurs="0" /> <xs:element name="NumerDomu" type="xs:string" minOccurs="0" /> <xs:element name="NumerLokalu" type="xs:string" minOccurs="0" /> <xs:element name="KodPocztowy" type="xs:string" minOccurs="0" /> <xs:element name="Miejscowosc" type="xs:string" minOccurs="0" /> <xs:element name="Wojewodztwo" type="xs:string" minOccurs="0" /> <xs:element name="Kraj" type="xs:string" minOccurs="0" /> <xs:element name="NIP" type="xs:string" minOccurs="0" /> <xs:element name="REGON" type="xs:string" minOccurs="0" /> <xs:element name="PESEL" type="xs:string" minOccurs="0" /> <xs:element name="VIES" type="xs:string" minOccurs="0" /> <xs:element name="VATUE" type="xs:string" minOccurs="0" /> <xs:element name="NumerRachunkuBankowego" type="xs:string" minOccurs="0" /> <xs:element name="Telefon1" type="xs:string" minOccurs="0" /> <xs:element name="Telefon2" type="xs:string" minOccurs="0" /> <xs:element name="Fax" type="xs:string" minOccurs="0" /> <xs:element name="Email" type="xs:string" minOccurs="0" /> oprogramowanie dla biznesu </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Odbiorca" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="GUIDEDS" type="xs:string" minOccurs="0" /> <xs:element name="GUID" type="xs:string" minOccurs="0" /> <xs:element name="Kod" type="xs:string" minOccurs="0" /> <xs:element name="Nazwa" type="xs:string" minOccurs="0" /> <xs:element name="Ulica" type="xs:string" minOccurs="0" /> <xs:element name="NumerDomu" type="xs:string" minOccurs="0" /> <xs:element name="NumerLokalu" type="xs:string" minOccurs="0" /> <xs:element name="KodPocztowy" type="xs:string" minOccurs="0" /> <xs:element name="Miejscowosc" type="xs:string" minOccurs="0" /> <xs:element name="Wojewodztwo" type="xs:string" minOccurs="0" /> <xs:element name="Kraj" type="xs:string" minOccurs="0" /> <xs:element name="NIP" type="xs:string" minOccurs="0" /> <xs:element name="REGON" type="xs:string" minOccurs="0" /> <xs:element name="PESEL" type="xs:string" minOccurs="0" /> <xs:element name="VIES" type="xs:string" minOccurs="0" /> <xs:element name="VATUE" type="xs:string" minOccurs="0" /> <xs:element name="NumerRachunkuBankowego" type="xs:string" minOccurs="0" /> <xs:element name="Telefon1" type="xs:string" minOccurs="0" /> <xs:element name="Telefon2" type="xs:string" minOccurs="0" /> <xs:element name="Fax" type="xs:string" minOccurs="0" /> <xs:element name="Email" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Rejestr" type="xs:string" minOccurs="0" /> <xs:element name="RodzajCeny" type="xs:string" minOccurs="0" /> <xs:element name="NaliczanieVAT" type="xs:string" minOccurs="0" /> <xs:element name="MetodaRozliczaniaVAT" type="xs:string" minOccurs="0" /> <xs:element name="DataWystawienia" type="xs:string" minOccurs="0" /> <xs:element name="DataSprzedazy" type="xs:string" minOccurs="0" /> <xs:element name="DataWplywu" type="xs:string" minOccurs="0" /> <xs:element name="RejestrPlatnosci" type="xs:string" minOccurs="0" /> <xs:element name="FormaPlatnosci" type="xs:string" minOccurs="0" /> <xs:element name="TerminPlatnosci" type="xs:string" minOccurs="0" /> <xs:element name="DataPlatnosci" type="xs:string" minOccurs="0" /> <xs:element name="Waluta" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Kod" type="xs:string" minOccurs="0" /> <xs:element name="Nazwa" type="xs:string" minOccurs="0" /> <xs:element name="Przelicznik" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="KursVAT" type="xs:string" minOccurs="0" /> <xs:element name="KursCITPIT" type="xs:string" minOccurs="0" /> <xs:element name="OdebranyPrzez" type="xs:string" minOccurs="0" /> <xs:element name="StawkaVAT" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Kod" type="xs:string" minOccurs="0" /> <xs:element name="Nazwa" type="xs:string" minOccurs="0" /> <xs:element name="Wartosc" type="xs:string" minOccurs="0" /> <xs:element name="ObowiazujeOd" type="xs:string" minOccurs="0" /> <xs:element name="ObowiazujeDo" type="xs:string" minOccurs="0" /> <xs:element name="StawkaRR" type="xs:string" minOccurs="0" /> <xs:element name="Typ" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Stopka" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="KwotaVAT" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="StawkaVAT" type="xs:string" minOccurs="0" /> <xs:element name="Netto" type="xs:string" minOccurs="0" /> <xs:element name="VAT" type="xs:string" minOccurs="0" /> oprogramowanie dla biznesu </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="PozycjaDokumentu" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Lp" type="xs:string" minOccurs="0" /> <xs:element name="Towar" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Kod" type="xs:string" minOccurs="0" /> <xs:element name="Nazwa" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Opis" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="KodPaskowy" type="xs:string" minOccurs="0" /> <xs:element name="PKWiU" type="xs:string" minOccurs="0" /> <xs:element name="CN" type="xs:string" minOccurs="0" /> <xs:element name="JednostkaMiary" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Ewidencyjna" type="xs:string" minOccurs="0" /> <xs:element name="Dodatkowa1" type="xs:string" minOccurs="0" /> <xs:element name="Przelicznik1" type="xs:string" minOccurs="0" /> <xs:element name="Dodatkowa2" type="xs:string" minOccurs="0" /> <xs:element name="Przelicznik2" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="StawkaVAT" type="xs:string" minOccurs="0" /> <xs:element name="Rodzaj" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="JednostkaMiary" type="xs:string" minOccurs="0" /> <xs:element name="Ilosc" type="xs:string" minOccurs="0" /> <xs:element name="Cena" type="xs:string" minOccurs="0" /> <xs:element name="StawkaVAT" type="xs:string" minOccurs="0" /> <xs:element name="Wartosc" type="xs:string" minOccurs="0" /> <xs:element name="WartoscVAT" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema>