SozialwerkAachenerChristen Rechnungsvorlagen und Invoicing

This commit is contained in:
2023-08-15 10:03:45 +02:00
parent 126ae740a3
commit 1c89358e75
23 changed files with 2549 additions and 435 deletions

View File

@@ -3,7 +3,7 @@
<PropertyGroup>
<NameOfLastUsedPublishProfile>BeWo2.0</NameOfLastUsedPublishProfile>
<UseIISExpress>true</UseIISExpress>
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
<Use64BitIISExpress>false</Use64BitIISExpress>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Core;
using BeWo.Service.Plugins;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using Utils = BS.Shared.Core.Utils;
namespace LebenshilfeBadKreuznach.Export
{
public class CustomDataExporter : DataExporter
{
public override QueryDC CreateQuery(QueryDC query)
{
return SageExporter.CreateQuery(query);
}
}
}

View File

@@ -0,0 +1,160 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
namespace LebenshilfeBadKreuznach.Export
{
public class SageExporter
{
public static QueryDC CreateQuery(QueryDC query)
{
DateTime dt = DateTime.Now;
DateTime.TryParse(query.Parameter[0].Value.ToString(), out dt);
query.FileName = String.Format("SageExport{0:yyyyMM}.csv", dt);
query.QueryResult = GetAbrechnungenString(dt);
return query;
}
public static String GetAbrechnungenString(DateTime date)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("Buchungsdatum; Belegdatum; Belegnummer; Buchungstext; Sollkonto; Habenkonto; Umsatz; Währung; Steuerart; Steuercode; " +
"Kostenstelle Soll; Kostenstelle Haben; Kostenträger Soll; Kostenträger Haben; Kostenart; Buchungskreis");
var s = GetMonatlicheRechnungenString(date);
if (!String.IsNullOrWhiteSpace(s))
{
sb.Append(s);
}
//s = GetMonatlicheBetraegeString(date);
//if (!String.IsNullOrWhiteSpace(s))
//{
// if (sb.Length > 0)
// sb.AppendLine();
// sb.Append(s);
//}
return sb.ToString();
}
public static String GetMonatlicheRechnungenString(DateTime date)
{
var sql = GetMonatlicheRechnungenSql(date);
/*
cb2sc.Oid,
ib.InvoiceNumber,
c.DebitorNumber,
Round(ii.AmountTotal, 2) AS 'Betrag',
ib.InvoiceDate,
org.Name AS 'VerwendungOrg'
CONCAT(p.`LastName`, ', ', p.`FirstName`) as 'VerwendungPerson',
org.DebitorNumber,
ii.ItemDescription,
c.CostCenter,
ib.Oid,
ib.AccountingPeriodEnd,
*/
//sb.AppendLine("Belegdatum;Belegnummer;Debitorennummer;Kontonummer;Betrag;Buchungstext;Kostenstelle");
//sb.AppendLine("Buchungsdatum; Belegdatum; Belegnummer; Buchungstext; Sollkonto; Habenkonto; Umsatz; Währung; Steuerart; Steuercode; " +
// "Kostenstelle Soll; Kostenstelle Haben; Kostenträger Soll; Kostenträger Haben; Kostenart; Buchungskreis");
var dt = ExecuteQuery(sql, date);
StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
if (sb.Length > 0)
{
sb.AppendLine();
}
sb.Append(String.Format("{0:dd.MM.yyyy}", row[4]));
sb.Append(";");
sb.Append(String.Format("{0:dd.MM.yyyy}", row[4]));
sb.Append(";");
sb.Append(String.Format("{0}", row[1]));
sb.Append(";");
String buchungstext = String.Format("AR {0} {1:MM}/{1:yyyy} {2}", row[5], row[4], row[6]);
sb.Append(buchungstext);
sb.Append(";");
sb.Append(String.Format("{0}", row[7])); // Sollkonto - Kundennr. Kostenträger
sb.Append(";");
String hbnKto = "S82026"; // Habenkonto für BG1 und BG"
if (row[8].ToString().Contains("Wegevergütung"))
{
hbnKto = "S82029";
}
sb.Append(String.Format("{0}", hbnKto)); // Habenkonto
sb.Append(";");
sb.Append(String.Format("{0:0.00}", row[3]));
sb.Append(";EUR;;;");
sb.Append(String.Format("{0}", row[9]));
sb.Append(";;;;;11");
}
return sb.ToString();
}
private static String GetMonatlicheRechnungenSql(DateTime date)
{
String sql = @"
SELECT
cb2sc.Oid,
ib.InvoiceNumber,
c.DebitorNumber,
Round(ii.AmountTotal, 2) AS 'Betrag',
ib.InvoiceDate,
org.Name AS 'VerwendungOrg',
CONCAT(p.`LastName`, ', ', p.`FirstName`) as 'VerwendungPerson',
org.DebitorNumber,
ii.ItemDescription,
c.CostCenter,
ib.Oid,
ib.AccountingPeriodEnd,
(select t.name from team t inner join team2customer t2c on t2c.teamoid = t.oid where t2c.customeroid = c.Oid limit 1)
FROM `supportconcept` sc
INNER JOIN `costbearer2supportconcept` cb2sc ON sc.`Oid` = cb2sc.`SupportConceptOid`
INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid`
INNER JOIN `organisation` org ON org.`CostBearerOid` = cb.`Oid`
INNER JOIN `customer` c ON sc.`CustomerOid` = c.`Oid`
INNER JOIN `person` p on c.`PersonOid` = p.`Oid`
INNER JOIN invoicebase ib on ib.costbearer2supportconceptoid = cb2sc.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` >= ':Monat_Start' AND ib.`AccountingPeriodEnd` < ':Monat_End' and ib.IsActive = 1
ORDER BY p.`LastName`, p.`FirstName`, cb2sc.`ApprovedStartDate`
";
return sql;
}
public static DataTable ExecuteQuery(String sql, DateTime dt)
{
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}-01", dt));
dt = dt.AddMonths(1);
newsql = newsql.Replace(":Monat_End", String.Format("{0:yyyy-MM}-01", dt));
return DAOFactory.AdoDAO.ExecuteQuery(newsql).Tables[0];
}
}
}

