dmdb/model/money/BankTransfer.cs

76 lines
4.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Xml.Serialization;
namespace dezentrale.model.money
{
[XmlType("BankTransfer")]
public class BankTransfer : MoneyTransfer
{
//This resembles an 1:1 data image from CSV entries.
[XmlElement] public string AccountInCharge { get; set; } = "";
[XmlElement] public DateTime BookingDate { get; set; }
[XmlElement] public string BookingText { get; set; } = "";
[XmlElement] public string CreditorID { get; set; } = "";
[XmlElement] public string MandateReference { get; set; } = "";
[XmlElement] public string ClientReference { get; set; } = "";
[XmlElement] public string Sammlerreferenz { get; set; } = "";
[XmlElement] public string LastschriftUrsprungsbetrag { get; set; } = "";
[XmlElement] public string AuslagenersatzRuecklastschrift { get; set; } = "";
[XmlElement] public string RecipientOrDebitor { get; set; } = "";
[XmlElement] public string IBAN { get; set; } = "";
[XmlElement] public string BIC { get; set; } = "";
[XmlElement] public string Info { get; set; } = "";
//During the CSV import process, generated BankTransfer objects will hold CsvFile/Line for later
//logging into member data / Main log (i.e. it is possible to track a MoneyTransfer from a
//Member object to a line from a specific csv file)
[XmlIgnore] public string CsvFile { get; set; } = null;
[XmlIgnore] public int CsvLine { get; set; } = 0;
public BankTransfer() : base() { }
public BankTransfer(List<string> csvHeadline, List<string> csvEntry, string csvFile = "", int csvLineNumber = 0) : base()
{
CsvFile = csvFile;
CsvLine = csvLineNumber;
int lc = csvEntry.Count;
if (lc > csvHeadline.Count) lc = csvHeadline.Count;
for (int i = 0; i < lc; i++)
{
switch (csvHeadline[i])
{
case "Auftragskonto": AccountInCharge = csvEntry[i]; break;
case "Buchungstag": BookingDate = DateTime.Parse(csvEntry[i]); break;
case "Valutadatum": ValutaDate = DateTime.Parse(csvEntry[i]); break;
case "Buchungstext": BookingText = csvEntry[i]; break;
case "Verwendungszweck": TransferReason = csvEntry[i]; break;
case "Glaeubiger ID": CreditorID = csvEntry[i]; break;
case "Mandatsreferenz": MandateReference = csvEntry[i]; break;
case "Kundenreferenz (End-to-End)": ClientReference = csvEntry[i]; break;
case "Sammlerreferenz": Sammlerreferenz = csvEntry[i]; break;
case "Lastschrift Ursprungsbetrag": LastschriftUrsprungsbetrag = csvEntry[i]; break;
case "Auslagenersatz Ruecklastschrift": AuslagenersatzRuecklastschrift = csvEntry[i]; break;
case "Beguenstigter/Zahlungspflichtiger": RecipientOrDebitor = csvEntry[i]; break;
case "Kontonummer/IBAN":
case "Kontonummer": IBAN = csvEntry[i]; break;
case "BIC (SWIFT-Code)":
case "BLZ": BIC = csvEntry[i]; break;
case "Betrag":
{
string sAmount = csvEntry[i].Replace(',', '.');
float fAmount = float.Parse(sAmount, System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
Amount = Convert.ToInt64(fAmount * 100);
} break;
case "Waehrung": Currency = csvEntry[i]; break;
case "Info": Info = csvEntry[i]; break;
default:
throw new Exception($"invalid csv headline field: \"{csvHeadline[i]}\" csvFile {csvFile} line {csvLineNumber}");
}
}
}
}
}