AkkuratDienstleistungsgesellschaft/Export/AddisonExporter.cs - Spitzabrechnung + Avise neu dazu
This commit is contained in:
@@ -14,6 +14,8 @@ namespace Akkurat.Export
|
||||
{
|
||||
public class AddisonExporter
|
||||
{
|
||||
// Export Abschlagszahlungen vorbereitet, da fehlt noch das genaue Format
|
||||
// Spitzabrechnungen und Erlöskonten sind soweit drin, einmal testen
|
||||
|
||||
public static QueryDC CreateQuery(QueryDC query)
|
||||
{
|
||||
@@ -24,6 +26,11 @@ namespace Akkurat.Export
|
||||
query.FileName = String.Format("deb {0:yyMM}csv", dt);
|
||||
query.QueryResult = GetDebitorenString(dt);
|
||||
}
|
||||
else if (query.Title == "Export Abschlagszahlungen")
|
||||
{
|
||||
query.FileName = String.Format("avise {0:yyyyMM}.csv", dt);
|
||||
query.QueryResult = GetAbrechnungenString(dt);
|
||||
}
|
||||
else
|
||||
{
|
||||
query.FileName = String.Format("fibu {0:yyyyMM}.csv", dt);
|
||||
@@ -62,28 +69,45 @@ namespace Akkurat.Export
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("B;Mandant;Monat;Buchungsdatum;Rechnungsnummer;Buchungstext;Betrag;Konto;Gegenkonto;Debitor");
|
||||
|
||||
var s = GetMonatlicheBetraegeString(date);
|
||||
|
||||
var s = GetMonatlicheBetraegeString(date, true);
|
||||
if (!String.IsNullOrWhiteSpace(s))
|
||||
{
|
||||
sb.Append(s);
|
||||
}
|
||||
|
||||
s = GetMonatlicheBetraegeString(date, false);
|
||||
if (!String.IsNullOrWhiteSpace(s))
|
||||
{
|
||||
if (sb.Length > 0)
|
||||
{
|
||||
sb.AppendLine();
|
||||
}
|
||||
sb.Append(s);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public static String GetMonatlicheBetraegeString(DateTime date)
|
||||
public static String GetMonatlicheBetraegeString(DateTime date, bool umsaetze)
|
||||
{
|
||||
var sql = GetMonatlicheBetraegeLvrSql(date);
|
||||
|
||||
/*
|
||||
'Betrag',
|
||||
c.DebitorNumber,
|
||||
c.CostCenter,
|
||||
CONCAT(p.`LastName`, ', ', p.`FirstName`) as 'Verwendung',
|
||||
cb2sc.Oid,
|
||||
cb2sc.Notice AS 'Kostenstelle',
|
||||
'Betrag',
|
||||
c.DebitorNumber,
|
||||
c.CostCenter,
|
||||
CONCAT(p.`LastName`, ', ', p.`FirstName`) as 'Verwendung',
|
||||
cb2sc.Oid,
|
||||
cb2sc.Notice AS 'Kostenstelle',
|
||||
*/
|
||||
//"B;Mandant;Monat;Buchungsdatum;Rechnungsnummer;Buchungstext;Betrag;Konto;Gegenkonto;Debitor"
|
||||
string sql = "";
|
||||
if (umsaetze)
|
||||
{
|
||||
sql = GetMonatlicheBetraegeLvrSql(date);
|
||||
}
|
||||
else
|
||||
{
|
||||
sql = GetSpitzabrechnungSql(date);
|
||||
}
|
||||
var dt = ExecuteQuery(sql, date);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
@@ -95,13 +119,23 @@ cb2sc.Notice AS 'Kostenstelle',
|
||||
}
|
||||
DateTime lastDate = new DateTime(date.Year, date.Month, 1);
|
||||
lastDate = lastDate.AddMonths(1).AddDays(-1);
|
||||
|
||||
if(!umsaetze && row[5].ToString().Length > 0)
|
||||
{
|
||||
lastDate = (DateTime)row[5];
|
||||
}
|
||||
sb.Append("B;499;");
|
||||
sb.Append(String.Format("{0:MM}{0:yyyy}", lastDate));
|
||||
sb.Append(";");
|
||||
sb.Append(String.Format("{0:dd.MM.yyyy}", lastDate));
|
||||
sb.Append(";");
|
||||
sb.Append(String.Format("{0:MM}{0:yyyy}", lastDate)); //Rechnungsnummer noch zu klären
|
||||
if(!umsaetze)
|
||||
{
|
||||
sb.Append(row[4]);
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(String.Format("{0:MM}{0:yyyy}", lastDate)); //Rechnungsnummer noch zu klären
|
||||
}
|
||||
sb.Append(";");
|
||||
sb.Append(String.Format("{0:MM}{0:yy} ABW {1}", lastDate, row[3])); //Buchungstext
|
||||
sb.Append(";");
|
||||
@@ -116,7 +150,7 @@ cb2sc.Notice AS 'Kostenstelle',
|
||||
sb.Append(";");
|
||||
sb.Append(String.Format("{0}", row[1])); //Debitor als Konto
|
||||
sb.Append(";");
|
||||
sb.Append("8273"); // Erlöskonto
|
||||
sb.Append(String.Format("{0}", row[2])); // Erlöskonto
|
||||
sb.Append(";");
|
||||
sb.Append(String.Format("{0}", row[1])); //Debitor
|
||||
sb.Append(";");
|
||||
@@ -142,6 +176,29 @@ ORDER BY p.`LastName`, p.FirstName
|
||||
return sql;
|
||||
}
|
||||
|
||||
private static String GetSpitzabrechnungSql(DateTime date)
|
||||
{
|
||||
|
||||
String sql = @"
|
||||
SELECT
|
||||
Round(si.Claim, 2),
|
||||
c.DebitorNumber,
|
||||
c.CostCenter,
|
||||
CONCAT('Abrechnung ', , p.`LastName`, ' ', p.`FirstName`),
|
||||
ib.InvoiceNumber,
|
||||
date_format(ib.InvoiceDate, '%d.%m.%Y')
|
||||
from invoicebase ib
|
||||
join settlementinvoice si on si.invoicebaseoid = ib.oid
|
||||
join supportconcept sc on sc.oid = ib.supportconceptoid
|
||||
join customer c on c.oid = sc.customeroid
|
||||
join `person` p on c.`PersonOid` = p.`Oid`
|
||||
where ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End'
|
||||
and ib.type = 1 and ib.isactive = 1 and c.isactive <> 0
|
||||
";
|
||||
|
||||
return sql;
|
||||
}
|
||||
|
||||
private static String GetMonatlicheBetraegeLvrSql(DateTime date)
|
||||
{
|
||||
String sql = @"
|
||||
@@ -204,6 +261,26 @@ ORDER BY p.`LastName`, p.FirstName
|
||||
return sql;
|
||||
}
|
||||
|
||||
private static String GetAbschlagszahlungenSql(DateTime date)
|
||||
{
|
||||
String sql = @"
|
||||
SELECT
|
||||
Round(at.Amount, 2) as 'Betrag',
|
||||
c.DebitorNumber,
|
||||
c.CostCenter,
|
||||
CONCAT('Abschlagszahlung ', p.FirstName, ' ', p.LastName) as 'Buchungstext',
|
||||
date_format(at.BookingDate, '%d.%m.%Y')
|
||||
from accountingtransaction at
|
||||
join costbearer2supportconcept c2s on c2s.oid = at.costbearer2supportconceptoid
|
||||
join supportconcept sc on sc.oid = c2s.supportconceptoid
|
||||
join customer c on sc.customeroid = c.oid
|
||||
join person p on c.personoid = p.oid
|
||||
WHERE at.`BookingDate` >= ':Monat_Start' AND at.`BookingDate` < ':Monat_End' and c.`IsActive` <> 0 AND sc.`IsActive` <> 0
|
||||
ORDER BY p.`LastName`, p.`FirstName`
|
||||
";
|
||||
return sql;
|
||||
}
|
||||
|
||||
public static DataTable ExecuteQuery(String sql, DateTime dt)
|
||||
{
|
||||
var newsql = sql;
|
||||
|
||||
Reference in New Issue
Block a user