rewrite for eet 2.0 api version v4
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user