Files
BeWoPlaner/Report/ReportObjects/KassenbuchRO.cs

98 lines
4.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared.DataContracts;
namespace BeWo.Report.ReportObjects
{
public class KassenbuchRO : AbstractBeWoReportObject<KassenbuchRO>
{
public List<ZeilenObjekt> Transaktionen { get; set; }
public DateTime Zeitraum { get; set; }
public decimal Anfangsbestand { get; set; }
public string Kassenname { get; set; }
public string Beguenstigter { get; set; }
public string ReportTitle { get; set; }
public DateTime StartZeitraum { get; set; }
public DateTime EndZeitraum { get; set; }
public static KassenbuchRO Create(DateTime pZeitraum, BargeldkassenDC pBargeldkasse, BeWoEntityBase pBeguenstigter)
{
var beguenstigter = string.Empty;
if (pBeguenstigter is Customer)
{
var customer = (Customer) pBeguenstigter;
beguenstigter = customer.Person.FirstNameLastName;
}
var t = pBargeldkasse.Bargeldtransaktionen.Where(w => w.Zahlungsdatum != null && w.Zahlungsdatum.Value.Year == pZeitraum.Year && w.Zahlungsdatum.Value.Month == pZeitraum.Month).OrderByDescending(o => o.Zahlungsdatum).Select(tDC => new ZeilenObjekt
{
Einzahlung = tDC.Zahlungstyp == Zahlungstyp.Einzahlung && tDC.Betrag != null ? tDC.Betrag.Value : 0,
Auszahlung = tDC.Zahlungstyp == Zahlungstyp.Auszahlung && tDC.Betrag != null ? tDC.Betrag.Value : 0,
Bestand = tDC.Transaktionskassenbestand.Value,
Belegdatum = tDC.Zahlungsdatum.Value,
Notiz = tDC.Notice
}).ToList();
var ersteTransaktion = pBargeldkasse.Bargeldtransaktionen.OrderBy(o => o.Zahlungsdatum).ToList()[0];
return new KassenbuchRO
{
Kassenname = pBargeldkasse.Kassenname,
Beguenstigter = beguenstigter,
Zeitraum = pZeitraum,
Transaktionen = t,
Anfangsbestand = ersteTransaktion.Transaktionskassenbestand.Value - ersteTransaktion.Betrag.Value * (ersteTransaktion.Zahlungstyp == Zahlungstyp.Einzahlung ? 1 : -1),
ReportTitle = string.Format("Kassenbuch \"{0}\" {1}{2}", pBargeldkasse.Kassenname, pZeitraum.ToString("MMMM yyyy"), (pBeguenstigter == null ? string.Empty : string.Format(" von {0}", beguenstigter)))
};
}
public static KassenbuchRO Create(DateTime pStartZeitraum,DateTime pEndZeitraum, BargeldkassenDC pBargeldkasse, BeWoEntityBase pBeguenstigter)
{
var beguenstigter = string.Empty;
if (pBeguenstigter is Customer)
{
var customer = (Customer)pBeguenstigter;
beguenstigter = customer.Person.FirstNameLastName;
}
var t = pBargeldkasse.Bargeldtransaktionen.Where(w => w.Zahlungsdatum != null && w.Zahlungsdatum.Value >= pStartZeitraum && w.Zahlungsdatum <= pEndZeitraum).OrderByDescending(o => o.Zahlungsdatum).Select(tDC => new ZeilenObjekt
{
Einzahlung = tDC.Zahlungstyp == Zahlungstyp.Einzahlung && tDC.Betrag != null ? tDC.Betrag.Value : 0,
Auszahlung = tDC.Zahlungstyp == Zahlungstyp.Auszahlung && tDC.Betrag != null ? tDC.Betrag.Value : 0,
Bestand = tDC.Transaktionskassenbestand.Value,
Belegdatum = tDC.Zahlungsdatum.Value,
Notiz = tDC.Notice
}).ToList();
var ersteTransaktion = pBargeldkasse.Bargeldtransaktionen.OrderBy(o => o.Zahlungsdatum).ToList()[0];
return new KassenbuchRO
{
Kassenname = pBargeldkasse.Kassenname,
Beguenstigter = beguenstigter,
StartZeitraum = pStartZeitraum,
EndZeitraum = pEndZeitraum,
Transaktionen = t,
Anfangsbestand = ersteTransaktion.Transaktionskassenbestand.Value - ersteTransaktion.Betrag.Value * (ersteTransaktion.Zahlungstyp == Zahlungstyp.Einzahlung ? 1 : -1)
};
}
}
public struct ZeilenObjekt
{
public decimal Einzahlung { get; set; }
public decimal Auszahlung { get; set; }
public decimal Bestand { get; set; }
public DateTime? Belegdatum { get; set; }
public string Notiz { get; set; }
}
}