Электронные инвойсы стандартов ZUGFeRD и Factur-X в продуктах Stimulsoft
Электронные счета-фактуры уже достаточно давно стали частью цифрового документооборота во многих сферах: бизнесе, государственном секторе, бухгалтерском учете и многих других. Как крупные предприятия, так и небольшие компании полностью переходят на электронное выставление счетов по целому ряду причин. Среди них сокращение расходов, ускорение бизнес-процессов и многое другое. В последние годы во многих странах появляются законы об обязательном переходе на электронное выставление счетов, например, директива ЕС 2014/55.Форматы электронных счетов
К самым распространенным форматам электронных счетов-фактур относятся ZUGFeRD и Factur-X.ZUGFeRD
Формат ZUGFeRD используется для создания электронных документов в немецкоязычных странах и представляет собой сочетание машиночитаемых XML-данных и формата PDF для представления данных в удобном для человека виде.Factur-X
Аналог немецкого формата во Франции – Factur-X. Этот формат электронных счетов технически идентичен ZUGFeRD и полностью совместим с ним.Примеры счетов-фактур
Здесь вы можете увидеть примеры счетов-фактур, созданных в форматах ZUGFeRD и Factur-X.Создание электронный счетов в формате ZUGFeRD
Компоненты Stimulsoft поддерживают создание ZUGFeRD-инвойсов всех актуальных версий – 2.1, 2.2, 2.3. Работа строится следующим образом: подготовленные XML-данные загружаются в генератор отчетов, который строит визуальную часть. Далее полученный отчет экспортируется в PDF-файл.После загрузки шаблона отчета необходимо в коде определить значение следующих свойств:
- ZUGFeRDComplianceMode, которое определяет версию формата (V1, V2, V2_1);
- ZUGFeRDConformanceLevel устанавливает нужный уровень соответствия;
- ZUGFeRDInvoiceData, с помощью которого применяется XML-файл с данными счёта-фактуры.
Пример кода
Пример кода для экспорта электронной счет-фактуры в формате ZUGFeRD 2.1/Factur-X с измененными настройками:var report = new StiReport();
report.Load("invoice.mrt");
report.Render();
var stream = new FileStream(@"d:\\result.pdf", FileMode.Create);
var buf = File.ReadAllBytes(@"d:\\zugferd-invoice.xml");
var settings = new StiPdfExportSettings()
settings.ZUGFeRDComplianceMode = StiPdfZUGFeRDComplianceMode.V2_1;
settings.EmbeddedFiles.Add(new StiPdfEmbeddedFileData("factur-x-invoice.xml", "Factur-X/ZUGFeRD", buf));
settings.ZUGFeRDConformanceLevel = "EN 16931"
report.ExportDocument(StiExportFormat.Pdf, stream, settings);
stream.Close();
const fs = require("fs");
var Stimulsoft = require('stimulsoft-reports-js');
let report = new Stimulsoft.Report.StiReport();
report.loadFile("invoice.mrt");
let buf = fs.readFileSync("factur-x-invoice.xml");
let es = new Stimulsoft.Report.Export.StiPdfExportSettings();
es.ZUGFeRDComplianceMode = Stimulsoft.Report.Export.StiPdfZUGFeRDComplianceMode.V2_1;
es.ZUGFeRDConformanceLevel = "EN16931";
es.embeddedFiles.add(
new Stimulsoft.Report.Export.StiPdfEmbeddedFileData("factur-x.xml", "Factur-X/ZUGFeRD", buf)
);
report.renderAsync(() => {
report.exportDocumentAsync((pdfData) => {
let buffer = Buffer.from(pdfData);
fs.writeFileSync('./result.pdf', buffer);
}, Stimulsoft.Report.StiExportFormat.Pdf, null, es);
});
StiReport report = StiSerializeManager.deserializeReport(new File("invoice.mrt"));
report.render();
byte[] buf = StiIOUtil.toByteArray(new FileInputStream("d:/zugferd-invoice.xml"));
StiPdfExportSettings pdfExportSettings = new StiPdfExportSettings();
pdfExportSettings.setZUGFeRDComplianceMode(StiPdfZUGFeRDComplianceMode.V2_1);
pdfExportSettings.getEmbeddedFiles().add(new StiPdfEmbeddedFileData("factur-x.xml", "Factur-X/ZUGFeRD", buf));
pdfExportSettings.setZUGFeRDConformanceLevel("EN 16931");
StiExportManager.exportPdf(report, pdfExportSettings, new FileOutputStream("d:/result.pdf"));

