/// <summary> /// Validiert den Xml String gemäß ebInterface Standard und lädt das ebInterface Object aus derm Xml String /// </summary> /// <param name="fileName">Name of the file.</param> /// <returns> /// Ein neue <see cref="Models.InvoiceModel" /> Instanz /// </returns> public static IInvoiceModel Load(string fileName) { string xmlInvoice = File.ReadAllText(fileName); IInvoiceModel inv = LoadXml(xmlInvoice); return(inv); }
public void LoadFromInvoice(IInvoiceModel invoice) { var _invoice = invoice; _invoiceDate = _invoice.InvoiceDate; _invoiceDueDate = _invoice.PaymentConditions.DueDate; _dueDays = _invoiceDueDate.Days(_invoiceDate); _baseAmount = _invoice.TotalGrossAmount; SetFromPaymentConditions(_invoice.PaymentConditions); }
/// <summary> /// Constructor with View and Model dependency injection. /// </summary> /// <param name="view"></param> /// <param name="repository"></param> public MainPresenter(IMainWindow view, IInvoiceRepository repository, IInvoiceModel invoiceModel) { // dependency injection this._view = view; this._repo = repository; this._InvoiceModel = invoiceModel; // subscribe to the View's events this._view.InvoiceTypeSelected += InvoiceTypeSelected; this._view.NewInvoiceButtonClicked += NewInvoiceButtonClicked; this._view.CancelClicked += CancelButtonClicked; this._view.CustomTitleTextBoxTextChanged += CustomTitleTextChanged; this._view.MonthlyInvoiceMonthYearUpdated += MonthlyInvoiceMonthYearUpdated; this._view.NewItemDetailsUpdated += NewItemDetailsUpdated; this._view.AddItemButtonClicked += AddItemButtonClicked; this._view.ItemListSelectedIndexChanged += ItemListSelectedIndexChanged; this._view.DuplicateItemButtonClicked += DuplicateItemButtonClicked; this._view.RemoveItemButtonClicked += RemoveItemButtonClicked; this._view.SaveAndEmailButtonClicked += SaveAndEmailButtonClicked; this._view.SaveAndExportXLSXButtonClicked += SaveAndExportXLSXButtonClicked; this._view.PaidStatusChanged += PaidStatusChanged; this._view.UpdateRecordsButtonClicked += UpdateRecordsButtonClicked; this._view.InvoiceHistoryDataGridViewSelectionChanged += InvoiceHistorySelectionChanged; this._view.ViewSelectedInvoiceButtonClicked += ViewSelectedInvoiceButtonClicked; // enable/disable some controls initially this._view.NewInvoiceButtonEnabled = true; this._view.SaveAndEmailButtonEnabled = false; this._view.SaveAndExportXLButtonEnabled = false; this._view.CancelButtonEnabled = false; this._view.RadioButtonMonthlyEnabled = false; this._view.RadioButtonCustomEnabled = false; this._view.MonthComboboxEnabled = false; this._view.YearTextBoxEnabled = false; this._view.CustomTitleTextBoxEnabled = false; this._view.ItemDescriptionTextBoxEnabled = false; this._view.ItemAmountTextBoxEnabled = false; this._view.ItemQuantityUpDownEnabled = false; this._view.AddItemButtonEnabled = false; this._view.ItemsListViewEnabled = false; this._view.DuplicateItemButtonEnabled = false; this._view.RemoveItemButtonEnabled = false; this._view.ViewSelectedInvoiceButtonEnabled = false; this._view.UpdateRecordsButtonEnabled = false; // populate months combo box this._view.PopulateMonthsComboBox(this._InvoiceModel.ValidMonths); this._view.CreatingNewInvoice = true; // populate invoice history data grid this._view.InvoiceHistoryEntries = this._repo.GetAllInvoices(); }
private void UpdateDatesInTestTemplates() { var dirList = Directory.GetFiles(DataFolder, "*.xml"); foreach (string templFileName in dirList) { IInvoiceModel inv = InvoiceFactory.LoadTemplate(templFileName); DateTime oldInvDate = inv.InvoiceDate; // Save Invoicedate inv.InvoiceDate = DateTime.Today; int days = inv.InvoiceDate.Days(oldInvDate); if (inv.Delivery != null) { if (inv.Delivery.Item != null) { if (inv.Delivery.Item is DateTime deliveryDate) { inv.Delivery.Item = deliveryDate.AddDays(days); } if (inv.Delivery.Item is PeriodType period) { if (period.FromDate != DateTime.MinValue) { period.FromDate = ((DateTime)period.FromDate).AddDays(days); } if (period.ToDate != DateTime.MinValue) { period.ToDate = ((DateTime)period.ToDate).AddDays(days); } inv.Delivery.Item = period; } } } if (inv.PaymentConditions != null) { inv.PaymentConditions.DueDate = inv.PaymentConditions.DueDate.AddDays(days); } if (inv.PaymentConditions.Discount != null) { foreach (var item2 in inv.PaymentConditions.Discount) { item2.PaymentDate = item2.PaymentDate.AddDays(days); } } inv.SaveTemplate(templFileName); } }
public UpdateInvoiceViewModel(UnityContainer uc, IDialogService dlg, IInvoiceModel invoice) : base(dlg) { _uc = uc; _invoiceDate = invoice.InvoiceDate; _invoiceDueDate = invoice.PaymentConditions.DueDate; _invoiceNumber = invoice.InvoiceNumber; if (invoice.Delivery.Item != null) { if (invoice.Delivery.Item is DateTime) { _deliveryDate = (DateTime?)invoice.Delivery.Item; } else { _deliveryDate = ((PeriodType)invoice.Delivery.Item).FromDate; } } _dueDays = InvoiceDueDate.Days(InvoiceDate); }
/// <summary> /// Mapped ebInterface4p2 InvoiceType auf InvoiceType Model /// </summary> /// <param name="source">ebInterface4p2 InvoiceType</param> /// <returns>InvoiceType Model</returns> internal static IInvoiceModel MapV4P2ToVm(SRC.InvoiceType source) { IInvoiceModel invoice = InvoiceFactory.CreateInvoice(); #region Rechnungskopf invoice.InvoiceNumber = source.InvoiceNumber; invoice.InvoiceDate = source.InvoiceDate; invoice.GeneratingSystem = source.GeneratingSystem; invoice.DocumentTitle = source.DocumentTitle; invoice.DocumentType = source.DocumentType.ConvertEnum <DocumentTypeType>(); invoice.InvoiceCurrency = source.InvoiceCurrency.ToEnum(ModelConstants.CurrencyCodeFixed); // source.InvoiceCurrency.ConvertEnum<CurrencyType>(); if (!string.IsNullOrEmpty(source.Language)) { invoice.Language = source.Language.ToEnum(ModelConstants.LanguangeCodeFixed); //source.Language.ConvertEnum<LanguageType>(); // invoice.LanguageSpecified = true; } else { // invoice.LanguageSpecified = false; invoice.Language = ModelConstants.LanguangeCodeFixed; } invoice.Comment = source.Comment; if (source.CancelledOriginalDocument == null) { invoice.CancelledOriginalDocument = null; } else { invoice.CancelledOriginalDocument = new CancelledOriginalDocumentType() { Comment = source.CancelledOriginalDocument.Comment, DocumentType = source.CancelledOriginalDocument.DocumentType.ConvertEnum <DocumentTypeType>(), DocumentTypeSpecified = source.CancelledOriginalDocument.DocumentTypeSpecified, InvoiceDate = source.CancelledOriginalDocument.InvoiceDate, InvoiceNumber = source.CancelledOriginalDocument.InvoiceNumber }; } #endregion #region Releated Document if (source.RelatedDocument != null && source.RelatedDocument.Any()) { invoice.RelatedDocument = new List <RelatedDocumentType>(); foreach (SRC.RelatedDocumentType relDoc in source.RelatedDocument) { var newRel = new RelatedDocumentType() { Comment = relDoc.Comment, DocumentTypeSpecified = relDoc.DocumentTypeSpecified, InvoiceDateSpecified = relDoc.InvoiceDateSpecified, InvoiceNumber = relDoc.InvoiceNumber }; if (relDoc.InvoiceDateSpecified) { newRel.InvoiceDate = relDoc.InvoiceDate; } if (relDoc.DocumentTypeSpecified) { newRel.DocumentType = relDoc.DocumentType.ConvertEnum <DocumentTypeType>(); } invoice.RelatedDocument.Add(newRel); } } #endregion #region Delivery if (source.Delivery != null) { if (source.Delivery.Item is SRC.PeriodType) { var deliveryType = new PeriodType { FromDate = ((SRC.PeriodType)source.Delivery.Item).FromDate, ToDate = ((SRC.PeriodType)source.Delivery.Item).ToDate }; invoice.Delivery.Item = deliveryType; } else { // Invoice.Delivery.Item = source.Delivery.Item; var period = new PeriodType(); if (source.Delivery.Item != null) { period.FromDate = (DateTime)source.Delivery.Item; } invoice.Delivery.Item = period; // für das Model immer eine Lieferperiode, damit von/bis leichter abgebildet werden kann } } #endregion #region Biller invoice.Biller.VATIdentificationNumber = source.Biller.VATIdentificationNumber; invoice.Biller.InvoiceRecipientsBillerID = source.Biller.InvoiceRecipientsBillerID; invoice.Biller.Address = GetAddress(source.Biller.Address); invoice.Biller.Contact = GetContact(source.Biller.Address); invoice.Biller.FurtherIdentification = GetFurtherIdentification(source.Biller.FurtherIdentification); #endregion #region InvoiceRecipient invoice.InvoiceRecipient.BillersInvoiceRecipientID = source.InvoiceRecipient.BillersInvoiceRecipientID; invoice.InvoiceRecipient.VATIdentificationNumber = source.InvoiceRecipient.VATIdentificationNumber; invoice.InvoiceRecipient.Address = GetAddress(source.InvoiceRecipient.Address); invoice.InvoiceRecipient.Contact = GetContact(source.InvoiceRecipient.Address); invoice.InvoiceRecipient.OrderReference.OrderID = source.InvoiceRecipient.OrderReference.OrderID; invoice.InvoiceRecipient.OrderReference.ReferenceDateSpecified = source.InvoiceRecipient.OrderReference.ReferenceDateSpecified; invoice.InvoiceRecipient.OrderReference.ReferenceDate = source.InvoiceRecipient.OrderReference.ReferenceDate; invoice.InvoiceRecipient.FurtherIdentification = GetFurtherIdentification(source.InvoiceRecipient.FurtherIdentification); #endregion #region Details invoice.Details.HeaderDescription = source.Details.HeaderDescription; invoice.Details.FooterDescription = source.Details.FooterDescription; invoice.Details.ItemList = new List <ItemListType>(); if (source.Details.ItemList != null) { foreach (SRC.ItemListType srcItemList in source.Details.ItemList) { ItemListType item = new ItemListType { ListLineItem = new List <ListLineItemType>() }; foreach (SRC.ListLineItemType srcLineItem in srcItemList.ListLineItem) { ListLineItemType lineItem = new ListLineItemType { AdditionalInformation = null, PositionNumber = srcLineItem.PositionNumber, Description = new List <string>() }; if (srcLineItem.Description != null) { lineItem.Description = srcLineItem.Description.ToList(); } lineItem.ArticleNumber = GetArtikelList(srcLineItem.ArticleNumber); // Menge lineItem.Quantity = new UnitType { Unit = srcLineItem.Quantity.Unit, Value = srcLineItem.Quantity.Value }; // Einzelpreis lineItem.UnitPrice = new UnitPriceType() { Value = srcLineItem.UnitPrice.Value }; // Auftragsreferenz lineItem.InvoiceRecipientsOrderReference.OrderID = srcLineItem.InvoiceRecipientsOrderReference.OrderID; lineItem.InvoiceRecipientsOrderReference.OrderPositionNumber = srcLineItem.InvoiceRecipientsOrderReference.OrderPositionNumber; // Rabatte / Zuschläge if (srcLineItem.ReductionAndSurchargeListLineItemDetails != null) { lineItem.ReductionAndSurchargeListLineItemDetails = GetReductionDetails(srcLineItem.ReductionAndSurchargeListLineItemDetails); } lineItem.Description = new List <string>(); if (srcLineItem.Description != null) { lineItem.Description = srcLineItem.Description.ToList(); } //lineItem.LineItemAmount = srcLineItem.LineItemAmount; lineItem.ReCalcLineItemAmount(); // Steuer lineItem.TaxItem = MapVatItemType2Vm(srcLineItem.Item, lineItem.LineItemAmount); item.ListLineItem.Add(lineItem); } invoice.Details.ItemList.Add(item); } } if (source.Details.BelowTheLineItem != null) { // if (source.Details.BelowTheLineItem.Length > 0) // { // List<BelowTheLineItemType> belowItems = new List<BelowTheLineItemType>(); // foreach (SRC.BelowTheLineItemType item in source.Details.BelowTheLineItem) // { // belowItems.Add(new BelowTheLineItemType() // { // Description = item.Description, // LineItemAmount = item.LineItemAmount // }); // } // Invoice.Details.BelowTheLineItem.AddRange(belowItems); // } Mapping.MapInvoice.MappingErrors.Add(new MappingError(source.Details.BelowTheLineItem.GetType(), "BelowTheLineItem nicht konvertiert.")); } #endregion #region Tax invoice.CalculateTotals(); #endregion #region Amount invoice.TotalGrossAmount = source.TotalGrossAmount; invoice.PayableAmount = source.PayableAmount; #endregion #region PaymentMethod invoice.PaymentMethod.Comment = source.PaymentMethod.Comment; if (source.PaymentMethod.Item != null && source.PaymentMethod.Item.GetType() == typeof(SRC.UniversalBankTransactionType)) { SRC.UniversalBankTransactionType txType = source.PaymentMethod.Item as SRC.UniversalBankTransactionType; invoice.PaymentMethod = new PaymentMethodType { Item = new UniversalBankTransactionType() }; ((UniversalBankTransactionType)invoice.PaymentMethod.Item).BeneficiaryAccount = new List <AccountType>() { new AccountType() { BIC = txType.BeneficiaryAccount[0].BIC, BankName = txType.BeneficiaryAccount[0].BankName, IBAN = txType.BeneficiaryAccount[0].IBAN, BankAccountOwner = txType.BeneficiaryAccount[0].BankAccountOwner }, }; } #endregion #region PaymentConditions invoice.PaymentConditions.DueDate = source.PaymentConditions.DueDate; if (source.PaymentConditions.Discount != null) { invoice.PaymentConditions.Discount.Clear(); foreach (SRC.DiscountType srcDiscount in source.PaymentConditions.Discount) { DiscountType discount = new DiscountType() { Amount = srcDiscount.Amount, AmountSpecified = srcDiscount.AmountSpecified, BaseAmount = srcDiscount.BaseAmount, BaseAmountSpecified = srcDiscount.BaseAmountSpecified, PaymentDate = srcDiscount.PaymentDate, Percentage = srcDiscount.Percentage, PercentageSpecified = srcDiscount.PercentageSpecified }; invoice.PaymentConditions.Discount.Add(discount); } } #endregion return(invoice); }
public void Setup(string fn) { Invoice = InvoiceFactory.LoadTemplate(InvTemplate); }
public Common(string fn) { UContainer = ThisDocument.Register4Unity(); UpdateDatesInTestTemplates(); Invoice = InvoiceFactory.LoadTemplate(fn); }
/// <summary> /// Mapped ebInterface4p1 InvoiceType auf InvoiceType Model /// </summary> /// <param name="source">ebInterface4p1 InvoiceType</param> /// <returns>InvoiceType Model</returns> internal static IInvoiceModel MapV4P0ToVm(SRC.InvoiceType source) { IInvoiceModel invoice = InvoiceFactory.CreateInvoice(); #region Rechnungskopf invoice.InvoiceNumber = source.InvoiceNumber; invoice.InvoiceDate = source.InvoiceDate; invoice.GeneratingSystem = source.GeneratingSystem; invoice.DocumentTitle = source.DocumentTitle; invoice.DocumentType = source.DocumentType.ConvertEnum <DocumentTypeType>(); invoice.InvoiceCurrency = source.InvoiceCurrency.ConvertEnum <CurrencyType>(); // source.InvoiceCurrency.ConvertEnum<CurrencyType>(); invoice.Language = source.Language.ConvertEnum <LanguageType>(); if (source.CancelledOriginalDocument == null) { invoice.CancelledOriginalDocument = null; } else { invoice.CancelledOriginalDocument = new CancelledOriginalDocumentType() { DocumentTypeSpecified = false, InvoiceNumber = source.CancelledOriginalDocument }; } #endregion #region Delivery if (source.Delivery != null) { if (source.Delivery.Item is SRC.PeriodType) { var deliveryType = new PeriodType { FromDate = ((SRC.PeriodType)source.Delivery.Item).FromDate, ToDate = ((SRC.PeriodType)source.Delivery.Item).ToDate }; invoice.Delivery.Item = deliveryType; } else { var period = new PeriodType(); if (source.Delivery.Item != null) { period.FromDate = (DateTime)source.Delivery.Item; } invoice.Delivery.Item = period; // für das Model immer eine Lieferperiode, damit von/bis leichter abgebildet werden kann } } #endregion #region Biller invoice.Biller.VATIdentificationNumber = source.Biller.VATIdentificationNumber; invoice.Biller.InvoiceRecipientsBillerID = source.Biller.InvoiceRecipientsBillerID; invoice.Biller.Address = GetAddress(source.Biller.Address); invoice.Biller.Contact = GetContact(source.Biller.Address); invoice.Biller.FurtherIdentification = GetFurtherIdentification(source.Biller.FurtherIdentification); #endregion #region InvoiceRecipient invoice.InvoiceRecipient.BillersInvoiceRecipientID = source.InvoiceRecipient.BillersInvoiceRecipientID; invoice.InvoiceRecipient.VATIdentificationNumber = source.InvoiceRecipient.VATIdentificationNumber; invoice.InvoiceRecipient.Address = GetAddress(source.InvoiceRecipient.Address); invoice.InvoiceRecipient.Contact = GetContact(source.InvoiceRecipient.Address); if (source.InvoiceRecipient.OrderReference != null) { invoice.InvoiceRecipient.OrderReference.OrderID = source.InvoiceRecipient.OrderReference.OrderID; invoice.InvoiceRecipient.OrderReference.ReferenceDateSpecified = source.InvoiceRecipient.OrderReference.ReferenceDateSpecified; invoice.InvoiceRecipient.OrderReference.ReferenceDate = source.InvoiceRecipient.OrderReference.ReferenceDate; } invoice.InvoiceRecipient.FurtherIdentification = null; invoice.InvoiceRecipient.SubOrganizationID = source.InvoiceRecipient.SubOrganizationID; invoice.InvoiceRecipient.AccountingArea = source.InvoiceRecipient.AccountingArea; #endregion #region Details invoice.Details.HeaderDescription = source.Details.HeaderDescription; invoice.Details.FooterDescription = source.Details.FooterDescription; invoice.Details.ItemList = new List <ItemListType>(); if (source.Details.ItemList != null) { foreach (SRC.ItemListType srcItemList in source.Details.ItemList) { ItemListType item = new ItemListType { ListLineItem = new List <ListLineItemType>() }; foreach (SRC.ListLineItemType srcLineItem in srcItemList.ListLineItem) { ListLineItemType lineItem = new ListLineItemType { AdditionalInformation = null, PositionNumber = srcLineItem.PositionNumber, Description = new List <string>() }; if (srcLineItem.Description != null) { lineItem.Description = srcLineItem.Description.ToList(); } lineItem.ArticleNumber = GetArtikelList(srcLineItem.ArticleNumber); // Menge lineItem.Quantity = new UnitType { Unit = srcLineItem.Quantity.Unit, Value = srcLineItem.Quantity.Value }; // Einzelpreis lineItem.UnitPrice = new UnitPriceType() { Value = srcLineItem.UnitPrice }; // Auftragsreferenz lineItem.InvoiceRecipientsOrderReference.OrderID = srcLineItem?.InvoiceRecipientsOrderReference?.OrderID; lineItem.InvoiceRecipientsOrderReference.OrderPositionNumber = srcLineItem?.InvoiceRecipientsOrderReference?.OrderPositionNumber; // Rabatte / Zuschläge if (srcLineItem.ReductionAndSurchargeListLineItemDetails != null) { lineItem.ReductionAndSurchargeListLineItemDetails = GetReductionDetails(srcLineItem.ReductionAndSurchargeListLineItemDetails); } lineItem.Description = new List <string>(); if (srcLineItem.Description != null) { lineItem.Description = srcLineItem.Description.ToList(); } lineItem.LineItemAmount = srcLineItem.LineItemAmount; // Steuer lineItem.TaxItem = MapVatItemType2Vm(srcLineItem.TaxRate, lineItem.LineItemAmount); lineItem.ReCalcLineItemAmount(); item.ListLineItem.Add(lineItem); } invoice.Details.ItemList.Add(item); } } #endregion #region Tax invoice.CalculateTotals(); #endregion #region Amount invoice.TotalGrossAmount = source.TotalGrossAmount; invoice.PayableAmount = source.TotalGrossAmount; #endregion #region PaymentMethod invoice.PaymentMethod.Comment = source.PaymentMethod.Comment; { SRC.UniversalBankTransactionType txType = source.PaymentMethod as SRC.UniversalBankTransactionType; invoice.PaymentMethod = new PaymentMethodType { Item = new UniversalBankTransactionType() }; ((UniversalBankTransactionType)invoice.PaymentMethod.Item).BeneficiaryAccount = new List <AccountType>() { new AccountType() { BIC = txType.BeneficiaryAccount.First().BIC, BankName = txType.BeneficiaryAccount.First().BankName, IBAN = txType.BeneficiaryAccount.First().IBAN, BankAccountOwner = txType.BeneficiaryAccount.First().BankAccountOwner }, }; } #endregion #region Paymentconditions invoice.PaymentConditions.DueDate = source.PaymentConditions.DueDate; if (source.PaymentConditions.Discount != null) { invoice.PaymentConditions.Discount.Clear(); foreach (SRC.DiscountType srcDiscount in source.PaymentConditions.Discount) { DiscountType discount = new DiscountType() { Amount = srcDiscount.Amount, AmountSpecified = srcDiscount.AmountSpecified, BaseAmount = srcDiscount.BaseAmount, BaseAmountSpecified = srcDiscount.BaseAmountSpecified, PaymentDate = srcDiscount.PaymentDate, Percentage = srcDiscount.Percentage, PercentageSpecified = srcDiscount.PercentageSpecified }; invoice.PaymentConditions.Discount.Add(discount); } } #endregion return(invoice); }