Esempio n. 1
0
        /// <summary>
        /// Opdaterer ViewModel for budgetkontoen.
        /// </summary>
        /// <param name="budgetkontoViewModel">ViewModel for budgetkontoen, som skal opdateres.</param>
        /// <param name="budgetkontoModel">Model for budgetkontoen, som ViewModel for budgetkontoen skal opdateres med.</param>
        /// <param name="budgetkontogruppeViewModels">ViewModels for kontogrupper til budgetkonti..</param>
        private static void HandleResult(IBudgetkontoViewModel budgetkontoViewModel, IBudgetkontoModel budgetkontoModel, IEnumerable <IBudgetkontogruppeViewModel> budgetkontogruppeViewModels)
        {
            if (budgetkontoViewModel == null)
            {
                throw new ArgumentNullException("budgetkontoViewModel");
            }
            if (budgetkontoModel == null)
            {
                throw new ArgumentNullException("budgetkontoModel");
            }
            if (budgetkontogruppeViewModels == null)
            {
                throw new ArgumentNullException("budgetkontogruppeViewModels");
            }
            var budgetkontogruppeViewModel = budgetkontogruppeViewModels.SingleOrDefault(m => m.Nummer == budgetkontoModel.Kontogruppe);

            if (budgetkontogruppeViewModel == null)
            {
                throw new IntranetGuiSystemException(Resource.GetExceptionMessage(ExceptionMessage.BudgetAccountGroupNotFound, budgetkontoModel.Kontogruppe));
            }
            budgetkontoViewModel.Kontonavn          = budgetkontoModel.Kontonavn;
            budgetkontoViewModel.Beskrivelse        = budgetkontoModel.Beskrivelse;
            budgetkontoViewModel.Notat              = budgetkontoModel.Notat;
            budgetkontoViewModel.Kontogruppe        = budgetkontogruppeViewModel;
            budgetkontoViewModel.StatusDato         = budgetkontoModel.StatusDato;
            budgetkontoViewModel.Indtægter          = budgetkontoModel.Indtægter;
            budgetkontoViewModel.Udgifter           = budgetkontoModel.Udgifter;
            budgetkontoViewModel.BudgetSidsteMåned  = budgetkontoModel.BudgetSidsteMåned;
            budgetkontoViewModel.BudgetÅrTilDato    = budgetkontoModel.BudgetÅrTilDato;
            budgetkontoViewModel.BudgetSidsteÅr     = budgetkontoModel.BudgetSidsteÅr;
            budgetkontoViewModel.Bogført            = budgetkontoModel.Bogført;
            budgetkontoViewModel.BogførtSidsteMåned = budgetkontoModel.BogførtSidsteMåned;
            budgetkontoViewModel.BogførtÅrTilDato   = budgetkontoModel.BogførtÅrTilDato;
            budgetkontoViewModel.BogførtSidsteÅr    = budgetkontoModel.BogførtSidsteÅr;
        }