View File

@@ -48,6 +48,8 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Export\CustomDataExporter.cs" />
<Compile Include="Export\SageExporter.cs" />
<Compile Include="Invoicing\CustomCalculations.cs" />
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />

View File

@@ -44,22 +44,6 @@ namespace LebenshilfeBadKreuznach
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable3 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow5 = new DevExpress.XtraReports.UI.XRTableRow();
@@ -119,7 +103,6 @@ namespace LebenshilfeBadKreuznach
this.xrTableCell41 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
@@ -170,11 +153,10 @@ namespace LebenshilfeBadKreuznach
this.xrLabel2,
this.xrLabel3,
this.xrLabel9,
this.xrTable2,
this.xrLabel5,
this.xrTable3});
this.Page1.Font = new System.Drawing.Font("Arial", 10F);
this.Page1.HeightF = 424.8433F;
this.Page1.HeightF = 349.8433F;
this.Page1.Name = "Page1";
this.Page1.StylePriority.UseBorderWidth = false;
this.Page1.StylePriority.UseFont = false;
@@ -246,7 +228,7 @@ namespace LebenshilfeBadKreuznach
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.CanShrink = true;
this.xrLabel3.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0.2605438F, 401.7183F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 314.2183F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(345.13F, 20F);
@@ -269,240 +251,6 @@ namespace LebenshilfeBadKreuznach
this.xrLabel9.Text = "[CustomerLastName], [CustomerFirstName]";
this.xrLabel9.WordWrap = false;
//
// xrTable2
//
this.xrTable2.Font = new System.Drawing.Font("Arial", 9F);
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 284.4266F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow4,
this.xrTableRow3,
this.xrTableRow2});
this.xrTable2.SizeF = new System.Drawing.SizeF(640F, 75F);
this.xrTable2.StylePriority.UseFont = false;
//
// xrTableRow4
//
this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell14,
this.xrTableCell15,
this.xrTableCell16,
this.xrTableCell17});
this.xrTableRow4.Name = "xrTableRow4";
this.xrTableRow4.Weight = 1D;
//
// xrTableCell14
//
this.xrTableCell14.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell14.BorderColor = System.Drawing.Color.Black;
this.xrTableCell14.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)));
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell14.StylePriority.UseBackColor = false;
this.xrTableCell14.StylePriority.UseBorderColor = false;
this.xrTableCell14.StylePriority.UseBorders = false;
this.xrTableCell14.StylePriority.UsePadding = false;
this.xrTableCell14.StylePriority.UseTextAlignment = false;
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell14.Weight = 0.57272669822000166D;
//
// xrTableCell15
//
this.xrTableCell15.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell15.BorderColor = System.Drawing.Color.Black;
this.xrTableCell15.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrTableCell15.Name = "xrTableCell15";
this.xrTableCell15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell15.StylePriority.UseBackColor = false;
this.xrTableCell15.StylePriority.UseBorderColor = false;
this.xrTableCell15.StylePriority.UseBorders = false;
this.xrTableCell15.StylePriority.UsePadding = false;
this.xrTableCell15.StylePriority.UseTextAlignment = false;
this.xrTableCell15.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell15.Weight = 0.48972301858281375D;
//
// xrTableCell16
//
this.xrTableCell16.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell16.BorderColor = System.Drawing.Color.Black;
this.xrTableCell16.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)));
this.xrTableCell16.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell16.Name = "xrTableCell16";
this.xrTableCell16.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell16.StylePriority.UseBackColor = false;
this.xrTableCell16.StylePriority.UseBorderColor = false;
this.xrTableCell16.StylePriority.UseBorders = false;
this.xrTableCell16.StylePriority.UseFont = false;
this.xrTableCell16.StylePriority.UsePadding = false;
this.xrTableCell16.StylePriority.UseTextAlignment = false;
this.xrTableCell16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell16.Weight = 0.53122486267026214D;
//
// xrTableCell17
//
this.xrTableCell17.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell17.BorderColor = System.Drawing.Color.Black;
this.xrTableCell17.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Right)));
this.xrTableCell17.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTableCell17.Name = "xrTableCell17";
this.xrTableCell17.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell17.StylePriority.UseBackColor = false;
this.xrTableCell17.StylePriority.UseBorderColor = false;
this.xrTableCell17.StylePriority.UseBorders = false;
this.xrTableCell17.StylePriority.UseFont = false;
this.xrTableCell17.StylePriority.UsePadding = false;
this.xrTableCell17.StylePriority.UseTextAlignment = false;
this.xrTableCell17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell17.Weight = 0.53122488360866615D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell10,
this.xrTableCell11,
this.xrTableCell12,
this.xrTableCell13});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 1D;
//
// xrTableCell10
//
this.xrTableCell10.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell10.BorderColor = System.Drawing.Color.Black;
this.xrTableCell10.Borders = DevExpress.XtraPrinting.BorderSide.Left;
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell10.StylePriority.UseBackColor = false;
this.xrTableCell10.StylePriority.UseBorderColor = false;
this.xrTableCell10.StylePriority.UseBorders = false;
this.xrTableCell10.StylePriority.UsePadding = false;
this.xrTableCell10.StylePriority.UseTextAlignment = false;
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell10.Weight = 0.57272669822000166D;
//
// xrTableCell11
//
this.xrTableCell11.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell11.BorderColor = System.Drawing.Color.Black;
this.xrTableCell11.Borders = DevExpress.XtraPrinting.BorderSide.None;
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell11.StylePriority.UseBackColor = false;
this.xrTableCell11.StylePriority.UseBorderColor = false;
this.xrTableCell11.StylePriority.UseBorders = false;
this.xrTableCell11.StylePriority.UsePadding = false;
this.xrTableCell11.StylePriority.UseTextAlignment = false;
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell11.Weight = 0.48972301858281386D;
//
// xrTableCell12
//
this.xrTableCell12.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell12.BorderColor = System.Drawing.Color.Black;
this.xrTableCell12.Borders = DevExpress.XtraPrinting.BorderSide.Left;
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell12.StylePriority.UseBackColor = false;
this.xrTableCell12.StylePriority.UseBorderColor = false;
this.xrTableCell12.StylePriority.UseBorders = false;
this.xrTableCell12.StylePriority.UsePadding = false;
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell12.Weight = 0.53122486267026214D;
//
// xrTableCell13
//
this.xrTableCell13.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell13.BorderColor = System.Drawing.Color.Black;
this.xrTableCell13.Borders = DevExpress.XtraPrinting.BorderSide.Right;
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell13.StylePriority.UseBackColor = false;
this.xrTableCell13.StylePriority.UseBorderColor = false;
this.xrTableCell13.StylePriority.UseBorders = false;
this.xrTableCell13.StylePriority.UsePadding = false;
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell13.Weight = 0.53122488360866615D;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell6,
this.xrTableCell7,
this.xrTableCell8,
this.xrTableCell9});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 1D;
//
// xrTableCell6
//
this.xrTableCell6.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell6.BorderColor = System.Drawing.Color.Black;
this.xrTableCell6.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell6.BorderWidth = 2F;
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell6.StylePriority.UseBackColor = false;
this.xrTableCell6.StylePriority.UseBorderColor = false;
this.xrTableCell6.StylePriority.UseBorders = false;
this.xrTableCell6.StylePriority.UseBorderWidth = false;
this.xrTableCell6.StylePriority.UsePadding = false;
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell6.Weight = 0.57272669822000166D;
//
// xrTableCell7
//
this.xrTableCell7.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell7.BorderColor = System.Drawing.Color.Black;
this.xrTableCell7.Borders = DevExpress.XtraPrinting.BorderSide.Bottom;
this.xrTableCell7.BorderWidth = 2F;
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell7.StylePriority.UseBackColor = false;
this.xrTableCell7.StylePriority.UseBorderColor = false;
this.xrTableCell7.StylePriority.UseBorders = false;
this.xrTableCell7.StylePriority.UseBorderWidth = false;
this.xrTableCell7.StylePriority.UsePadding = false;
this.xrTableCell7.StylePriority.UseTextAlignment = false;
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell7.Weight = 0.48972301858281386D;
//
// xrTableCell8
//
this.xrTableCell8.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell8.BorderColor = System.Drawing.Color.Black;
this.xrTableCell8.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell8.BorderWidth = 2F;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell8.StylePriority.UseBackColor = false;
this.xrTableCell8.StylePriority.UseBorderColor = false;
this.xrTableCell8.StylePriority.UseBorders = false;
this.xrTableCell8.StylePriority.UseBorderWidth = false;
this.xrTableCell8.StylePriority.UsePadding = false;
this.xrTableCell8.StylePriority.UseTextAlignment = false;
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell8.Weight = 0.53122486267026214D;
//
// xrTableCell9
//
this.xrTableCell9.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell9.BorderColor = System.Drawing.Color.Black;
this.xrTableCell9.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell9.BorderWidth = 2F;
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell9.StylePriority.UseBackColor = false;
this.xrTableCell9.StylePriority.UseBorderColor = false;
this.xrTableCell9.StylePriority.UseBorders = false;
this.xrTableCell9.StylePriority.UseBorderWidth = false;
this.xrTableCell9.StylePriority.UsePadding = false;
this.xrTableCell9.StylePriority.UseTextAlignment = false;
this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell9.Weight = 0.53122488360866615D;
//
// xrLabel5
//
this.xrLabel5.BackColor = System.Drawing.Color.Gainsboro;
@@ -830,7 +578,8 @@ namespace LebenshilfeBadKreuznach
//
this.xrTableCell3.BackColor = System.Drawing.Color.Transparent;
this.xrTableCell3.BorderColor = System.Drawing.Color.Silver;
this.xrTableCell3.Borders = DevExpress.XtraPrinting.BorderSide.Left;
this.xrTableCell3.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell3.BorderWidth = 2F;
this.xrTableCell3.Font = new System.Drawing.Font("Arial", 8F);
this.xrTableCell3.Name = "xrTableCell3";
@@ -1399,7 +1148,6 @@ namespace LebenshilfeBadKreuznach
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
this.Version = "17.1";
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
@@ -1443,22 +1191,6 @@ namespace LebenshilfeBadKreuznach
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell15;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell17;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRTable xrTable3;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow5;

