179 lines
5.1 KiB
C#
179 lines
5.1 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using BS.Shared;
|
|
using BS.Shared.Extensions;
|
|
using BeWo.Report;
|
|
using BeWo.Report.ReportObjects;
|
|
using BeWo.Data.Entities;
|
|
using BeWo.Data.Access;
|
|
using System.Collections.Generic;
|
|
using System.Windows.Forms.VisualStyles;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.Services;
|
|
using BS.Shared.DataContracts;
|
|
using BeWo.Service.DCEntityMapper;
|
|
using BeWo.Service.Plugins;
|
|
using BeWo.Service.ServiceImplementations;
|
|
|
|
namespace SozialeDienstleistungenSchoenberg
|
|
{
|
|
[IDSpecificClass(Identifier = "Kassenbestand")]
|
|
public partial class Kassenbestand : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
|
|
{
|
|
|
|
public Kassenbestand()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void SetReportDataSource(QueryRO pRO)
|
|
{
|
|
DateTime abfrageMonat = new DateTime(DateTime.Now.Year, 1, 1);
|
|
DateTime letztesDatum = DateTime.MinValue;
|
|
|
|
Dictionary<long, Kasse> oid2Kasse = new Dictionary<long, Kasse>();
|
|
List<Kasse> kassen = new List<Kasse>();
|
|
|
|
|
|
if (pRO.Rows != null)
|
|
{
|
|
if (pRO.Rows.Count > 0 && pRO.Rows[0].Field7 != null)
|
|
{
|
|
DateTime.TryParse(pRO.Rows[0].Field7.ToString(), out abfrageMonat);
|
|
}
|
|
foreach (var row in pRO.Rows)
|
|
{
|
|
|
|
long oid = Int64.Parse(row.Field1.ToString());
|
|
|
|
Kasse kto = null;
|
|
|
|
if (!oid2Kasse.ContainsKey(oid))
|
|
{
|
|
kto = new Kasse();
|
|
kto.Transaktionen = new List<BargeldtransaktionDC>();
|
|
kto.Name = String.Format("{0}", row.Field2);
|
|
|
|
kassen.Add(kto);
|
|
|
|
oid2Kasse.Add(oid, kto);
|
|
}
|
|
else
|
|
{
|
|
kto = oid2Kasse[oid];
|
|
}
|
|
|
|
BargeldtransaktionDC dc = new BargeldtransaktionDC();
|
|
|
|
if (row.Field3 != null && (bool) row.Field3)
|
|
{
|
|
dc.Zahlungstyp = Zahlungstyp.Auszahlung;
|
|
|
|
}
|
|
else
|
|
{
|
|
dc.Zahlungstyp = Zahlungstyp.Einzahlung;
|
|
}
|
|
decimal betrag = 0;
|
|
if (row.Field4 != null)
|
|
{
|
|
Decimal.TryParse(row.Field4.ToString(), out betrag);
|
|
}
|
|
dc.Betrag = betrag;
|
|
|
|
|
|
|
|
DateTime zahlungsdatum = DateTime.MinValue;
|
|
if (row.Field5 != null)
|
|
{
|
|
if (DateTime.TryParse(row.Field5.ToString(), out zahlungsdatum))
|
|
{
|
|
dc.Zahlungsdatum = zahlungsdatum;
|
|
}
|
|
|
|
}
|
|
DateTime insts = DateTime.MinValue;
|
|
if (row.Field8 != null)
|
|
{
|
|
if (DateTime.TryParse(row.Field8.ToString(), out insts))
|
|
{
|
|
if (insts > letztesDatum)
|
|
{
|
|
letztesDatum = insts;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
kto.Transaktionen.Add(dc);
|
|
|
|
}
|
|
}
|
|
|
|
decimal gesamt = 0;
|
|
decimal hauptkassegesamt = 0;
|
|
int rowIdx = 1;
|
|
QueryRO newRo = new QueryRO();
|
|
|
|
var stichtag = abfrageMonat.AddMonths(1);
|
|
|
|
foreach (var kto in kassen.OrderBy(k => k.Name))
|
|
{
|
|
QueryRO.Row row = new QueryRO.Row();
|
|
newRo.Rows.Add(row);
|
|
|
|
row.Field1 = String.Format("{0}", rowIdx++);
|
|
row.Field2 = kto.Name;
|
|
|
|
decimal kassenBetrag = GetGesamtBetrag(kto, stichtag);
|
|
|
|
gesamt += kassenBetrag;
|
|
row.Field3 = String.Format("{0:c}", kassenBetrag);
|
|
}
|
|
|
|
|
|
if (letztesDatum == DateTime.MinValue)
|
|
{
|
|
letztesDatum = DateTime.Now;
|
|
}
|
|
lblLetzterStand.Text = String.Format("{0:MMMM yyyy}", abfrageMonat);
|
|
|
|
|
|
lblGesamt.Text = String.Format("{0:c}", gesamt);
|
|
|
|
this.bindingSource1.DataSource = newRo;
|
|
}
|
|
|
|
private decimal GetGesamtBetrag(Kasse kto, DateTime stichtag)
|
|
{
|
|
decimal kassenBetrag = 0;
|
|
foreach (var t in kto.Transaktionen)
|
|
{
|
|
if (t.Zahlungsdatum.HasValue && t.Zahlungsdatum < stichtag)
|
|
{
|
|
if (t.Zahlungstyp == Zahlungstyp.Einzahlung)
|
|
{
|
|
kassenBetrag += t.Betrag ?? 0;
|
|
}
|
|
else
|
|
{
|
|
kassenBetrag -= t.Betrag ?? 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
return kassenBetrag;
|
|
}
|
|
|
|
internal class Kasse
|
|
{
|
|
public String Name { get; set; }
|
|
public decimal Betrag { get; set; }
|
|
public List<BargeldtransaktionDC> Transaktionen { get; set; }
|
|
}
|
|
|
|
}
|
|
|
|
}
|