Esempio n. 2
0
        /// <summary>
        /// Finder og returnerer elementer med historiske data for en given budgetkonto.
        /// </summary>
        /// <param name="localeDataDocument">XML dokument, hvorfra elementer skal returneres.</param>
        /// <param name="budgetkontoModel">Model for budgetkontoen, hvortil historiske data skal returneres.</param>
        /// <returns>Elementer indeholdende historiske data til den givne budgetkonto.</returns>
        public static IEnumerable <XElement> GetHistorikElements(this XDocument localeDataDocument, IBudgetkontoModel budgetkontoModel)
        {
            if (localeDataDocument == null)
            {
                throw new ArgumentNullException("localeDataDocument");
            }
            if (budgetkontoModel == null)
            {
                throw new ArgumentNullException("budgetkontoModel");
            }
            var regnskabElement = localeDataDocument.GetRegnskabElement(budgetkontoModel.Regnskabsnummer);

            if (regnskabElement == null)
            {
                return(new List <XElement>(0));
            }
            var historikElements   = regnskabElement.Elements(XName.Get("BudgetkontoHistorik", regnskabElement.Name.NamespaceName)).Where(m => m.Attribute(XName.Get("kontonummer", string.Empty)) != null && string.Compare(m.Attribute(XName.Get("kontonummer", string.Empty)).Value, budgetkontoModel.Kontonummer, StringComparison.Ordinal) == 0 && m.Attribute(XName.Get("dato", string.Empty)) != null && string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, GetHistorikDato(budgetkontoModel.StatusDato), StringComparison.Ordinal) <= 0).ToList();
            var removeElementUntil = DateTime.Today.AddYears(-2).AddMonths(-1);

            removeElementUntil = removeElementUntil.AddDays((removeElementUntil.Day) * -1);
            var elementToDelete = historikElements.FirstOrDefault(m => string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, GetHistorikDato(removeElementUntil), StringComparison.Ordinal) <= 0);

            while (elementToDelete != null)
            {
                elementToDelete.Remove();
                historikElements.Remove(elementToDelete);
                elementToDelete = historikElements.FirstOrDefault(m => string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, GetHistorikDato(removeElementUntil), StringComparison.Ordinal) <= 0);
            }
            return(historikElements.OrderByDescending(m => m.Attribute(XName.Get("dato", string.Empty)).Value).ToList());
        }
