703 lines
31 KiB
C#
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;
|
|
}
|
|
}
|
|
} |