/// <summary> /// Gemmer data for en bogføringslinje i det lokale datalager. /// </summary> /// <param name="bogføringslinjeModel">Model for bogføringslinjen.</param> /// <param name="localeDataDocument">XML dokument, hvori data skal gemmes.</param> /// <param name="isStoringSynchronizedData">Angivelse af, om det er synkroniserede data, der gemmes.</param> public static void StoreInDocument(this IBogføringslinjeModel bogføringslinjeModel, XDocument localeDataDocument, bool isStoringSynchronizedData) { if (bogføringslinjeModel == null) { throw new ArgumentNullException("bogføringslinjeModel"); } if (localeDataDocument == null) { throw new ArgumentNullException("localeDataDocument"); } XElement accountingElement = localeDataDocument.GetRegnskabElement(bogføringslinjeModel.Regnskabsnummer); if (accountingElement == null) { return; } XElement postingLineElement = accountingElement.Elements(XName.Get("Bogfoeringslinje", accountingElement.Name.NamespaceName)).SingleOrDefault(m => m.Attribute(XName.Get("loebenummer", string.Empty)) != null && string.Compare(m.Attribute(XName.Get("loebenummer", string.Empty)).Value, bogføringslinjeModel.Løbenummer.ToString(CultureInfo.InvariantCulture), StringComparison.Ordinal) == 0); if (postingLineElement == null) { postingLineElement = new XElement(XName.Get("Bogfoeringslinje", accountingElement.Name.NamespaceName)); postingLineElement.UpdateAttribute(XName.Get("loebenummer", string.Empty), bogføringslinjeModel.Løbenummer.ToString(CultureInfo.InvariantCulture)); postingLineElement.UpdateAttribute(XName.Get("dato", string.Empty), GetHistorikDato(bogføringslinjeModel.Dato)); postingLineElement.UpdateAttribute(XName.Get("bilag", string.Empty), string.IsNullOrWhiteSpace(bogføringslinjeModel.Bilag) ? null : bogføringslinjeModel.Bilag, false); postingLineElement.UpdateAttribute(XName.Get("kontonummer", string.Empty), bogføringslinjeModel.Kontonummer); postingLineElement.UpdateAttribute(XName.Get("tekst", string.Empty), bogføringslinjeModel.Tekst); postingLineElement.UpdateAttribute(XName.Get("budgetkontonummer", string.Empty), string.IsNullOrWhiteSpace(bogføringslinjeModel.Budgetkontonummer) ? null : bogføringslinjeModel.Budgetkontonummer, false); postingLineElement.UpdateAttribute(XName.Get("debit", string.Empty), bogføringslinjeModel.Debit == 0M ? null : bogføringslinjeModel.Debit.ToString(CurrencyFormat, CultureInfo.InvariantCulture), false); postingLineElement.UpdateAttribute(XName.Get("kredit", string.Empty), bogføringslinjeModel.Kredit == 0M ? null : bogføringslinjeModel.Kredit.ToString(CurrencyFormat, CultureInfo.InvariantCulture), false); postingLineElement.UpdateAttribute(XName.Get("adressekonto", string.Empty), bogføringslinjeModel.Adressekonto == 0 ? null : bogføringslinjeModel.Adressekonto.ToString(CultureInfo.InvariantCulture), false); postingLineElement.UpdateAttribute(XName.Get("synkroniseret", string.Empty), isStoringSynchronizedData ? "true" : "false"); accountingElement.Add(postingLineElement); return; } XAttribute pendingAttribute = postingLineElement.Attribute(XName.Get("verserende", string.Empty)); if (pendingAttribute != null && string.IsNullOrWhiteSpace(pendingAttribute.Value) == false && Convert.ToBoolean(pendingAttribute.Value)) { return; } postingLineElement.UpdateAttribute(XName.Get("dato", string.Empty), GetHistorikDato(bogføringslinjeModel.Dato)); postingLineElement.UpdateAttribute(XName.Get("bilag", string.Empty), string.IsNullOrWhiteSpace(bogføringslinjeModel.Bilag) ? null : bogføringslinjeModel.Bilag, false); postingLineElement.UpdateAttribute(XName.Get("kontonummer", string.Empty), bogføringslinjeModel.Kontonummer); postingLineElement.UpdateAttribute(XName.Get("tekst", string.Empty), bogføringslinjeModel.Tekst); postingLineElement.UpdateAttribute(XName.Get("budgetkontonummer", string.Empty), string.IsNullOrWhiteSpace(bogføringslinjeModel.Budgetkontonummer) ? null : bogføringslinjeModel.Budgetkontonummer, false); postingLineElement.UpdateAttribute(XName.Get("debit", string.Empty), bogføringslinjeModel.Debit == 0M ? null : bogføringslinjeModel.Debit.ToString(CurrencyFormat, CultureInfo.InvariantCulture), false); postingLineElement.UpdateAttribute(XName.Get("kredit", string.Empty), bogføringslinjeModel.Kredit == 0M ? null : bogføringslinjeModel.Kredit.ToString(CurrencyFormat, CultureInfo.InvariantCulture), false); postingLineElement.UpdateAttribute(XName.Get("adressekonto", string.Empty), bogføringslinjeModel.Adressekonto == 0 ? null : bogføringslinjeModel.Adressekonto.ToString(CultureInfo.InvariantCulture), false); postingLineElement.UpdateAttribute(XName.Get("synkroniseret", string.Empty), isStoringSynchronizedData ? "true" : "false"); }
/// <summary> /// Danner en model, der indeholder resultatet af en bogføring. /// </summary> /// <param name="bogføringslinje">Bogført linje.</param> /// <param name="bogføringsadvarsler">Bogføringsadvarsler, som den bogførte linje har medført.</param> public BogføringsresultatModel(IBogføringslinjeModel bogføringslinje, IEnumerable <IBogføringsadvarselModel> bogføringsadvarsler) { if (bogføringslinje == null) { throw new ArgumentNullException("bogføringslinje"); } if (bogføringsadvarsler == null) { throw new ArgumentNullException("bogføringsadvarsler"); } _bogføringslinjeModel = bogføringslinje; _bogføringsadvarselModels = bogføringsadvarsler; }
/// <summary> /// Danner ViewModel for en bogføringslinje. /// </summary> /// <param name="regnskabViewModel">ViewModel for regnskabet, som bogføringslinjen skal være tilknyttet.</param> /// <param name="bogføringslinjeModel">Model for bogføringslinjen.</param> public BogføringslinjeViewModel(IRegnskabViewModel regnskabViewModel, IBogføringslinjeModel bogføringslinjeModel) { if (regnskabViewModel == null) { throw new ArgumentNullException("regnskabViewModel"); } if (bogføringslinjeModel == null) { throw new ArgumentNullException("bogføringslinjeModel"); } _regnskabViewModel = regnskabViewModel; _bogføringslinjeModel = bogføringslinjeModel; _bogføringslinjeModel.PropertyChanged += PropertyChangedOnBogføringslinjeModelEventHandler; }
/// <summary> /// Initierer en ny ViewModel til bogføring på et givent regnskab. /// </summary> /// <param name="regnskabViewModel">ViewModel for regnskabet, hvor en ny ViewModel til bogføring skal initieres.</param> /// <param name="bogføringslinjeModel">Model for en ny bogføringslinje, der efterfølgende kan bogføres.</param> /// <param name="argument">Argument til initiering af en ny ViewModel til bogføring.</param> private void HandleResult(IRegnskabViewModel regnskabViewModel, IBogføringslinjeModel bogføringslinjeModel, object argument) { if (regnskabViewModel == null) { throw new ArgumentNullException("regnskabViewModel"); } if (bogføringslinjeModel == null) { throw new ArgumentNullException("bogføringslinjeModel"); } if (argument == null) { throw new ArgumentNullException("argument"); } regnskabViewModel.BogføringSet(new BogføringViewModel(regnskabViewModel, bogføringslinjeModel, _finansstyringRepository, ExceptionHandler, _runRefreshTasks)); }