View File

@@ -40,6 +40,7 @@
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />

View File

@@ -1,11 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.ServiceModel;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BeWo.Service.ServiceContracts;
using BS.Shared;
using BS.Shared.DataContracts;
@@ -13,7 +14,7 @@ using BS.Shared.DataContracts;
namespace PerspektivenEV.Service
{
public class CustomAccountingService : AccountingService
public class CustomAccountingService : AccountingService
{
public override ServiceInvoice ErstelleStornoRechnung(InvoiceBaseDC ibdc)
{
@@ -58,85 +59,16 @@ namespace PerspektivenEV.Service
neu.InvoiceTypeText += " Storno";
}
}
//public override void StorniereInvoiceBases(List<InvoiceBaseDC> invoices)
//{
// foreach (var item in invoices)
// {
// if (item.Type.ToString() == "General" || item.Type.ToString() == "CustomerEquity" || item.RecipientOrganisation.Contains("LWV"))
// MessageBox.Show("Rechnungen vom Typ Allgemein oder Eigenanteil oder an den LWV können nicht automatisch storniert werden", "Rechnung stornieren", MessageBoxButton.OK, MessageBoxImage.Error);
// else
// ErstelleStornoRechnung(item);
// }
//}
//public override List<InvoiceBaseDC> GetInvoiceBases(DateTime? startDate, DateTime? endDate)
//{
// DateTime? end = endDate;
// if (end.HasValue)
// {
// end = end.Value.Date.AddDays(1).AddTicks(-1);
// }
// var list = DAOFactory.SearchDAO.GetInvoiceBases(startDate, end, false);
// var returnlist = new List<InvoiceBaseDC>();
// foreach (var ib in list)
// {
// var dc = MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewDC(ib);
// if (String.IsNullOrEmpty(dc.CustomerFirstName) && String.IsNullOrEmpty(dc.CustomerLastName) && ib.Type == InvoiceType.Service && (ib.InvoiceTypeText == "Tagesstruktur" || ib.InvoiceTypeText == "Tagesstruktur Storno"))
// {
// var si = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(ib.Oid.Value);
// if (si != null)
// {
// var names = new List<String>();
// foreach (var sip in si.ServiceInvoicePeriodList)
// {
// if (sip.Customer != null)
// {
// names.Add(sip.Customer.Person.LastNameFirstName);
// }
// }
// dc.CustomerLastName = "";
// foreach (var name in names.OrderBy(n => n))
// {
// if (dc.CustomerLastName.Length > 0)
// {
// dc.CustomerLastName += "\n";
// }
// dc.CustomerLastName += name;
// }
// }
// }
// else if (ib.InvoiceId == "RechnungHort" || ib.InvoiceId == "RechnungHortPrivat")
// {
// dc.CustomerFirstName = "";
// dc.CustomerLastName = "";
// var si = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(ib.Oid.Value);
// if (si != null)
// {
// foreach (var sip in si.ServiceInvoicePeriodList)
// {
// if (!String.IsNullOrEmpty(sip.Notice))
// {
// dc.CustomerLastName = sip.Notice;
// }
// }
// }
// }
// returnlist.Add(dc);
// }
// return returnlist;
//}
public override List<long> UpdateServiceInvoices(List<ServiceInvoiceDC> invoices)
{
if (!BeWo.Data.Security.UserRightHelper.LoggedInUserHasRight(UserRightType.AccountingTransactionView_Create))
{
throw new FaultException<BeWoFault>(new BeWoFault("Du kommst hier nicht rein!", BeWoFaultType.CustomWithoutDetails));
}
var originals = DAOFactory.GenericDAO.LoadByIDs<ServiceInvoice>(invoices.Select(i => i.ServiceInvoiceOid.Value));
MapperFactory.ServiceInvoiceDC_ServiceInvoice.MergeWithEntitys(invoices, originals);
DAOFactory.GenericDAO.Update(originals);
return originals.Select(e => e.Version.Value).ToList();
}
}
}

