#include "eetv4xml.h" #include namespace { QString booleanValue(bool value) { return value ? QStringLiteral("true") : QStringLiteral("false"); } } QByteArray EetV4Xml::serializeSale(const EetV4SaleRequest &request, QString *error) { QStringList validationErrors; if (!request.validate(&validationErrors)) { if (error != nullptr) { *error = validationErrors.join(QStringLiteral(" ")); } return {}; } QByteArray output; QXmlStreamWriter writer(&output); writer.setAutoFormatting(false); writer.writeStartDocument(QStringLiteral("1.0")); writer.writeStartElement(QStringLiteral("Trzba")); writer.writeDefaultNamespace(QStringLiteral("http://fs.gov.cz/eet/schema/v4")); writer.writeStartElement(QStringLiteral("Hlavicka")); writer.writeAttribute(QStringLiteral("uuid_zpravy"), request.messageUuid.toString(QUuid::WithoutBraces)); writer.writeAttribute(QStringLiteral("dat_odesl"), EetV4SaleRequest::formatDateTime(request.sentAt)); writer.writeAttribute(QStringLiteral("prvni_zaslani"), booleanValue(request.firstSubmission)); if (request.verificationMode) { writer.writeAttribute(QStringLiteral("overeni"), QStringLiteral("true")); } writer.writeEndElement(); writer.writeStartElement(QStringLiteral("Data")); writer.writeAttribute(QStringLiteral("eic_popl"), request.taxpayerEic); if (!request.authorizingTaxpayerEic.isEmpty()) { writer.writeAttribute(QStringLiteral("eic_poverujiciho"), request.authorizingTaxpayerEic); } if (request.multipleTaxpayerAuthorization) { writer.writeAttribute(QStringLiteral("povereni_vice_popl"), QStringLiteral("true")); } writer.writeAttribute(QStringLiteral("id_jednotky"), QString::number(request.unitId)); writer.writeAttribute(QStringLiteral("id_pokl"), request.cashRegisterId); writer.writeAttribute(QStringLiteral("porad_cis"), request.receiptNumber); writer.writeAttribute(QStringLiteral("dat_trzby"), EetV4SaleRequest::formatDateTime(request.saleAt)); writer.writeAttribute(QStringLiteral("celk_trzba"), request.totalSale.toString()); if (request.hasIntendedSettlement) { writer.writeAttribute(QStringLiteral("urceno_cerp_zuct"), request.intendedSettlement.toString()); } if (request.hasSettlement) { writer.writeAttribute(QStringLiteral("cerp_zuct"), request.settlement.toString()); } writer.writeEndElement(); writer.writeEndElement(); writer.writeEndDocument(); if (writer.hasError()) { if (error != nullptr) { *error = QStringLiteral("Failed to serialize the EET v4 XML document."); } return {}; } return output; }