Esempio n. 3
0
        /// <summary>
        /// Gemmer data for en budgetkonto i det lokale datalager.
        /// </summary>
        /// <param name="budgetkontoModel">Model for en budgetkonto.</param>
        /// <param name="localeDataDocument">XML dokument, hvori data skal gemmes.</param>
        public static void StoreInDocument(this IBudgetkontoModel budgetkontoModel, XDocument localeDataDocument)
        {
            if (budgetkontoModel == null)
            {
                throw new ArgumentNullException("budgetkontoModel");
            }
            if (localeDataDocument == null)
            {
                throw new ArgumentNullException("localeDataDocument");
            }
            var regnskabElement = localeDataDocument.GetRegnskabElement(budgetkontoModel.Regnskabsnummer);

            if (regnskabElement == null)
            {
                return;
            }
            var      sidsteMånedStatusDato = new DateTime(budgetkontoModel.StatusDato.AddMonths(-1).Year, budgetkontoModel.StatusDato.AddMonths(-1).Month, DateTime.DaysInMonth(budgetkontoModel.StatusDato.AddMonths(-1).Year, budgetkontoModel.StatusDato.AddMonths(-1).Month));
            var      sidsteMånedIndtægter  = Math.Abs(budgetkontoModel.BudgetSidsteMåned > 0 ? budgetkontoModel.BudgetSidsteMåned : 0M);
            var      sidsteMånedUdgifter   = Math.Abs(budgetkontoModel.BudgetSidsteMåned < 0 ? budgetkontoModel.BudgetSidsteMåned : 0M);
            XElement budgetkontoHistorikElement;
            var      budgetkontoElement = regnskabElement.Elements(XName.Get("Budgetkonto", regnskabElement.Name.NamespaceName)).SingleOrDefault(m => m.Attribute(XName.Get("kontonummer", string.Empty)) != null && string.Compare(m.Attribute(XName.Get("kontonummer", string.Empty)).Value, budgetkontoModel.Kontonummer, StringComparison.Ordinal) == 0);

            if (budgetkontoElement == null)
            {
                budgetkontoElement = new XElement(XName.Get("Budgetkonto", regnskabElement.Name.NamespaceName));
                budgetkontoElement.UpdateAttribute(XName.Get("kontonummer", string.Empty), budgetkontoModel.Kontonummer);
                budgetkontoElement.UpdateAttribute(XName.Get("kontonavn", string.Empty), budgetkontoModel.Kontonavn);
                budgetkontoElement.UpdateAttribute(XName.Get("kontogruppe", string.Empty), budgetkontoModel.Kontogruppe.ToString(CultureInfo.InvariantCulture));
                budgetkontoElement.UpdateAttribute(XName.Get("beskrivelse", string.Empty), budgetkontoModel.Beskrivelse, false);
                budgetkontoElement.UpdateAttribute(XName.Get("note", string.Empty), budgetkontoModel.Notat, false);
                regnskabElement.Add(budgetkontoElement);

                budgetkontoHistorikElement = new XElement(XName.Get("BudgetkontoHistorik", regnskabElement.Name.NamespaceName));
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("kontonummer", string.Empty), budgetkontoModel.Kontonummer);
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("dato", string.Empty), GetHistorikDato(budgetkontoModel.StatusDato));
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("indtaegter", string.Empty), budgetkontoModel.Indtægter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("udgifter", string.Empty), budgetkontoModel.Udgifter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("bogfoert", string.Empty), budgetkontoModel.Bogført.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                regnskabElement.Add(budgetkontoHistorikElement);

                budgetkontoHistorikElement = new XElement(XName.Get("BudgetkontoHistorik", regnskabElement.Name.NamespaceName));
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("kontonummer", string.Empty), budgetkontoModel.Kontonummer);
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("dato", string.Empty), GetHistorikDato(sidsteMånedStatusDato));
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("indtaegter", string.Empty), sidsteMånedIndtægter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("udgifter", string.Empty), sidsteMånedUdgifter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                budgetkontoHistorikElement.UpdateAttribute(XName.Get("bogfoert", string.Empty), budgetkontoModel.BogførtSidsteMåned.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                regnskabElement.Add(budgetkontoHistorikElement);
                return;
            }
            budgetkontoElement.UpdateAttribute(XName.Get("kontonavn", string.Empty), budgetkontoModel.Kontonavn);
            budgetkontoElement.UpdateAttribute(XName.Get("kontogruppe", string.Empty), budgetkontoModel.Kontogruppe.ToString(CultureInfo.InvariantCulture));
            budgetkontoElement.UpdateAttribute(XName.Get("beskrivelse", string.Empty), budgetkontoModel.Beskrivelse, false);
            budgetkontoElement.UpdateAttribute(XName.Get("note", string.Empty), budgetkontoModel.Notat, false);

            for (var iteration = 0; iteration < 2; iteration++)
            {
                string budgetkontoHistorikDato;
                switch (iteration)
                {
                case 0:
                    budgetkontoHistorikDato = GetHistorikDato(budgetkontoModel.StatusDato);
                    break;

                default:
                    budgetkontoHistorikDato = GetHistorikDato(sidsteMånedStatusDato);
                    break;
                }
                budgetkontoHistorikElement = localeDataDocument.GetHistorikElements(budgetkontoModel).FirstOrDefault(m => string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, budgetkontoHistorikDato, StringComparison.Ordinal) == 0);
                if (budgetkontoHistorikElement == null)
                {
                    var makeHistoric = true;
                    budgetkontoHistorikElement = localeDataDocument.GetHistorikElements(budgetkontoModel).FirstOrDefault(m => string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, budgetkontoHistorikDato, StringComparison.Ordinal) < 0);
                    if (budgetkontoHistorikElement != null)
                    {
                        var prevStatusDato = DateTime.ParseExact(budgetkontoHistorikElement.Attribute(XName.Get("dato", string.Empty)).Value, "yyyyMMdd", CultureInfo.InvariantCulture);
                        var prevIndtægter  = decimal.Parse(budgetkontoHistorikElement.Attribute(XName.Get("indtaegter", string.Empty)).Value, NumberStyles.Any, CultureInfo.InvariantCulture);
                        var prevUdgifter   = decimal.Parse(budgetkontoHistorikElement.Attribute(XName.Get("udgifter", string.Empty)).Value, NumberStyles.Any, CultureInfo.InvariantCulture);
                        var prevBogført    = decimal.Parse(budgetkontoHistorikElement.Attribute(XName.Get("bogfoert", string.Empty)).Value, NumberStyles.Any, CultureInfo.InvariantCulture);
                        switch (iteration)
                        {
                        case 0:
                            makeHistoric = (budgetkontoModel.StatusDato.Year != prevStatusDato.Year) ||
                                           (budgetkontoModel.StatusDato.Year == prevStatusDato.Year && budgetkontoModel.StatusDato.Month != prevStatusDato.Month) ||
                                           (budgetkontoModel.Indtægter != prevIndtægter) ||
                                           (budgetkontoModel.Udgifter != prevUdgifter) ||
                                           (budgetkontoModel.Bogført != prevBogført);
                            break;

                        default:
                            makeHistoric = (budgetkontoModel.StatusDato.Year != prevStatusDato.Year) ||
                                           (budgetkontoModel.StatusDato.Year == prevStatusDato.Year && budgetkontoModel.StatusDato.Month != prevStatusDato.Month) ||
                                           (sidsteMånedIndtægter != prevIndtægter) ||
                                           (sidsteMånedUdgifter != prevUdgifter) ||
                                           (budgetkontoModel.BogførtSidsteMåned != prevBogført);
                            break;
                        }
                    }
                    if (!makeHistoric)
                    {
                        continue;
                    }
                    budgetkontoHistorikElement = new XElement(XName.Get("BudgetkontoHistorik", regnskabElement.Name.NamespaceName));
                    budgetkontoHistorikElement.UpdateAttribute(XName.Get("kontonummer", string.Empty), budgetkontoModel.Kontonummer);
                    budgetkontoHistorikElement.UpdateAttribute(XName.Get("dato", string.Empty), budgetkontoHistorikDato);
                    switch (iteration)
                    {
                    case 0:
                        budgetkontoHistorikElement.UpdateAttribute(XName.Get("indtaegter", string.Empty), budgetkontoModel.Indtægter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                        budgetkontoHistorikElement.UpdateAttribute(XName.Get("udgifter", string.Empty), budgetkontoModel.Udgifter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                        budgetkontoHistorikElement.UpdateAttribute(XName.Get("bogfoert", string.Empty), budgetkontoModel.Bogført.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                        regnskabElement.Add(budgetkontoHistorikElement);
                        break;

                    default:
                        budgetkontoHistorikElement.UpdateAttribute(XName.Get("indtaegter", string.Empty), sidsteMånedIndtægter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                        budgetkontoHistorikElement.UpdateAttribute(XName.Get("udgifter", string.Empty), sidsteMånedUdgifter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                        budgetkontoHistorikElement.UpdateAttribute(XName.Get("bogfoert", string.Empty), budgetkontoModel.BogførtSidsteMåned.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                        regnskabElement.Add(budgetkontoHistorikElement);
                        break;
                    }
                    continue;
                }
                switch (iteration)
                {
                case 0:
                    budgetkontoHistorikElement.UpdateAttribute(XName.Get("indtaegter", string.Empty), budgetkontoModel.Indtægter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                    budgetkontoHistorikElement.UpdateAttribute(XName.Get("udgifter", string.Empty), budgetkontoModel.Udgifter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                    budgetkontoHistorikElement.UpdateAttribute(XName.Get("bogfoert", string.Empty), budgetkontoModel.Bogført.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                    break;

                default:
                    budgetkontoHistorikElement.UpdateAttribute(XName.Get("indtaegter", string.Empty), sidsteMånedIndtægter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                    budgetkontoHistorikElement.UpdateAttribute(XName.Get("udgifter", string.Empty), sidsteMånedUdgifter.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                    budgetkontoHistorikElement.UpdateAttribute(XName.Get("bogfoert", string.Empty), budgetkontoModel.BogførtSidsteMåned.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                    break;
                }
            }
        }