View File

@@ -69,7 +69,9 @@ namespace SBBMainzReports
asdRo.TotalFLMBillable += s.Minutes;
asdRo.TotalFLMBillable += s.Minutes / 60;
}
else if (ro.Costbearer.ToLower().Contains("jugendamt") || ro.Costbearer.ToLower().StartsWith("landeshauptstadt wiesbaden") || ro.Costbearer.ToLower().StartsWith("kreisverwaltung rhein-hunsrück-kreis") || ro.Costbearer.ToLower().StartsWith("stadt mannheim"))
else if (ro.Costbearer.ToLower().Contains("jugendamt") || ro.Costbearer.ToLower().StartsWith("landeshauptstadt wiesbaden")
|| ro.Costbearer.ToLower().StartsWith("kreisverwaltung rhein-hunsrück-kreis") || ro.Costbearer.ToLower().StartsWith("stadt mannheim")
|| ro.Costbearer.ToLower().Contains("offenbach wirtschaftliche jugendhilfe"))
{
jugendamtRo.Services.Add(s);
jugendamtRo.TotalFLMBillable += s.Minutes;

View File

@@ -100,7 +100,7 @@ namespace SHKService.Invoicing
}
else
{
ii.AmountPerUnit = supportConceptApprovalPeriod.ApprovedBEPerInterval * AMOUNT_PER_KMKA;
ii.AmountPerUnit = supportConceptApprovalPeriod.ApprovedBEPerInterval * AMOUNT_PER_KMQA;
ii.ItemDescription = "Fahrzeiten QA";
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,139 @@
using System;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.Extensions;
namespace SozialwerkAachenerChristen
{
[IDSpecificClass(Identifier = "Assistenz")]
public partial class AssistenzRechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServiceInvoiceRO>
{
public AssistenzRechnung()
{
InitializeComponent();
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
DateTime start = pRO.AccountingPeriodStart;
DateTime end = pRO.AccountingPeriodEnd;
decimal hourlyRate = 0;
decimal rateFactor = 1;
decimal hours = 0;
if (pRO.ServiceInvoicePeriods != null && pRO.ServiceInvoicePeriods.Count > 0)
{
foreach (var p in pRO.ServiceInvoicePeriods)
{
if (p.ServiceInvoiceItems != null && p.ServiceInvoiceItems.Count > 0)
{
foreach (var i in p.ServiceInvoiceItems)
{
if (i.HourlyRate.HasValue)
hourlyRate = i.HourlyRate.Value;
if (i.Hours.HasValue)
hours += i.Hours.Value;
}
}
}
}
if (!String.IsNullOrEmpty(pRO.CustomerSalutation) && pRO.CustomerSalutation.ToLower() == "herr")
pRO.CustomerSalutation = "Herrn";
lblStunden.Text = String.Format("{0:0.##}", hours);
lblStundensatz.Text = String.Format("{0:c}", hourlyRate);
lblAbwesenheiten.Text = "Es gab im Bewilligungszeitraum folgende stationäre Aufenthalte: " + GetAbsenceTimeString(pRO);
this.bindingSource1.DataSource = pRO;
}
private String GetAbsenceTimeString(ServiceInvoiceRO pRO)
{
Customer c = null;
if (pRO.CustomerOid.HasValue)
{
c = DAOFactory.GenericDAO.LoadByID<Customer>(pRO.CustomerOid.Value);
}
else
{
if (pRO.InvoiceBase.SupportConceptOid.HasValue)
{
var sc = DAOFactory.GenericDAO.LoadByID<SupportConcept>(pRO.InvoiceBase.SupportConceptOid.Value);
c = sc.Customer;
}
}
if (c != null)
{
if (c.AbsenceTimes != null && c.AbsenceTimes.Count > 0)
{
DateTimeSpan span = new DateTimeSpan();
span.StartDate = pRO.AccountingPeriodStart;
span.EndDate = pRO.AccountingPeriodEnd;
StringBuilder sb = new StringBuilder();
foreach (var at in c.AbsenceTimes)
{
if (at.AbsenceSpan != null)
{
bool cont = !(at.Start != null && at.Start > span.EndDateTime);
if (cont && at.End != null && at.End < span.StartDateTime)
{
cont = false;
}
if (cont)
{
if (sb.Length > 0)
{
sb.Append("; ");
}
if (at.Start.HasValue)
{
sb.Append(string.Format("{0:00}", at.Start.Value.Day));
sb.Append(".");
sb.Append(string.Format("{0:00}", at.Start.Value.Month));
sb.Append(".");
sb.Append(at.Start.Value.Year.ToString().Substring(2));
sb.Append(" - ");
if (at.End.HasValue)
{
sb.Append(string.Format("{0:00}", at.End.Value.Day));
sb.Append(".");
sb.Append(string.Format("{0:00}", at.End.Value.Month));
sb.Append(".");
sb.Append(at.End.Value.Year.ToString().Substring(2));
}
else
{
sb.Append("...");
}
}
}
}
}
if (sb.Length > 0)
{
return sb.ToString();
}
else
{
return "keine";
}
}
}
return "keine";
}
}
}

View File

@@ -0,0 +1,868 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="xrPictureBox3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
RU5ErkJggg==
</value>
</data>
<data name="xrRichText6.SerializableRtfString" xml:space="preserve">
<value>ewBcAHIAdABmADEAXABhAG4AcwBpAGMAcABnADEAMgA1ADIADQAKAHsADQAKAFwAZgBvAG4AdAB0AGIAbAANAAoAewBcAGYAMAAgAFQAaQBtAGUAcwAgAE4AZQB3ACAAUgBvAG0AYQBuADsAfQANAAoAewBcAGYAMQAgAEMAYQBsAGkAYgByAGkAOwB9AA0ACgB9AA0ACgB7AA0ACgBcAGMAbwBsAG8AcgB0AGIAbAANAAoAOwANAAoAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADAAOwANAAoAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ADsADQAKAH0ADQAKAFwAbgBvAHUAaQBjAG8AbQBwAGEAdABcAHMAcABsAHkAdAB3AG4AaQBuAGUAXABoAHQAbQBhAHUAdABzAHAAewBcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAXABzAGwALQAxADYAOABcAHMAbABtAHUAbAB0ADAAXABzAGEANAA4ADAAewBcAGYAMQBcAGYAcwAxADQAXABjAGYAMAAgAFMAbwB6AGkAYQBsAHcAZQByAGsAIABBAGEAYwBoAGUAbgBlAHIAIABDAGgAcgBpAHMAdABlAG4AIABlAC4AVgAuACwAIABSAG8AcwBzAHQAcgBhAFwAdQAyADIAMwBcACcAZABmAGUAIAA5AC0AMQAzACwAIAA1ADIAMAA2ADQAIABBAGEAYwBoAGUAbgB9AFwAbgBvAHAAcgBvAG8AZgBcAGYAcwAxADQAXABjAGYAMQBcAHAAYQByAH0ADQAKAH0ADQAKAA==</value>
</data>
<data name="xrPictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
/9j/4AAQSkZJRgABAQEA3ADcAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwg
JC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADPANEDASIAAhEBAxEB/8QA
HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW
V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG
x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF
BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq
8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiuX8SeOtJ8OubZi13qB4W0g5YEjjcf4
c8ep5BwawP7N8a+MwW1G6/sHTHzi2iB81154bkHkHBBIHH3aAOn1rxpoOg7kvL9GuFz/AKPD88mR2IH3
Tz/Fiuc/4T3XtaOPDPhieWJjmO6u+EYDqOMKDnj7/b8K0LXw14O8IKhmjhkuBgiS6/eynkkMFxhfTIA6
Uy9+ICYK2NkxOOHnOMH/AHR1/OgCn/ZXxG1bm71mz0y3m+/FbqDJEPYgZz/wP8aUfDa9uf3eq+L9UvIP
+eYZl5/4EzD9Kpt4k8R6m0otTJtx8yW0Odv44JH51mwy6trM62a3VxcO+dsck5wcDJ+8cdKAN7/hT3h/
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
</value>
</data>
<data name="xrLabel6.Text" xml:space="preserve">
<value>Für unsere (n) Klient*in, [CustomerLastName], [CustomerFirstName] erlauben wir uns, im BWZ [InvoiceBase.SupportConceptCostBearerRelDc.StartDate!dd.MM.yyyy] - [InvoiceBase.SupportConceptCostBearerRelDc.EndDate!dd.MM.yyyy] die geleisteten Assistenzstunden in Rechnung zu stellen. </value>
</data>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace SozialwerkAachenerChristen.Invoicing
{
public class CustomAssistenzInvoiceCreation : InvoiceCreation
{
public override void SetInvoiceId(ServiceInvoice invoice)
{
invoice.InvoiceBase.InvoiceId = "Assistenz";
invoice.InvoiceBase.InvoiceTypeText = "Assistenzleistung";
}
public override void SetAmountAdvancePayments(ServiceInvoice invoice)
{
//do nothing
}
public override void SetAmountEquityContribution(ServiceInvoice invoice)
{
//do nothing
}
public override InvoiceItem CreateInvoiceItem(ServiceRecordDC iServiceRecord, SupportConceptApprovalPeriod scap, Calculations calc)
{
if (iServiceRecord.ServiceDescription.CategoryName.ToLower() != "unterstützende assistenz")
return null;
return base.CreateInvoiceItem(iServiceRecord, scap, calc);
//DateTime start = ii.ItemPeriodStart.Value;
//decimal preisAssistenz = 0;
//var cat = DAOFactory.SearchDAO.FindServiceCategoryByName("Assistenzleistungen");
//if (cat != null)
//{
// var crps = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(cat.CostRatePeriods);
// var cp = crps.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, start);
// if (cp != null && cp.CostRateValue.HasValue)
// preisAssistenz = (decimal)cp.CostRateValue;
// ii.AmountPerUnit = preisAssistenz;
// ii.RateFactor = null;
// ii.AmountTotal = preisAssistenz * ii.UnitCount;
// ii.GrossAmountTotal = preisAssistenz * ii.UnitCount;
//}
//return ii;
}
public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap,
Calculations calc, bool summaryPerMonth, bool addRateFactorToUnitCount)
{
return base.CreateSummaryInvoiceItems(itemList, invoicePeriod, scap, calc, false, true);
}
}
}

