98 lines
4.4 KiB
C#
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; }
|
|
}
|
|
} |