Files
EetCpp/libEet/eetv4xml.cpp
T

80 lines
2.7 KiB
C++

#include "eetv4xml.h"
#include <QXmlStreamWriter>
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;
}