View File

@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using BeWo.Service.Invoicing;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace SozialwerkAachenerChristen.Invoicing
{
public class CustomInvoiceFactory : InvoiceFactory
{
public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
{
foreach (var list in supportConcepts2ServiceRecords.Values)
{
foreach (var sr in list)
{
var sd = sr.ServiceDescription.Category;
var ic = GetInvoiceCreatorForCategory(sd);
if (ic != null)
return ic;
}
}
return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
}
private InvoiceCreation GetInvoiceCreatorForCategory(ServiceCategoryDC sd)
{
if (sd != null && !String.IsNullOrEmpty(sd.Name))
{
String cat = sd.Name.ToLower().Trim();
if (cat.IndexOf("unterstützend") >= 0)
return new CustomAssistenzInvoiceCreation();
}
return null;
}
}
}

View File

@@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace SozialwerkAachenerChristen.Invoicing
{
public class CustomSettlementInvoiceCreation : SettlementInvoiceCreation
{
public override bool CanCreateInvoiceTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
{
var relDC = c2s.MapToNewDC();
DateTime start = si.AccountingPeriodStart.Value.Date;
DateTime end = si.AccountingPeriodEnd.Value.Date;
if (c2s.SupportConcept.Customer.TerminationDate.HasValue &&
c2s.SupportConcept.Customer.TerminationDate.Value < end)
end = c2s.SupportConcept.Customer.TerminationDate.Value;
if (end > DateTime.Now)
{
var srList = c2s.ServiceRecords;
var max = srList.Max(s => s.End);
if (max.HasValue && max < end)
end = max.Value;
}
var hourlyRatesInSpanList = relDC.CostBearer.CostRatePeriods.GetSpans(CostRatePeriodType.HourlyRate, start, end).ToList();
if (hourlyRatesInSpanList.Count > 3)
return false;
var factorInSpanList = relDC.CostBearer.CostRatePeriods.GetSpans(CostRatePeriodType.RateFactor, start, end).ToList();
if (factorInSpanList.Count > 1)
return false;
return true;
}
public override bool IsServiceRecordBillable(ServiceRecord iRecord)
{
if (iRecord.ServiceDescription.ServiceCategory.Name.ToLower() == "unterstützenden assistenz")
{
return false;
}
return true;
}
public override void CalculateSettlementInvoiceApprovedAmounts(Settlement2DC si, SupportConceptCostBearerRelDC relDC, Calculations calc)
{
si.ApprovedFLSWeekly = 0;
si.ApprovedFLS = 0;
foreach (var sp in relDC.ApprovalPeriodList)
{
if (sp.ServiceCategory == null || !sp.ServiceCategory.Name.Contains("Assistenz"))
{
si.ApprovedFLSWeekly += calc.GetApprovedHoursPerWeek(sp, relDC.CostBearer.CostRatePeriods) ?? 0m;
decimal flsTotal = calc.GetApprovedHoursTotal(sp, relDC.CostBearer.CostRatePeriods) ?? 0m;
flsTotal = Math.Round(flsTotal, 2, MidpointRounding.AwayFromZero);
si.ApprovedFLS += flsTotal;
}
}
}
}
}

