internal static InvoiceApiModel DeserializeInvoiceApiModel(XElement element) { long? aeatAprovedFileId = default; double? computablePercentage = default; double? computablePercentageVAT = default; DateTimeOffset? creationDate = default; string entityString = default; DateTimeOffset? expirationDate = default; string footer = default; bool? hasAeatAprovedFile = default; long? id = default; int? invoiceClass = default; string invoiceClassDescription = default; DateTimeOffset? invoiceDate = default; bool? isCashCriteria = default; bool? isRectificationInvoice = default; DocumentEntityApiModel issuer = default; DateTimeOffset? lastUpdateDate = default; string notes = default; string number = default; long? numberingFormatId = default; DateTimeOffset? operationDate = default; InvoiceApiModelOperationType? operationType = default; string operationTypeDescription = default; long? originalIssuerEntityID = default; long? originalTargetEntityID = default; string period = default; long? rectifiesInvoiceId = default; long? relatedEstimateId = default; double? retentionAmount = default; double? retentionPercentage = default; InvoiceApiModelStatus? status = default; DocumentEntityApiModel target = default; double? totalAmount = default; double? totalAmountPerPay = default; double? totalComputableAmount = default; double? totalComputableAmountForVAT = default; double? totalPayedAmount = default; double? totalReAmount = default; double? totalTaxableAmount = default; double? totalVatAmount = default; InvoiceApiModelType? type = default; IReadOnlyList <InvoiceLineApiModel> lines = default; IReadOnlyList <DocumentPaymentApiModel> payments = default; if (element.Element("aeatAprovedFileId") is XElement aeatAprovedFileIdElement) { aeatAprovedFileId = (long?)aeatAprovedFileIdElement; } if (element.Element("computablePercentage") is XElement computablePercentageElement) { computablePercentage = (double?)computablePercentageElement; } if (element.Element("computablePercentageVAT") is XElement computablePercentageVATElement) { computablePercentageVAT = (double?)computablePercentageVATElement; } if (element.Element("creationDate") is XElement creationDateElement) { creationDate = creationDateElement.GetDateTimeOffsetValue("O"); } if (element.Element("entityString") is XElement entityStringElement) { entityString = (string)entityStringElement; } if (element.Element("expirationDate") is XElement expirationDateElement) { expirationDate = expirationDateElement.GetDateTimeOffsetValue("O"); } if (element.Element("footer") is XElement footerElement) { footer = (string)footerElement; } if (element.Element("hasAeatAprovedFile") is XElement hasAeatAprovedFileElement) { hasAeatAprovedFile = (bool?)hasAeatAprovedFileElement; } if (element.Element("id") is XElement idElement) { id = (long?)idElement; } if (element.Element("invoiceClass") is XElement invoiceClassElement) { invoiceClass = (int?)invoiceClassElement; } if (element.Element("invoiceClassDescription") is XElement invoiceClassDescriptionElement) { invoiceClassDescription = (string)invoiceClassDescriptionElement; } if (element.Element("invoiceDate") is XElement invoiceDateElement) { invoiceDate = invoiceDateElement.GetDateTimeOffsetValue("O"); } if (element.Element("isCashCriteria") is XElement isCashCriteriaElement) { isCashCriteria = (bool?)isCashCriteriaElement; } if (element.Element("isRectificationInvoice") is XElement isRectificationInvoiceElement) { isRectificationInvoice = (bool?)isRectificationInvoiceElement; } if (element.Element("issuer") is XElement issuerElement) { issuer = DocumentEntityApiModel.DeserializeDocumentEntityApiModel(issuerElement); } if (element.Element("lastUpdateDate") is XElement lastUpdateDateElement) { lastUpdateDate = lastUpdateDateElement.GetDateTimeOffsetValue("O"); } if (element.Element("notes") is XElement notesElement) { notes = (string)notesElement; } if (element.Element("number") is XElement numberElement) { number = (string)numberElement; } if (element.Element("numberingFormatId") is XElement numberingFormatIdElement) { numberingFormatId = (long?)numberingFormatIdElement; } if (element.Element("operationDate") is XElement operationDateElement) { operationDate = operationDateElement.GetDateTimeOffsetValue("O"); } if (element.Element("operationType") is XElement operationTypeElement) { operationType = new InvoiceApiModelOperationType(operationTypeElement.Value); } if (element.Element("operationTypeDescription") is XElement operationTypeDescriptionElement) { operationTypeDescription = (string)operationTypeDescriptionElement; } if (element.Element("originalIssuerEntityID") is XElement originalIssuerEntityIDElement) { originalIssuerEntityID = (long?)originalIssuerEntityIDElement; } if (element.Element("originalTargetEntityID") is XElement originalTargetEntityIDElement) { originalTargetEntityID = (long?)originalTargetEntityIDElement; } if (element.Element("period") is XElement periodElement) { period = (string)periodElement; } if (element.Element("rectifiesInvoiceId") is XElement rectifiesInvoiceIdElement) { rectifiesInvoiceId = (long?)rectifiesInvoiceIdElement; } if (element.Element("relatedEstimateId") is XElement relatedEstimateIdElement) { relatedEstimateId = (long?)relatedEstimateIdElement; } if (element.Element("retentionAmount") is XElement retentionAmountElement) { retentionAmount = (double?)retentionAmountElement; } if (element.Element("retentionPercentage") is XElement retentionPercentageElement) { retentionPercentage = (double?)retentionPercentageElement; } if (element.Element("status") is XElement statusElement) { status = new InvoiceApiModelStatus(statusElement.Value); } if (element.Element("target") is XElement targetElement) { target = DocumentEntityApiModel.DeserializeDocumentEntityApiModel(targetElement); } if (element.Element("totalAmount") is XElement totalAmountElement) { totalAmount = (double?)totalAmountElement; } if (element.Element("totalAmountPerPay") is XElement totalAmountPerPayElement) { totalAmountPerPay = (double?)totalAmountPerPayElement; } if (element.Element("totalComputableAmount") is XElement totalComputableAmountElement) { totalComputableAmount = (double?)totalComputableAmountElement; } if (element.Element("totalComputableAmountForVAT") is XElement totalComputableAmountForVATElement) { totalComputableAmountForVAT = (double?)totalComputableAmountForVATElement; } if (element.Element("totalPayedAmount") is XElement totalPayedAmountElement) { totalPayedAmount = (double?)totalPayedAmountElement; } if (element.Element("totalReAmount") is XElement totalReAmountElement) { totalReAmount = (double?)totalReAmountElement; } if (element.Element("totalTaxableAmount") is XElement totalTaxableAmountElement) { totalTaxableAmount = (double?)totalTaxableAmountElement; } if (element.Element("totalVatAmount") is XElement totalVatAmountElement) { totalVatAmount = (double?)totalVatAmountElement; } if (element.Element("type") is XElement typeElement) { type = new InvoiceApiModelType(typeElement.Value); } var array = new List <InvoiceLineApiModel>(); foreach (var e in element.Elements("InvoiceLineApiModel")) { array.Add(InvoiceLineApiModel.DeserializeInvoiceLineApiModel(e)); } lines = array; var array0 = new List <DocumentPaymentApiModel>(); foreach (var e in element.Elements("DocumentPaymentApiModel")) { array0.Add(DocumentPaymentApiModel.DeserializeDocumentPaymentApiModel(e)); } payments = array0; return(new InvoiceApiModel(aeatAprovedFileId, computablePercentage, computablePercentageVAT, creationDate, entityString, expirationDate, footer, hasAeatAprovedFile, id, invoiceClass, invoiceClassDescription, invoiceDate, isCashCriteria, isRectificationInvoice, issuer, lastUpdateDate, lines, notes, number, numberingFormatId, operationDate, operationType, operationTypeDescription, originalIssuerEntityID, originalTargetEntityID, payments, period, rectifiesInvoiceId, relatedEstimateId, retentionAmount, retentionPercentage, status, target, totalAmount, totalAmountPerPay, totalComputableAmount, totalComputableAmountForVAT, totalPayedAmount, totalReAmount, totalTaxableAmount, totalVatAmount, type)); }
internal static InvoiceApiModel DeserializeInvoiceApiModel(JsonElement element) { Optional <long> aeatAprovedFileId = default; Optional <double> computablePercentage = default; Optional <double> computablePercentageVAT = default; Optional <DateTimeOffset> creationDate = default; Optional <string> entityString = default; Optional <DateTimeOffset> expirationDate = default; Optional <string> footer = default; Optional <bool> hasAeatAprovedFile = default; Optional <long> id = default; Optional <int> invoiceClass = default; Optional <string> invoiceClassDescription = default; Optional <DateTimeOffset> invoiceDate = default; Optional <bool> isCashCriteria = default; Optional <bool> isRectificationInvoice = default; Optional <DocumentEntityApiModel> issuer = default; Optional <DateTimeOffset> lastUpdateDate = default; Optional <IReadOnlyList <InvoiceLineApiModel> > lines = default; Optional <string> notes = default; Optional <string> number = default; Optional <long> numberingFormatId = default; Optional <DateTimeOffset> operationDate = default; Optional <InvoiceApiModelOperationType> operationType = default; Optional <string> operationTypeDescription = default; Optional <long> originalIssuerEntityID = default; Optional <long> originalTargetEntityID = default; Optional <IReadOnlyList <DocumentPaymentApiModel> > payments = default; Optional <string> period = default; Optional <long> rectifiesInvoiceId = default; Optional <long> relatedEstimateId = default; Optional <double> retentionAmount = default; Optional <double> retentionPercentage = default; Optional <InvoiceApiModelStatus> status = default; Optional <DocumentEntityApiModel> target = default; Optional <double> totalAmount = default; Optional <double> totalAmountPerPay = default; Optional <double> totalComputableAmount = default; Optional <double> totalComputableAmountForVAT = default; Optional <double> totalPayedAmount = default; Optional <double> totalReAmount = default; Optional <double> totalTaxableAmount = default; Optional <double> totalVatAmount = default; Optional <InvoiceApiModelType> type = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("aeatAprovedFileId")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } aeatAprovedFileId = property.Value.GetInt64(); continue; } if (property.NameEquals("computablePercentage")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } computablePercentage = property.Value.GetDouble(); continue; } if (property.NameEquals("computablePercentageVAT")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } computablePercentageVAT = property.Value.GetDouble(); continue; } if (property.NameEquals("creationDate")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } creationDate = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("entityString")) { entityString = property.Value.GetString(); continue; } if (property.NameEquals("expirationDate")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } expirationDate = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("footer")) { footer = property.Value.GetString(); continue; } if (property.NameEquals("hasAeatAprovedFile")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } hasAeatAprovedFile = property.Value.GetBoolean(); continue; } if (property.NameEquals("id")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } id = property.Value.GetInt64(); continue; } if (property.NameEquals("invoiceClass")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } invoiceClass = property.Value.GetInt32(); continue; } if (property.NameEquals("invoiceClassDescription")) { invoiceClassDescription = property.Value.GetString(); continue; } if (property.NameEquals("invoiceDate")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } invoiceDate = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("isCashCriteria")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } isCashCriteria = property.Value.GetBoolean(); continue; } if (property.NameEquals("isRectificationInvoice")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } isRectificationInvoice = property.Value.GetBoolean(); continue; } if (property.NameEquals("issuer")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } issuer = DocumentEntityApiModel.DeserializeDocumentEntityApiModel(property.Value); continue; } if (property.NameEquals("lastUpdateDate")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } lastUpdateDate = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("lines")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } List <InvoiceLineApiModel> array = new List <InvoiceLineApiModel>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(InvoiceLineApiModel.DeserializeInvoiceLineApiModel(item)); } lines = array; continue; } if (property.NameEquals("notes")) { notes = property.Value.GetString(); continue; } if (property.NameEquals("number")) { number = property.Value.GetString(); continue; } if (property.NameEquals("numberingFormatId")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } numberingFormatId = property.Value.GetInt64(); continue; } if (property.NameEquals("operationDate")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } operationDate = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("operationType")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } operationType = new InvoiceApiModelOperationType(property.Value.GetString()); continue; } if (property.NameEquals("operationTypeDescription")) { operationTypeDescription = property.Value.GetString(); continue; } if (property.NameEquals("originalIssuerEntityID")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } originalIssuerEntityID = property.Value.GetInt64(); continue; } if (property.NameEquals("originalTargetEntityID")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } originalTargetEntityID = property.Value.GetInt64(); continue; } if (property.NameEquals("payments")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } List <DocumentPaymentApiModel> array = new List <DocumentPaymentApiModel>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(DocumentPaymentApiModel.DeserializeDocumentPaymentApiModel(item)); } payments = array; continue; } if (property.NameEquals("period")) { period = property.Value.GetString(); continue; } if (property.NameEquals("rectifiesInvoiceId")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } rectifiesInvoiceId = property.Value.GetInt64(); continue; } if (property.NameEquals("relatedEstimateId")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } relatedEstimateId = property.Value.GetInt64(); continue; } if (property.NameEquals("retentionAmount")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } retentionAmount = property.Value.GetDouble(); continue; } if (property.NameEquals("retentionPercentage")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } retentionPercentage = property.Value.GetDouble(); continue; } if (property.NameEquals("status")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } status = new InvoiceApiModelStatus(property.Value.GetString()); continue; } if (property.NameEquals("target")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } target = DocumentEntityApiModel.DeserializeDocumentEntityApiModel(property.Value); continue; } if (property.NameEquals("totalAmount")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } totalAmount = property.Value.GetDouble(); continue; } if (property.NameEquals("totalAmountPerPay")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } totalAmountPerPay = property.Value.GetDouble(); continue; } if (property.NameEquals("totalComputableAmount")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } totalComputableAmount = property.Value.GetDouble(); continue; } if (property.NameEquals("totalComputableAmountForVAT")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } totalComputableAmountForVAT = property.Value.GetDouble(); continue; } if (property.NameEquals("totalPayedAmount")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } totalPayedAmount = property.Value.GetDouble(); continue; } if (property.NameEquals("totalReAmount")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } totalReAmount = property.Value.GetDouble(); continue; } if (property.NameEquals("totalTaxableAmount")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } totalTaxableAmount = property.Value.GetDouble(); continue; } if (property.NameEquals("totalVatAmount")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } totalVatAmount = property.Value.GetDouble(); continue; } if (property.NameEquals("type")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } type = new InvoiceApiModelType(property.Value.GetString()); continue; } } return(new InvoiceApiModel(Optional.ToNullable(aeatAprovedFileId), Optional.ToNullable(computablePercentage), Optional.ToNullable(computablePercentageVAT), Optional.ToNullable(creationDate), entityString.Value, Optional.ToNullable(expirationDate), footer.Value, Optional.ToNullable(hasAeatAprovedFile), Optional.ToNullable(id), Optional.ToNullable(invoiceClass), invoiceClassDescription.Value, Optional.ToNullable(invoiceDate), Optional.ToNullable(isCashCriteria), Optional.ToNullable(isRectificationInvoice), issuer.Value, Optional.ToNullable(lastUpdateDate), Optional.ToList(lines), notes.Value, number.Value, Optional.ToNullable(numberingFormatId), Optional.ToNullable(operationDate), Optional.ToNullable(operationType), operationTypeDescription.Value, Optional.ToNullable(originalIssuerEntityID), Optional.ToNullable(originalTargetEntityID), Optional.ToList(payments), period.Value, Optional.ToNullable(rectifiesInvoiceId), Optional.ToNullable(relatedEstimateId), Optional.ToNullable(retentionAmount), Optional.ToNullable(retentionPercentage), Optional.ToNullable(status), target.Value, Optional.ToNullable(totalAmount), Optional.ToNullable(totalAmountPerPay), Optional.ToNullable(totalComputableAmount), Optional.ToNullable(totalComputableAmountForVAT), Optional.ToNullable(totalPayedAmount), Optional.ToNullable(totalReAmount), Optional.ToNullable(totalTaxableAmount), Optional.ToNullable(totalVatAmount), Optional.ToNullable(type))); }