Files
BeWoPlaner/ReportImp/PerspektivenEV/Export/DatevExporterBthg.cs
Alexandra 67a8598de8 PerspektivenEV/Export/DatevExporterBthg und CollectiveInvoiceCreationBthg
neuer Bereich Traum mit ggf. neuen Kostenstellen
SupportOID=169021
2026-07-27 15:36:23 +02:00

703 lines
31 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
namespace PerspektivenEV.Export
{
public class DatevExporterBthg
{
public static QueryDC CreateQuery(QueryDC query)
{
DateTime dt = DateTime.Now;
DateTime.TryParse(query.Parameter[0].Value.ToString(), out dt);
query.FileName = String.Format("Datev Export {0:yyyyMM}.csv", dt);
DateTime dtStart = DateTime.MinValue;
DateTime dtEnd = DateTime.MaxValue;
if (query.Parameter.Count > 1)
{
DateTimeSpan span = query.Parameter[1].Value as DateTimeSpan;
dtStart = span.StartDate;
dtEnd = span.EndDate;
}
if (dtStart == DateTime.MinValue)
{
dtStart = new DateTime(1900, 1, 1);
}
query.QueryResult = GetAbrechnungenString(dt, dtStart, dtEnd);
return query;
}
public static String GetAbrechnungenString(DateTime date, DateTime rechnungsDatumVon, DateTime rechnungsDatumBis)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("Kontonummer;Umsatz;Gegenkonto;Belegdatum;Kost1;Belegfeld1;Buchungstext;Festschreibung");
var s = GetMonatlicheRechnungenString(date, rechnungsDatumVon, rechnungsDatumBis);
if (!String.IsNullOrWhiteSpace(s))
sb.Append(s);
var sAllg = GetMonatlicheAllgRechnungenString(date, rechnungsDatumVon, rechnungsDatumBis);
if (!String.IsNullOrWhiteSpace(sAllg))
{
if (sb.Length > 0)
sb.AppendLine();
sb.Append(sAllg);
}
var sLWV = GetMonatlicheSammelRechnungString(date, rechnungsDatumVon, rechnungsDatumBis);
if (!String.IsNullOrWhiteSpace(sLWV))
{
if (sb.Length > 0)
sb.AppendLine();
sb.Append(sLWV);
}
return sb.ToString();
}
public static String GetMonatlicheRechnungenString(DateTime date, DateTime rechnungsDatumVon, DateTime rechnungsDatumBis)
{
var sql = GetMonatlicheRechnungenSql(date, rechnungsDatumVon, rechnungsDatumBis);
/*
0 sip.Claim,
1 c.DebitorNumber,
2 ib.InvoiceDate,
3 ib.invoicenumber,
4 ib.Oid AS InvoiceOID,
5 c.CostCenter,
6 c2s.Oid,
7 ib.InvoiceId,
8 ib.RecipientOrganisation,
9 ii.ItemDescription,
10 ii.UnitDescription,
11 ii.SupportConceptAproOID
12 ii.Notice,
13 ii.AmountPerUnit,
14 ii.UnitCount,
15 ii.AmountTotal
*/
//Kontonummer; Umsatz; Gegenkonto; Belegdatum; Kost 1; Belegfeld 1; Buchungstext; Festschreibung
var dt = ExecuteQuery(sql, date, rechnungsDatumVon, rechnungsDatumBis);
StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
String orgaName = "";
String itemDescription = "";
String scapOid = "";
String isApproved = "";
if (row[8] != null)
orgaName = row[8].ToString();
if (row[9] != null && row[10] != null)
itemDescription = row[9].ToString() + " " + row[10].ToString();
if (row[11] != null)
scapOid = row[11].ToString();
if (row[12] != null)
isApproved = row[12].ToString();
if (sb.Length > 0)
sb.AppendLine();
DateTime lastDate = new DateTime(date.Year, date.Month, 1);
lastDate = lastDate.AddMonths(1).AddDays(-1);
sb.Append(String.Format("{0}", row[1])); //Debitornr. als Kontonummer
sb.Append(";");
sb.Append(String.Format("{0:0.00}", row[15])); //Umsatz - der Rechnungsposition
sb.Append(";");
var gegenkto = GetErloeskonto(itemDescription, orgaName, scapOid, isApproved, false);
sb.Append(gegenkto); //Gegenkonto - Auffang/Fehlerkonto 999999
sb.Append(";");
sb.Append(String.Format("{0:ddMM}", lastDate));
sb.Append(";");
var kostenstelle = GetKostenstelle(itemDescription, orgaName, scapOid);
sb.Append(kostenstelle); //Kostenstelle - Auffang/Fehlerkostenstelle 999
sb.Append(";");
sb.Append(String.Format("{0}", row[3]));
sb.Append(";");
String buchungstext = "";
long? c2sOid = (long?)row[6];
if (c2sOid.HasValue)
{
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(c2sOid.Value);
var c = c2s.SupportConcept.Customer;
buchungstext = String.Format("{0}, {1}, {2:dd}/{2:MM}", c.Person.LastName, c.Person.FirstName, lastDate);
}
sb.Append(buchungstext);
sb.Append(";");
//sb.Append(String.Format("{0}", itemDescription));
//sb.Append(";");
//sb.Append(String.Format("{0}", orgaName));
//sb.Append(";");
}
return sb.ToString();
}
public static String GetMonatlicheAllgRechnungenString(DateTime date, DateTime rechnungsDatumVon, DateTime rechnungsDatumBis)
{
var sql = GetMonatlicheAllgRechnungenSql(date, rechnungsDatumVon, rechnungsDatumBis);
/*
0 sip.Claim,
1 c.DebitorNumber,
2 ib.InvoiceDate,
3 ib.invoicenumber,
4 ib.Oid AS InvoiceOID,
5 c.CostCenter,
6 c2s.Oid,
7 ib.InvoiceId,
8 ib.RecipientOrganisation,
9 ii.ItemDescription,
10 ii.UnitDescription,
11 ii.SupportConceptAproOID
12 ii.Notice,
13 ii.AmountPerUnit,
14 ii.UnitCount,
15 ii.AmountTotal,
16 ib.CustomerOid,
17 ib.CostbearerOid
*/
//Kontonummer; Umsatz; Gegenkonto; Belegdatum; Kost 1; Belegfeld 1; Buchungstext; Festschreibung
var dt = ExecuteQuery(sql, date, rechnungsDatumVon, rechnungsDatumBis);
StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
String orgaName = "";
String itemDescription = "";
String unitDescription = "";
String isApproved = "";
long? cOid = null;
if (row[8] != null)
orgaName = row[8].ToString();
if (row[9] != null)
itemDescription = row[9].ToString();
if (row[10] != null)
unitDescription = row[10].ToString();
if (row[12] != null)
isApproved = row[12].ToString();
if (row[16] != null && row[16] != DBNull.Value)
cOid = long.Parse(row[16].ToString());
if (sb.Length > 0)
sb.AppendLine();
DateTime lastDate = new DateTime(date.Year, date.Month, 1);
lastDate = lastDate.AddMonths(1).AddDays(-1);
var debitor = "999998";
if (cOid != null)
{
var scs = DAOFactory.SearchDAO.GetAllActiveSupportConceptsByCustomers(new List<long>() { cOid.Value }, false).ToList();
if (scs != null && scs.Count != 0 && scs[0].CostBearer2SupportConceptList != null)
{
var sc = scs[0];
if (scs.Count > 1)
{
sc = scs.Where(p => p.StartDate < lastDate && p.EndDate > new DateTime(date.Year, date.Month, 1)).FirstOrDefault();
}
var cb2sc = sc.CostBearer2SupportConceptList.Where(s => s.CostBearer.Organisation.Name != "EIGENANTEIL" && s.CostBearer.Organisation.Name != "SELBSTZAHLER").FirstOrDefault();
if (cb2sc != null && cb2sc.KontoHilfeplan != null && cb2sc.KontoHilfeplan.Length > 0)
{
debitor = cb2sc.KontoHilfeplan;
}
}
}
//sb.Append(String.Format("{0}", row[1])); //Debitornr. als Kontonummer
sb.Append(debitor + ";");
sb.Append(String.Format("{0:0.00}", row[15])); //Umsatz - der Rechnungsposition
sb.Append(";");
//var gegenkto = GetErloeskonto(itemDescription, unitDescription, orgaName, isApproved);
//sb.Append(gegenkto); //Gegenkonto - Auffang/Fehlerkonto 999999
sb.Append("999999;");
sb.Append(String.Format("{0:ddMM}", lastDate));
sb.Append(";");
//var kostenstelle = GetKostenstelle(itemDescription, unitDescription, orgaName);
//sb.Append(kostenstelle); //Kostenstelle - Auffang/Fehlerkostenstelle 999
sb.Append("999;");
sb.Append(String.Format("{0}", row[3]));
sb.Append(";");
String buchungstext = String.Format("{0} {1:dd}/{1:MM}", orgaName, lastDate);
if (row[6].ToString().Length > 0)
{
int index = 0;
index = row[6].ToString().IndexOf("\r\n");
if (index == 0)
index = row[6].ToString().IndexOf("BEZAHLT");
else if (index > 0)
buchungstext = row[6].ToString().Remove(index);
else
buchungstext = row[6].ToString();
}
sb.Append(buchungstext);
sb.Append(";");
}
return sb.ToString();
}
public static String GetMonatlicheSammelRechnungString(DateTime date, DateTime rechnungsDatumVon, DateTime rechnungsDatumBis)
{
/*
0 sip.Claim,
1 c.DebitorNumber
2 ib.InvoiceDate,
3 ib.invoicenumber,
4 ib.Oid AS InvoiceOID,
5 c.CostCenter,
6 c2s.Oid,
7 ib.InvoiceId,
8 ib.RecipientOrganisation,
9 ii.ItemDescription,
10 ii.UnitDescription,
11 ii.SupportConceptAproOID
12 ii.Notice,
13 ii.AmountPerUnit,
14 ii.UnitCount,
15 ii.AmountTotal
*/
//Kontonummer; Umsatz; Gegenkonto; Belegdatum; Kost 1; Belegfeld 1; Buchungstext; Festschreibung
var sql = GetMonatlicheSammelRechnungPositionenSql(date, rechnungsDatumVon, rechnungsDatumBis);
var dt = ExecuteQuery(sql, date, rechnungsDatumVon, rechnungsDatumBis);
DateTime lastDate = new DateTime(date.Year, date.Month, 1);
lastDate = lastDate.AddMonths(1).AddDays(-1);
var hilfeplaene = CreateHilfeplanInfos();
StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
String orgaName = "";
String cName = "";
String itemDescription = "";
String isApproved = "";
long scApprovalPeriodOid = 0;
SupportConceptApprovalPeriod approvalPeriod = null;
CostBearer2SupportConcept cb2sc = null;
if (row[8] != null)
orgaName = row[8].ToString();
if (row[9] != null)
itemDescription = row[9].ToString();
if (row[11] != null)
{
scApprovalPeriodOid = (long)row[11];
var aktenzeichen = row[16];
var sipNotice = row[17];
try
{
approvalPeriod = DAOFactory.GenericDAO.LoadByID<SupportConceptApprovalPeriod>(scApprovalPeriodOid);
row[1] = approvalPeriod.CostBearer2SupportConcept.SupportConcept.Customer.DebitorNumber;
cName = approvalPeriod.CostBearer2SupportConcept.SupportConcept.Customer.Person.LastNameFirstName;
if (approvalPeriod.CostBearer2SupportConcept.ApprovedStartDate.HasValue)
isApproved = "true";
else
isApproved = "false";
}
catch (Exception)
{
try
{
var hpsAktAz = hilfeplaene.Where(a => a.Aktenzeichen == aktenzeichen.ToString());
if (hpsAktAz != null)
{
foreach (var hp in hpsAktAz)
{
if (date >= hp.Start && date <= hp.Ende)
{
cb2sc = hp.CostBearer2SupportConcept;
}
}
row[1] = cb2sc.SupportConcept.Customer.DebitorNumber;
cName = cb2sc.SupportConcept.Customer.Person.LastNameFirstName;
//unitDescription = sipNotice.ToString();
if (cb2sc.ApprovedStartDate.HasValue)
isApproved = "true";
else
isApproved = "false";
}
}
catch (Exception)
{
// continue - auch wenn gar nichts stimmt
}
}
}
if (sb.Length > 0)
{
sb.AppendLine();
}
sb.Append(String.Format("{0}", row[1])); //Debitornr. als Kontonummer
sb.Append(";");
sb.Append(String.Format("{0:0.00}", row[15])); //Umsatz - der Rechnungsposition
sb.Append(";");
var gegenkto = GetErloeskonto(itemDescription, orgaName, "", isApproved, true);
sb.Append(gegenkto); //Gegenkonto - Auffang/Fehlerkonto 999999
sb.Append(";");
sb.Append(String.Format("{0:ddMM}", lastDate));
sb.Append(";");
var kostenstelle = GetKostenstelle(itemDescription, orgaName, "");
sb.Append(kostenstelle); //Kostenstelle - Auffang/Fehlerkostenstelle 999
sb.Append(";");
sb.Append(String.Format("{0}", row[3]));
sb.Append(";");
String buchungstext = "";
buchungstext = String.Format("{0} {1:dd}/{1:MM}", cName, lastDate);
sb.Append(buchungstext);
sb.Append(";");
//sb.Append(String.Format("{0}", itemDescription));
//sb.Append(";");
//sb.Append(String.Format("{0}", orgaName));
//sb.Append(";");
}
return sb.ToString();
}
private static String GetErloeskonto(String itemDesc, String orgaName, string scapOid, String isApproved, bool isSammel)
{
if (itemDesc.Contains("Rechnungsdifferenz") && scapOid != "")
{
long oid = long.Parse(scapOid);
var scapEnt = DAOFactory.GenericDAO.LoadByID<SupportConceptApprovalPeriod>(oid);
if (scapEnt.ServiceCategory != null)
{
if (scapEnt.ServiceCategory.Abbreviation.Contains("BWHTK"))
itemDesc = "ieH HTK";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("BWTr"))
itemDesc = "ieH Trauma";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("BWKB"))
itemDesc = "ieH KB";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("BWFFM"))
itemDesc = "ieH FFM";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("TSOU"))
itemDesc = "TS HTK OU";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("TSKÖ"))
itemDesc = "TS HTK Kö";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("TSStb"))
itemDesc = "TS HTK Stb";
}
}
if (orgaName == "SELBSTZAHLER" || orgaName == "EIGENANTEIL")
{
if (itemDesc.Contains("Anfahrt"))
return "496100";
else if (itemDesc.Contains("BW"))
return "495805";
else if (itemDesc.Contains("Tagesstätte") || itemDesc.Contains("TS") || itemDesc.Contains("Flächen"))
return "467601";
else
return "999999";
}
else if (isSammel)
{
if (orgaName.Contains("LWV") || orgaName.Contains("Landeswohlfahrtsverband Hessen"))
{
if (itemDesc.StartsWith("Differenz"))
{
// Test;
}
if (itemDesc.Contains("Anfahrt"))
return "496100";
else if (itemDesc.Contains("ieH HTK"))
return "495800";
else if (itemDesc.Contains("ieH Trauma"))
return "495800";
else if (itemDesc.Contains("ieH FFM"))
return "495801";
else if (itemDesc.Contains("ieH KB"))
return "495802";
else if (itemDesc.Contains("TS"))
return "467600";
else if (itemDesc.ToLower().Contains("pfk") && itemDesc.ToLower().Contains("htk"))
return "496200";
else if (itemDesc.ToLower().Contains("pfk") && itemDesc.ToLower().Contains("ffm"))
return "496201";
else
return "999999";
}
else
{
if (itemDesc.Contains("Anfahrt"))
return "496100";
else if (itemDesc.Contains("ieH FFM") || itemDesc.Contains("BW FFM"))
return "495806";
else if (itemDesc.Contains("ieH HTK") || itemDesc.Contains("BW HTK"))
return "495803";
else if (itemDesc.Contains("ieH Trauma") || itemDesc.Contains("BW Tr"))
return "495803";
else if (itemDesc.Contains("ieH KB") || itemDesc.Contains("BW KB"))
return "495803";
else if (itemDesc.Contains("TS")) //scheint nicht vorzukommen, aber man weiß ja nie
return "467600";
else if (itemDesc.ToLower().Contains("pfk") && itemDesc.ToLower().Contains("htk"))
return "496200";
else if (itemDesc.ToLower().Contains("pfk") && itemDesc.ToLower().Contains("ffm"))
return "496201";
else
return "999999";
}
}
else
{
if (itemDesc.ToLower().Contains("pfk") && itemDesc.ToLower().Contains("htk"))
return "496200";
else if (itemDesc.ToLower().Contains("pfk") && itemDesc.ToLower().Contains("ffm"))
return "496201";
else if (itemDesc.ToLower().Contains("handgeld"))
return "496101";
else if (itemDesc.ToLower().Contains("pfk"))
return "496201";
return "999999";
}
}
private static String GetKostenstelle(String itemDesc, String orgaName, string scapOid)
{
//Überleistung für Selbstzahler
if ((itemDesc.Contains("Fahrtzeitenpauschale") || itemDesc.Contains("Pauschale Anfahrt") || itemDesc.StartsWith("SZ ")
|| itemDesc.Contains("Flächen") || itemDesc.Contains("Tagesstätte")) && scapOid != "")
{
long oid = long.Parse(scapOid);
var scapEnt = DAOFactory.GenericDAO.LoadByID<SupportConceptApprovalPeriod>(oid);
try
{
if (scapEnt != null && scapEnt.ServiceCategory != null)
{
if (scapEnt.ServiceCategory.Abbreviation.Contains("BWHTK"))
itemDesc = "ieH HTK";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("BWTr"))
itemDesc = "ieH Trauma";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("BWKB"))
itemDesc = "ieH KB";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("BWFFM"))
itemDesc = "ieH FFM";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("TSOU"))
itemDesc = "TS HTK OU";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("TSKÖ"))
itemDesc = "TS HTK Kö";
else if (scapEnt.ServiceCategory.Abbreviation.Contains("TSStb"))
itemDesc = "TS HTK Stb";
}
}
catch (Exception)
{
// ignore;
}
}
if (itemDesc == "Beratung")
return "350";
else if (itemDesc.Contains("ieH HTK") || itemDesc.Contains("BW HTK"))
return "150";
else if (itemDesc.Contains("ieH Trauma")) // neues ambulante Angebot - mittelfristig vermutlich eigene Kostenstelle
return "150";
else if (itemDesc.Contains("ieH KB") || itemDesc.Contains("BW KB"))
return "150";
else if (itemDesc.Contains("ieH FFM") || itemDesc.Contains("BW FFM"))
return "158";
else if (itemDesc.Contains("TS HTK OU") || itemDesc.Contains("TS OU") || itemDesc.Contains("Tagesstätte Oberursel")
|| itemDesc.Contains("TS HTK Stb") || itemDesc.Contains("TS Stb") || itemDesc.Contains("Tagesstätte Steinbach")
|| itemDesc.Contains("TS HTK Kö") || itemDesc.Contains("TS Kö") || itemDesc.Contains("Tagesstätte Königsstein"))
return "200";
else if (itemDesc.ToLower().Contains("pfk") || itemDesc.Contains("Handgeld"))
return "300";
else if (itemDesc.Contains("Traumberatung As"))
return "360";
else if (itemDesc.Contains("Traumberatung PnT"))
return "361";
else
return "999";
}
private static String GetMonatlicheRechnungenSql(DateTime date, DateTime rechnungsDatumVon, DateTime rechnungsDatumBis)
{
String sql = @"
select
sip.Claim,
CASE WHEN ib.RecipientOrganisation = 'EIGENANTEIL' THEN c2s.KontoHilfeplan ELSE c.DebitorNumber END AS DebitorNumber,
ib.InvoiceDate,
ib.invoicenumber,
ib.Oid AS InvoiceOID,
c.CostCenter,
c2s.Oid,
ib.InvoiceId,
ib.RecipientOrganisation,
ii.ItemDescription,
ii.UnitDescription,
ii.SupportConceptApprovalPeriodOid,
ii.Notice,
ii.AmountPerUnit,
ii.UnitCount,
ii.AmountTotal
from
person p
inner join customer c on c.personoid = p.oid
inner join supportconcept sc on sc.customeroid = c.oid
inner join costbearer2supportconcept c2s on c2s.supportconceptoid = sc.oid
inner join invoicebase ib on ib.costbearer2supportconceptoid = c2s.oid
inner join serviceinvoice si on si.invoicebaseoid = ib.oid
inner join serviceinvoiceperiod sip on sip.serviceinvoiceoid = si.oid
inner join invoiceitem ii on ii.serviceinvoiceperiodoid = sip.oid
WHERE ib.`AccountingPeriodEnd` >= ':MonatAbrechnung_Start' AND ib.`AccountingPeriodEnd` < ':MonatAbrechnung_End' and ib.IsActive = 1
AND ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' AND ib.`IsExported` = 0
ORDER BY invoiceoid, ii.ItemDescription
";
return sql;
}
private static String GetMonatlicheAllgRechnungenSql(DateTime date, DateTime rechnungsDatumVon, DateTime rechnungsDatumBis)
{
String sql = @"
select
'SUMME' AS 'sip.Claim',
'nix' AS 'c.DebitorNumber',
ib.InvoiceDate,
ib.invoicenumber,
ib.Oid AS InvoiceOID,
'nix' AS 'c.CostCenter',
ib.Notice AS 'c2s.Oid',
ib.InvoiceId,
ib.RecipientOrganisation,
ii.ItemDescription,
ii.UnitDescription,
ii.SupportConceptApprovalPeriodOid,
ii.Notice,
ii.AmountPerUnit,
ii.UnitCount,
ii.AmountTotal,
ib.RecipientCustomerOid,
ib.RecipientCostbearerOid
from
invoicebase ib
inner join invoiceitem ii on ii.InvoiceBaseOid = ib.Oid
WHERE ib.`AccountingPeriodEnd` >= ':MonatAbrechnung_Start' AND ib.`AccountingPeriodEnd` < ':MonatAbrechnung_End' and ib.IsActive = 1
AND ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' AND ib.`IsExported` = 0
ORDER BY invoiceoid, ii.ItemDescription
";
return sql;
}
private static String GetMonatlicheSammelRechnungPositionenSql(DateTime date, DateTime rechnungsDatumVon, DateTime rechnungsDatumBis)
{
String sql = @"
SELECT
sip.Claim,
'' AS DebitorNumber,
ib.InvoiceDate,
ib.invoicenumber,
ib.Oid AS InvoiceOID,
'' AS CostCenter,
'' AS Oid,
ib.InvoiceId,
ib.RecipientOrganisation,
ii.ItemDescription,
ii.UnitDescription,
ii.SupportConceptApprovalPeriodOid,
ii.Notice,
ii.AmountPerUnit,
ii.UnitCount,
ii.AmountTotal,
ii.Notice,
sip.Notice
FROM
invoicebase ib
JOIN serviceinvoice si ON si.invoicebaseoid = ib.oid
JOIN serviceinvoiceperiod sip ON sip.serviceinvoiceoid = si.oid
JOIN invoiceitem ii ON ii.serviceinvoiceperiodoid = sip.oid
WHERE ib.`AccountingPeriodEnd` >= ':MonatAbrechnung_Start' AND ib.`AccountingPeriodEnd` < ':MonatAbrechnung_End' and ib.IsActive = 1
AND ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' AND ib.InvoiceId = 'SammelrechnungBthg' AND ib.`IsExported` = 0
ORDER BY ii.ItemDescription
";
return sql;
}
public static DataTable ExecuteQuery(String sql, DateTime dt, DateTime rechnungsDatumVon, DateTime rechnungsDatumBis)
{
var newsql = sql;
newsql = newsql.Replace(":Abrechnungsmonat", String.Format("{0:dd.MM.yyyy}", dt));
newsql = newsql.Replace(":Belegnr", String.Format("{0:yyMM}", dt));
newsql = newsql.Replace(":Monat_MM", String.Format("{0:MM}", dt));
newsql = newsql.Replace(":Monat_Start", String.Format("{0:yyyy-MM-dd}", rechnungsDatumVon));
newsql = newsql.Replace(":Monat_End", String.Format("{0:yyyy-MM-dd}", rechnungsDatumBis));
newsql = newsql.Replace(":MonatAbrechnung_Start", String.Format("{0:yyyy-MM}-01", dt));
dt = dt.AddMonths(1);
newsql = newsql.Replace(":MonatAbrechnung_End", String.Format("{0:yyyy-MM}-01", dt));
return DAOFactory.AdoDAO.ExecuteQuery(newsql).Tables[0];
}
private static List<HilfeplanInfo> CreateHilfeplanInfos()
{
List<HilfeplanInfo> liste = new List<HilfeplanInfo>();
var scList = DAOFactory.GenericDAO.GetAllActiveAndArchived<SupportConcept>();
foreach (var supportConcept in scList)
{
foreach (var cb2sc in supportConcept.CostBearer2SupportConceptList)
{
HilfeplanInfo hi = new HilfeplanInfo();
hi.Start = cb2sc.StartDate;
hi.Ende = cb2sc.EndDate;
hi.Aktenzeichen = cb2sc.CustomerReferenceNumber;
hi.CostBearer2SupportConcept = cb2sc;
hi.CustomerFirstName = cb2sc.SupportConcept.Customer.Person.FirstName;
hi.CustomerLastName = cb2sc.SupportConcept.Customer.Person.LastName;
//hi.BescheidVom =
if (hi.Start.HasValue && hi.Ende.HasValue && !String.IsNullOrEmpty(hi.Aktenzeichen))
{
liste.Add(hi);
}
}
}
return liste;
}
}
}