View File

@@ -33,6 +33,7 @@ namespace SozialwerkAachenerChristen
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Rechnung));
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.lblAddresse = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrRichText1 = new DevExpress.XtraReports.UI.XRRichText();
@@ -47,7 +48,6 @@ namespace SozialwerkAachenerChristen
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.xrRichText3 = new DevExpress.XtraReports.UI.XRRichText();
this.xrPageInfo1 = new DevExpress.XtraReports.UI.XRPageInfo();
this.lblAddresse = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText6)).BeginInit();
@@ -78,6 +78,18 @@ namespace SozialwerkAachenerChristen
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
//
// lblAddresse
//
this.lblAddresse.CanShrink = true;
this.lblAddresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 53F);
this.lblAddresse.Multiline = true;
this.lblAddresse.Name = "lblAddresse";
this.lblAddresse.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAddresse.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.lblAddresse.SizeF = new System.Drawing.SizeF(371.875F, 112.8333F);
this.lblAddresse.StylePriority.UseFont = false;
this.lblAddresse.Text = "[RecipientOrganisation]";
//
// xrLabel2
//
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(213.4903F, 353.8895F);
@@ -130,7 +142,7 @@ namespace SozialwerkAachenerChristen
//
// xrLabel14
//
this.xrLabel14.Font = new System.Drawing.Font("Montserrat", 18F);
this.xrLabel14.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F);
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(213.4857F, 248.54F);
this.xrLabel14.Name = "xrLabel14";
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
@@ -143,7 +155,7 @@ namespace SozialwerkAachenerChristen
//
this.xrLabel13.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceDate")});
this.xrLabel13.Font = new System.Drawing.Font("Montserrat", 9F);
this.xrLabel13.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(492.9581F, 206.0928F);
this.xrLabel13.Name = "xrLabel13";
this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -211,18 +223,6 @@ namespace SozialwerkAachenerChristen
this.xrPageInfo1.StylePriority.UseTextAlignment = false;
this.xrPageInfo1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
//
// lblAddresse
//
this.lblAddresse.CanShrink = true;
this.lblAddresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 53F);
this.lblAddresse.Multiline = true;
this.lblAddresse.Name = "lblAddresse";
this.lblAddresse.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAddresse.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.lblAddresse.SizeF = new System.Drawing.SizeF(371.875F, 112.8333F);
this.lblAddresse.StylePriority.UseFont = false;
this.lblAddresse.Text = "[RecipientOrganisation]";
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
@@ -236,7 +236,7 @@ namespace SozialwerkAachenerChristen
this.bottomMarginBand1});
this.DataSource = this.bindingSource1;
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.Font = new System.Drawing.Font("Montserrat", 10F);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new System.Drawing.Printing.Margins(90, 30, 180, 100);

