private Dto.Xsd.InvoiceSummary GetInvoiceSummary(Invoice invoice)
        {
            var invoiceSummary = new Dto.Xsd.InvoiceSummary
            {
                TotalNetValue  = invoice.RevenueItems.Sum(x => x.NetValue.Value),
                TotalVatAmount = invoice.RevenueItems.Sum(x => x.VatValue.Value)
            };

            var otherTaxesAmount = invoice.RevenueItems.Any(x => x.CityTax != null) ? invoice.RevenueItems.Sum(m => m.CityTax.Amount.Value) : (decimal?)null;

            if (otherTaxesAmount.HasValue)
            {
                invoiceSummary.TotalOtherTaxesAmount = otherTaxesAmount.Value;
            }

            invoiceSummary.IncomeClassification = invoice.RevenueItems.SelectMany(x => x.IncomeClassifications).GroupBy(m => new { m.ClassificationCategory, m.ClassificationType },
                                                                                                                        (key, values) => new Dto.Xsd.IncomeClassification
            {
                ClassificationCategory = MapIncomeClassificationCategory(key.ClassificationCategory),
                ClassificationType     = MapIncomeClassificationType(key.ClassificationType),
                Amount = values.Sum(x => x.Amount.Value)
            }).ToArray();


            invoiceSummary.TotalGrossValue = invoiceSummary.TotalNetValue + invoiceSummary.TotalVatAmount + invoiceSummary.TotalOtherTaxesAmount;

            return(invoiceSummary);
        }
        private static Dto.Xsd.InvoiceSummary GetInvoiceSummary(Invoice invoice)
        {
            var invoiceSummary = new Dto.Xsd.InvoiceSummary
            {
                TotalNetValue  = Math.Abs(invoice.RevenueItems.Values.Sum(x => x.Value.NetValue)),
                TotalVatAmount = Math.Abs(invoice.RevenueItems.Values.Sum(x => x.Value.VatValue))
            };

            invoiceSummary.IncomeClassification = invoice.RevenueItems.Values.GroupBy(
                keySelector: m => m.Value.Info.RevenueType,
                resultSelector: (key, revenueItems) => new Dto.Xsd.IncomeClassification
            {
                ClassificationCategory = MapRevenueClassification(invoice, key).Category,
                ClassificationType     = MapRevenueClassification(invoice, key).Type,
                Amount = Math.Abs(revenueItems.Sum(i => i.Value.NetValue))
            }
                ).ToArray();


            invoiceSummary.TotalGrossValue = invoiceSummary.TotalNetValue + invoiceSummary.TotalVatAmount + invoiceSummary.TotalOtherTaxesAmount;

            return(invoiceSummary);
        }