File diff suppressed because one or more lines are too long

View File

@@ -78,7 +78,11 @@ namespace SozialwerkAachenerChristen.Alt
this.xrTableRow15 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell23 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTable4 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow30 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell48 = new DevExpress.XtraReports.UI.XRTableCell();
@@ -98,16 +102,12 @@ namespace SozialwerkAachenerChristen.Alt
this.xrTableRow36 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell57 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell58 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
@@ -269,9 +269,9 @@ namespace SozialwerkAachenerChristen.Alt
// xrPictureBox1
//
this.xrPictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("xrPictureBox1.Image")));
this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(594.2042F, 51.62498F);
this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(582.7458F, 51.62498F);
this.xrPictureBox1.Name = "xrPictureBox1";
this.xrPictureBox1.SizeF = new System.Drawing.SizeF(84.67102F, 79.5417F);
this.xrPictureBox1.SizeF = new System.Drawing.SizeF(96.12939F, 89.95836F);
this.xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
//
// xrPictureBox3
@@ -371,7 +371,7 @@ namespace SozialwerkAachenerChristen.Alt
this.xrLabel17.SizeF = new System.Drawing.SizeF(170.1523F, 14.20453F);
this.xrLabel17.StylePriority.UseFont = false;
this.xrLabel17.StylePriority.UsePadding = false;
this.xrLabel17.Text = "Florian Niehaus, Stefanie Klein, Diego Simons";
this.xrLabel17.Text = "Florian Niehaus, Diego Simons";
//
// xrLabel19
//
@@ -655,6 +655,10 @@ namespace SozialwerkAachenerChristen.Alt
this.xrTableCell23.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell23.Weight = 0.26009181878516091D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.SettlementRO);
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
@@ -666,6 +670,33 @@ namespace SozialwerkAachenerChristen.Alt
this.GroupFooter1.Name = "GroupFooter1";
this.GroupFooter1.StylePriority.UseFont = false;
//
// xrTable1
//
this.xrTable1.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 177.4792F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow1});
this.xrTable1.SizeF = new System.Drawing.SizeF(678.8752F, 20.16664F);
this.xrTable1.StylePriority.UseFont = false;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 0.38095238095238088D;
//
// xrTableCell1
//
this.xrTableCell1.CanShrink = true;
this.xrTableCell1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "FehlkontakteString")});
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.Weight = 3D;
//
// xrTable4
//
this.xrTable4.BorderColor = System.Drawing.SystemColors.ControlLight;
@@ -857,37 +888,6 @@ namespace SozialwerkAachenerChristen.Alt
this.xrTableCell58.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell58.Weight = 0.21685899000901443D;
//
// xrTable1
//
this.xrTable1.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 177.4792F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow1});
this.xrTable1.SizeF = new System.Drawing.SizeF(678.8752F, 20.16664F);
this.xrTable1.StylePriority.UseFont = false;
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 0.38095238095238088D;
//
// xrTableCell1
//
this.xrTableCell1.CanShrink = true;
this.xrTableCell1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "FehlkontakteString")});
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.Weight = 3D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.SettlementRO);
//
// Spitzabrechnung
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -912,9 +912,9 @@ namespace SozialwerkAachenerChristen.Alt
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}

View File

@@ -48,6 +48,15 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AssistenzRechnung.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="AssistenzRechnung.Designer.cs">
<DependentUpon>AssistenzRechnung.cs</DependentUpon>
</Compile>
<Compile Include="Invoicing\AssistenzInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Invoicing\SettlementInvoiceCreation.cs" />
<Compile Include="Rechnung.cs">
<SubType>Component</SubType>
</Compile>
@@ -99,6 +108,9 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="AssistenzRechnung.resx">
<DependentUpon>AssistenzRechnung.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Rechnung.resx">
<DependentUpon>Rechnung.cs</DependentUpon>
<SubType>Designer</SubType>
@@ -121,5 +133,6 @@
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -1,24 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.ServiceContracts;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
namespace BeWo.Service.Plugins
{
public class AccountingService : AbstractIDSpecificDefaultClass<AccountingService>
{
public virtual List<long> UpdateServiceInvoices(List<ServiceInvoiceDC> invoices)
{
if (!Data.Security.UserRightHelper.LoggedInUserHasRight(UserRightType.AccountingTransactionView_Create))
{
throw new FaultException<BeWoFault>(new BeWoFault("Du kommst hier nicht rein!", BeWoFaultType.CustomWithoutDetails));
}
var originals = DAOFactory.GenericDAO.LoadByIDs<ServiceInvoice>(invoices.Select(i => i.ServiceInvoiceOid.Value));
MapperFactory.ServiceInvoiceDC_ServiceInvoice.MergeWithEntitys(invoices, originals);
DAOFactory.GenericDAO.Update(originals);
return originals.Select(e => e.Version.Value).ToList();
}
public virtual List<InvoiceBaseDC> GetInvoiceBases(DateTime? startDate, DateTime? endDate)
public virtual List<InvoiceBaseDC> GetInvoiceBases(DateTime? startDate, DateTime? endDate)
{
DateTime? end = endDate;
if (end.HasValue)

View File

@@ -232,7 +232,7 @@ namespace BeWo.Service.Plugins
//t = "4423043131"; // Die Perspektive e.V.
//t = "5263375280"; // LH Wolfsburg
//t = "4900722829"; // Evangelische Kirchengemeinde Bottrop
//t = "9853685258"; // Input
t = "9853685258"; // Input
//t = "7622428090"; // Freie gemeinnützige Beratungsstelle für Psychotherapie e.V. (BfpDus) (Panama)
//t = "0206140343"; // Lebenswelt Gabriel
//t = "6916712798"; // LH Rodenkirchen Bewo
@@ -282,7 +282,7 @@ namespace BeWo.Service.Plugins
//t = "9430188510"; // Pro INTEGRA
//t = "4820371076"; // Zuhause Wohnen Iris Thimm
//t = "1078667960"; // FAM Rhein-Sieg Gbr
//t = "9388871209"; // Sozialwerk Aachener Christen e.V.
t = "9388871209"; // Sozialwerk Aachener Christen e.V.
//t = "1566251835"; // Sicherleben Michael Voß
//t = "4947061147"; // Diakonisches Werk Passau
//t = "9064234785"; // BeWo Rimbach
@@ -327,7 +327,7 @@ namespace BeWo.Service.Plugins
//t = "7663765314"; // Christina Frommen (Frommen BeWo)
//t = "5462295916"; // BeWo Dellbrueck
//t = "2120989920"; // Sozialbüro Schüßler und Wilckens GbR
//t = "9815376800"; // Haus Dülken GmbH + Co. KG
t = "9815376800"; // Haus Dülken GmbH + Co. KG
//t = "6917917884"; // AMBEWO Müller/Gerhards
//t = "5240630948"; // Caritasverband der Diözese Rottenburg-Stuttgart e.V. - Rechtsträger der Caritas Heilbronn Hohenlohe e.V. (Projekt heißt CaritasHeilbronnHohenlohe)
//t = "7748694330"; // Caritasverband der Diözese Rottenburg-Stuttgart e.V. als Rechtsträger der Caritas Ludwigsburg-Waiblingen-Enz (Projekt heißt CaritasLudwigsburgWaiblingenEnz)
@@ -354,7 +354,7 @@ namespace BeWo.Service.Plugins
//t = "4434019324"; // FENIX Soziale Dienste
//t = "6219220038"; // SKM Kreis Viersen e.V.
//t = "1372050368"; // Petra Wagner Matthes
t = "1253359817"; // Lebenshilfe Bad Kreuznach e.V.
//t = "1253359817"; // Lebenshilfe Bad Kreuznach e.V.
return t;
#else
if (MultitenancyOperationContextExt.Current != null)

View File

@@ -519,6 +519,9 @@
<Folder Include="Utils\" />
</ItemGroup>
<ItemGroup>
<None Include="..\.editorconfig">
<Link>.editorconfig</Link>
</None>
<None Include="app.config">
<SubType>Designer</SubType>
</None>

View File

@@ -620,17 +620,8 @@ namespace BeWo.Service.ServiceImplementations
public List<long> UpdateServiceInvoices(List<ServiceInvoiceDC> invoices)
{
try
{
var originals = DAOFactory.GenericDAO.LoadByIDs<ServiceInvoice>(invoices.Select(i => i.ServiceInvoiceOid.Value));
MapperFactory.ServiceInvoiceDC_ServiceInvoice.MergeWithEntitys(invoices, originals);
DAOFactory.GenericDAO.Update(originals);
return originals.Select(e => e.Version.Value).ToList();
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
var acc = PluginLoader.FindClass<AccountingService>();
return acc.UpdateServiceInvoices(invoices);
}
public void UpdateSettlementInvoice(List<Settlement2DC> invoices)