2026-06-18 11:05:29 +02:00
using BeWo.Data ;
2016-06-27 01:45:38 +02:00
using BeWo.Data.Access ;
using BeWo.Data.Entities ;
2026-06-18 11:05:29 +02:00
using BeWo.Data.Security ;
using BeWo.Report.DefaultReports ;
using BeWo.Report.DefaultReports.Straffaelligenhilfe ;
2016-06-27 01:45:38 +02:00
using BeWo.Report.ReportObjects ;
using BeWo.Service.DCEntityMapper ;
2026-06-18 11:05:29 +02:00
using BeWo.Service.Plugins ;
using BeWo.Service.Reporting ;
using BeWo.Service.Reporting.Straffaelligenhilfe ;
2017-05-18 21:47:09 +02:00
using BeWo.Service.ServiceImplementations ;
2026-06-18 11:05:29 +02:00
using BS.Shared ;
2016-06-27 01:45:38 +02:00
using BS.Shared.Core ;
using BS.Shared.DataContracts ;
2021-05-03 15:13:53 +02:00
using BS.Shared.DataContracts.Compact ;
2024-11-20 15:17:13 +01:00
using BS.Shared.ReportRequests ;
2026-06-18 11:05:29 +02:00
using DevExpress.XtraReports.UI ;
2025-04-17 01:11:16 +02:00
using DevExpress.XtraRichEdit ;
2026-06-18 11:05:29 +02:00
using System ;
using System.Collections.Generic ;
using System.Data ;
using System.Drawing ;
using System.IO ;
using System.Linq ;
using System.Reflection ;
2025-04-17 01:11:16 +02:00
using System.Text ;
2026-06-18 11:05:29 +02:00
using System.Web ;
2016-06-27 01:45:38 +02:00
namespace BeWo.Report
{
2020-09-30 10:00:31 +02:00
public class DefaultReportCreator : AbstractReportCreator
{
public IBeWoReport < T > FindReportImp < T > ( )
{
return FindReportImp < T > ( null , null ) ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public IBeWoReport < T > FindReportImp < T > ( string specificReportId )
{
return this . FindReportImp < T > ( specificReportId , null ) ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public IBeWoReport < T > FindReportImp < T > ( string specificReportId , string typename )
{
IBeWoReport < T > result = null ;
2016-06-27 01:45:38 +02:00
2021-10-13 14:38:51 +02:00
if ( TemplateOid . HasValue & & TemplateOid . Value > 0 )
2021-10-01 16:49:37 +02:00
{
var template = DAOFactory . GenericDAO . LoadByID < ReportTemplate > ( TemplateOid . Value ) ;
if ( ! String . IsNullOrEmpty ( template . ReferenceClass ) )
{
specificReportId = template . ReferenceClass ;
}
else if ( ! String . IsNullOrEmpty ( template . DisplayName ) )
{
specificReportId = template . DisplayName ;
}
}
2020-09-30 10:00:31 +02:00
Type [ ] lAllReportTypes = null ;
2016-06-27 01:45:38 +02:00
2023-09-25 19:03:08 +02:00
lAllReportTypes = PluginLoader . GetAllCustomerTypes ( ) ;
2023-09-27 17:52:23 +02:00
if ( lAllReportTypes ! = null )
{
result = FindReportImp < T > ( lAllReportTypes , specificReportId , typename , true ) ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
if ( result = = null )
{
lAllReportTypes = typeof ( IBeWoReport < T > ) . Assembly . GetTypes ( ) ;
result = FindReportImp < T > ( lAllReportTypes , specificReportId , typename , false ) ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return result ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public IBeWoReport < T > FindReportImp < T > ( Type [ ] lAllReportTypes , string specificReportId , string typename , bool doNotUseReportsWithIdentifier )
{
IBeWoReport < T > result = null ;
2016-06-27 01:45:38 +02:00
2021-04-28 12:51:55 +02:00
var typeOfT = typeof ( T ) ;
2020-09-30 10:00:31 +02:00
if ( ! string . IsNullOrEmpty ( specificReportId ) & & ! string . IsNullOrEmpty ( typename ) )
{
var cbSpecific = lAllReportTypes
. Where ( i = > typeof ( IBeWoReport < T > ) . IsAssignableFrom ( i ) )
. FirstOrDefault ( t = > t . GetCustomAttributes ( typeof ( IDSpecificClassAttribute ) , true )
. ToList ( )
. Exists ( i = >
{
var attr = ( IDSpecificClassAttribute ) i ;
if ( attr . Identifiers ! = null )
return attr . Identifiers . Contains ( specificReportId ) ;
if ( ! String . IsNullOrEmpty ( attr . Identifier ) )
return attr . Identifier . Equals ( specificReportId ) ;
return false ;
}
) & & t . FullName = = typename ) ;
if ( cbSpecific ! = null )
result = Activator . CreateInstance ( cbSpecific ) as IBeWoReport < T > ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
if ( ! string . IsNullOrEmpty ( typename ) )
{
var cbSpecific = lAllReportTypes . FirstOrDefault ( t = > t . FullName = = typename ) ;
if ( cbSpecific ! = null )
result = Activator . CreateInstance ( cbSpecific ) as IBeWoReport < T > ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
if ( ! string . IsNullOrEmpty ( specificReportId ) )
{
var cbSpecific = lAllReportTypes
. Where ( i = > typeof ( IBeWoReport < T > ) . IsAssignableFrom ( i ) )
. FirstOrDefault ( t = > t . GetCustomAttributes ( typeof ( IDSpecificClassAttribute ) , true )
. ToList ( )
. Exists ( i = >
{
var attr = ( IDSpecificClassAttribute ) i ;
if ( attr . Identifiers ! = null )
2022-01-04 12:13:52 +01:00
{
2020-09-30 10:00:31 +02:00
return attr . Identifiers . Contains ( specificReportId ) ;
2022-01-04 12:13:52 +01:00
}
2020-09-30 10:00:31 +02:00
if ( ! String . IsNullOrEmpty ( attr . Identifier ) )
2022-01-04 12:13:52 +01:00
{
if ( specificReportId = = "SammelrechnungNachKlienten" )
{
var test = attr . Identifier . Equals ( specificReportId ) ;
}
2020-09-30 10:00:31 +02:00
return attr . Identifier . Equals ( specificReportId ) ;
2022-01-04 12:13:52 +01:00
}
2023-09-20 09:20:31 +02:00
2020-09-30 10:00:31 +02:00
return false ;
}
) ) ;
if ( cbSpecific ! = null )
result = Activator . CreateInstance ( cbSpecific ) as IBeWoReport < T > ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
if ( result = = null )
{
foreach ( var iType in lAllReportTypes )
if ( typeof ( IBeWoReport < T > ) . IsAssignableFrom ( iType ) )
if ( iType . Name = = specificReportId )
result = Activator . CreateInstance ( iType ) as IBeWoReport < T > ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
if ( result = = null )
{
var list = lAllReportTypes . Where ( t = > typeof ( IBeWoReport < T > ) . IsAssignableFrom ( t ) ) . ToList ( ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
if ( list . Count = = 1 )
{
var type = list [ 0 ] ;
if ( doNotUseReportsWithIdentifier )
{
var attrs = type . GetCustomAttributes ( typeof ( IDSpecificClassAttribute ) , true ) ;
if ( attrs . Length = = 0 )
return Activator . CreateInstance ( type ) as IBeWoReport < T > ;
}
else
{
result = Activator . CreateInstance ( type ) as IBeWoReport < T > ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
}
else if ( list . Count > 1 )
{
foreach ( var type in list )
{
var attrs = type . GetCustomAttributes ( typeof ( IDSpecificClassAttribute ) , true ) ;
if ( attrs . Length = = 0 )
2025-01-13 10:10:44 +01:00
{
if ( String . IsNullOrEmpty ( typename ) | | type . FullName = = typename )
{
return Activator . CreateInstance ( type ) as IBeWoReport < T > ;
}
}
2020-09-30 10:00:31 +02:00
}
if ( ! doNotUseReportsWithIdentifier )
{
result = Activator . CreateInstance ( list [ 0 ] ) as IBeWoReport < T > ;
}
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return result ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public override XtraReport CreateCustomerDataReport ( long customerOid )
{
var lCustomerDataReport = FindReportImp < CustomerDataRO > ( ) ;
lCustomerDataReport . SetReportDataSource ( CustomerDataRO . Create ( MapperFactory . CustomerDC_Customer . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Customer > ( customerOid ) ) ) ) ;
return lCustomerDataReport as XtraReport ;
}
public override XtraReport CreateCustomerInvoiceReport ( long invoiceOid )
{
IBeWoReport < InvoiceCustomerRO > lInvoiceCustomerReport = FindReportImp < InvoiceCustomerRO > ( ) ;
lInvoiceCustomerReport . SetReportDataSource ( InvoiceCustomerRO . Create ( MapperFactory . InvoiceBaseDC_InvoiceBase . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < InvoiceBase > ( invoiceOid ) ) ) ) ;
return lInvoiceCustomerReport as XtraReport ;
}
2025-11-17 00:47:17 +01:00
public override XtraReport CreateCustomerInvoiceReportMitQb ( long invoiceOid )
{
IBeWoReport < InvoiceCustomerRO > lInvoiceCustomerReport = FindReportImp < InvoiceCustomerRO > ( ) ;
var ib = DAOFactory . GenericDAO . LoadByID < InvoiceBase > ( invoiceOid ) ;
lInvoiceCustomerReport . SetReportDataSource ( InvoiceCustomerRO . Create ( MapperFactory . InvoiceBaseDC_InvoiceBase . MapToNewDC ( ib ) ) ) ;
var qb = CreateBelegeForInvoice ( ib ) ;
AddReportPagesToMaster ( lInvoiceCustomerReport as XtraReport , qb ) ;
return lInvoiceCustomerReport as XtraReport ;
}
2020-09-30 10:00:31 +02:00
public override XtraReport CreateAssessmentSheetReport ( long customerOid , int month , int year )
{
IBeWoReport < AssessmentSheetRO > report = FindReportImp < AssessmentSheetRO > ( ) ;
report . SetReportDataSource ( AssessmentSheetRO . Create ( DAOFactory . GenericDAO . LoadByID < Customer > ( customerOid ) , new DateTime ( year , month , 1 ) ) ) ;
return report as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2020-10-13 14:35:06 +02:00
public override XtraReport CreateFlsReport ( String flsReportId , String subType )
{
string flsReportPath = BS . Shared . Core . Utils . CreateSavePath ( TempPath , flsReportId + ".xml" ) ;
var lFLSAnalysisDataReportDC = Utils . XMLDeserialize < FLSAnalysisDataReportDC > ( flsReportPath ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
IBeWoReport < FLSReportRO > lFLSReportObject = null ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
if ( ! String . IsNullOrEmpty ( subType ) )
lFLSReportObject = this . FindReportImp < FLSReportRO > ( subType ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
if ( lFLSReportObject = = null )
lFLSReportObject = this . FindReportImp < FLSReportRO > ( lFLSAnalysisDataReportDC . ShowGroups
? "FLSAuswertung"
: "Leistungsdokumentation" ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
lFLSReportObject . SetReportDataSource ( FLSReportRO . Create ( lFLSAnalysisDataReportDC ) ) ;
return lFLSReportObject as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2026-06-18 11:05:29 +02:00
2020-10-13 14:35:06 +02:00
public override XtraReport CreateQueryReport ( long queryOid , String queryReportId )
{
2026-06-18 11:05:29 +02:00
//Muss irgendwann mal in die GUI integriert werden
if ( queryOid = = 11000 )
{
return CreateVgaStatistic ( CreateQueryRO ( queryOid , queryReportId ) , VgaTypeEnum . Vga ) ;
}
if ( queryOid = = 11001 )
{
return CreateVgaStatistic ( CreateQueryRO ( queryOid , queryReportId ) , VgaTypeEnum . Asa ) ;
}
if ( queryOid = = 11002 )
{
return CreateVgaStatistic ( CreateQueryRO ( queryOid , queryReportId ) , VgaTypeEnum . Tgv ) ;
}
2020-10-13 14:35:06 +02:00
var query = DAOFactory . GenericDAO . LoadByID < Query > ( queryOid ) ;
2023-09-20 09:20:31 +02:00
if ( query is null )
2023-03-27 17:41:58 +02:00
{
2020-10-13 14:35:06 +02:00
return new XtraReport ( ) ;
2023-03-27 17:41:58 +02:00
}
2016-06-27 01:45:38 +02:00
2023-03-27 17:41:58 +02:00
var path = Utils . CreateSavePath ( TempPath , queryReportId + ".xml" ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
var table = Utils . XMLDeserialize < DataTable > ( path ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
var queryReport = FindReportImp < QueryRO > ( null , query . ReportTypeName ) ;
2023-03-27 17:41:58 +02:00
var queryReportObject = QueryRO . Create ( query , table ) ;
queryReport . SetReportDataSource ( queryReportObject ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return queryReport as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2026-06-18 11:05:29 +02:00
private XtraReport CreateVgaStatistic ( QueryRO qro , VgaTypeEnum vgaType )
{
DateTime start = new DateTime ( DateTime . Now . Year , DateTime . Now . Month , 1 ) ;
DateTime ende = start . AddMonths ( 1 ) . AddTicks ( - 1 ) ;
if ( qro . Rows . Count > 0 )
{
start = new DateTime ( start . Year , start . Month , 1 ) ;
DateTime dt = DateTime . Now ;
if ( DateTime . TryParse ( qro . Rows [ 0 ] . Field1 . ToString ( ) , out dt ) & & dt > DateTime . MinValue )
{
start = dt ;
}
if ( DateTime . TryParse ( qro . Rows [ 0 ] . Field2 . ToString ( ) , out dt ) & & dt < DateTime . MaxValue . Date )
{
ende = dt . AddTicks ( - 1 ) ;
}
}
StatisticBase statistik = null ;
if ( vgaType = = VgaTypeEnum . Vga )
{
statistik = new VgaStatisticCreator ( ) ;
}
else if ( vgaType = = VgaTypeEnum . Tgv )
{
statistik = new TgvStatistic ( ) ;
}
else if ( vgaType = = VgaTypeEnum . Asa )
{
statistik = new AsaStatistic ( ) ;
}
statistik . CreateStatistic ( start , ende ) ;
return CreateReportForStatistik ( statistik ) ;
}
private XtraReport CreateReportForStatistik ( StatisticBase statistik )
{
XtraReport report = null ;
if ( statistik . VgaType = = VgaTypeEnum . Vga )
{
report = new VgaStatistikReport ( ) ;
2026-07-01 02:23:40 +02:00
var vsc = ( VgaStatisticCreator ) statistik ;
( ( VgaStatistikReport ) report ) . SetReportDataSource ( vsc . VgaStatisticEfs , vsc . VgaStatisticAuflage153a , vsc . VgaStatisticAuflage153aSteuerstraf , vsc . VgaStatisticBewOhne , vsc . VgaStatisticBewMit , vsc . VgaStatisticGnadenverfahren ) ;
2026-06-18 11:05:29 +02:00
}
else if ( statistik . VgaType = = VgaTypeEnum . Asa )
{
report = new AsaStatistikReport ( ) ;
2026-07-01 02:23:40 +02:00
( ( AsaStatistikReport ) report ) . SetReportDataSource ( statistik as AsaStatistic ) ;
2026-06-18 11:05:29 +02:00
}
else if ( statistik . VgaType = = VgaTypeEnum . Tgv )
{
report = new TgvStatistikReport ( ) ;
( ( TgvStatistikReport ) report ) . SetReportDataSource ( statistik as TgvStatistic ) ;
}
if ( report = = null )
{
report = new XtraReport ( ) ;
}
return report ;
}
2024-04-15 16:33:04 +02:00
public virtual QueryRO CreateQueryRO ( long queryOid , String queryReportId )
{
var query = DAOFactory . GenericDAO . LoadByID < Query > ( queryOid ) ;
if ( query ! = null )
{
var path = Path . Combine ( TempPath , queryReportId + ".xml" ) ;
var table = Utils . XMLDeserialize < DataTable > ( path ) ;
return QueryRO . Create ( query , table ) ;
}
return null ;
}
2020-09-30 10:00:31 +02:00
public override XtraReport CreateServiceInvoiceReport ( String dcIds , long? invoiceBaseOid )
{
if ( String . IsNullOrEmpty ( dcIds ) & & invoiceBaseOid . HasValue )
{
var serviceInvoice = DAOFactory . SearchDAO . GetServiceInvoiceByInvoiceBaseOid ( invoiceBaseOid . Value ) ;
dcIds = String . Format ( "{0}" , serviceInvoice . Oid ) ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
if ( ! string . IsNullOrEmpty ( dcIds ) )
{
var serviceInvoiceOid2CostbearerId = new Dictionary < long , string > ( ) ;
var dcList = new List < ServiceInvoiceDC > ( ) ;
var dcidStrs = dcIds . Split ( ';' ) ;
2023-08-14 17:35:58 +02:00
// Gehe jede ServiceItem Reference durch
2020-09-30 10:00:31 +02:00
foreach ( var oidStr in dcidStrs )
{
var oid = long . Parse ( oidStr ) ;
2023-08-14 17:35:58 +02:00
// Lade ServiceInvoice
2020-09-30 10:00:31 +02:00
var invoice = DAOFactory . GenericDAO . LoadByID < ServiceInvoice > ( oid ) ;
var dc = MapperFactory . ServiceInvoiceDC_ServiceInvoice . MapToNewDC ( invoice ) ;
2023-08-14 17:35:58 +02:00
// Füge dcListe hinzu
2020-09-30 10:00:31 +02:00
dcList . Add ( dc ) ;
2023-08-14 17:35:58 +02:00
// Falls ServiceInvoice Oid bereits in serviceInvoiceOid2CostbearerOid List (S2C List) ist, überspringe
2020-09-30 10:00:31 +02:00
if ( serviceInvoiceOid2CostbearerId . ContainsKey ( oid ) )
continue ;
2023-08-14 17:35:58 +02:00
// ServiceInvoice Oid ist noch nicht in S2C List
2023-08-21 14:45:00 +02:00
// Frage, ob InvoiceId existiert
2020-09-30 10:00:31 +02:00
if ( ! String . IsNullOrEmpty ( invoice . InvoiceBase . InvoiceId ) )
2023-08-21 14:45:00 +02:00
// Falls InvoiceId existiert
2020-09-30 10:00:31 +02:00
serviceInvoiceOid2CostbearerId . Add ( oid , invoice . InvoiceBase . InvoiceId ) ;
else
{
2023-08-21 14:45:00 +02:00
// Falls InvoiceId nicht existiert
2023-08-14 17:35:58 +02:00
// Gehe jede peroide von ServiceInvoice - ServiceInvoicePeriodList durch
2020-09-30 10:00:31 +02:00
foreach ( var period in invoice . ServiceInvoicePeriodList )
{
try
{
if ( period . SupportConceptApprovalPeriod ! = null )
{
2023-08-14 17:35:58 +02:00
// Falls periode - SupportConecptApprovalPeriod nicht leer ist, füge
2020-09-30 10:00:31 +02:00
AddCostBearerIdToDict ( oid , serviceInvoiceOid2CostbearerId ,
period . SupportConceptApprovalPeriod . CostBearer2SupportConcept ) ;
}
foreach ( var item in period . InvoiceItemList )
{
if ( item . SupportConceptApprovalPeriodOid . HasValue )
{
var approvalPeriod =
DAOFactory . GenericDAO . LoadByID < SupportConceptApprovalPeriod > ( item . SupportConceptApprovalPeriodOid . Value ) ;
if ( approvalPeriod . CostBearer2SupportConcept ! = null )
{
AddCostBearerIdToDict ( oid , serviceInvoiceOid2CostbearerId , approvalPeriod . CostBearer2SupportConcept ) ;
}
}
}
}
catch ( Exception )
{
//ignore
}
}
}
}
IBeWoReport < ServiceInvoiceRO > allReports = null ;
foreach ( var iDC in dcList )
{
String reportId = null ;
if ( serviceInvoiceOid2CostbearerId . ContainsKey ( iDC . ServiceInvoiceOid . Value ) )
reportId = serviceInvoiceOid2CostbearerId [ iDC . ServiceInvoiceOid . Value ] ;
IBeWoReport < ServiceInvoiceRO > singleReport = FindReportImp < ServiceInvoiceRO > ( reportId ) ;
singleReport . SetReportDataSource ( ServiceInvoiceRO . Create ( iDC ) ) ;
( ( XtraReport ) singleReport ) . CreateDocument ( ) ;
if ( allReports = = null )
allReports = singleReport ;
else
( ( XtraReport ) allReports ) . Pages . AddRange ( ( ( XtraReport ) singleReport ) . Pages ) ;
}
return allReports as XtraReport ;
}
return new XtraReport ( ) ;
}
2016-06-27 01:45:38 +02:00
2025-11-17 00:47:17 +01:00
public override XtraReport CreateServiceInvoiceReportMitQb ( long invoiceBaseOid )
{
var serviceInvoice = DAOFactory . SearchDAO . GetServiceInvoiceByInvoiceBaseOid ( invoiceBaseOid ) ;
var dc = MapperFactory . ServiceInvoiceDC_ServiceInvoice . MapToNewDC ( serviceInvoice ) ;
String reportId = serviceInvoice . InvoiceBase . InvoiceId ;
if ( String . IsNullOrEmpty ( reportId ) )
{
// Falls InvoiceId nicht existiert
// Gehe jede peroide von ServiceInvoice - ServiceInvoicePeriodList durch
foreach ( var period in serviceInvoice . ServiceInvoicePeriodList )
{
if ( String . IsNullOrEmpty ( reportId ) & & period . SupportConceptApprovalPeriod ! = null )
{
// Falls periode - SupportConecptApprovalPeriod nicht leer ist, füge
reportId = period . SupportConceptApprovalPeriod . CostBearer2SupportConcept . CostBearer . ID ;
if ( String . IsNullOrEmpty ( reportId ) & & period . SupportConceptApprovalPeriod . CostBearer2SupportConcept . CostBearer . IsSingleInvoicePerCustomer )
{
reportId = "Sammelrechnung" ;
}
}
foreach ( var item in period . InvoiceItemList )
{
if ( String . IsNullOrEmpty ( reportId ) & & item . SupportConceptApprovalPeriodOid . HasValue )
{
var approvalPeriod =
DAOFactory . GenericDAO . LoadByID < SupportConceptApprovalPeriod > ( item . SupportConceptApprovalPeriodOid . Value ) ;
if ( approvalPeriod . CostBearer2SupportConcept ! = null )
{
reportId = approvalPeriod . CostBearer2SupportConcept . CostBearer . ID ;
if ( String . IsNullOrEmpty ( reportId ) & & approvalPeriod . CostBearer2SupportConcept . CostBearer . IsSingleInvoicePerCustomer )
{
reportId = "Sammelrechnung" ;
}
}
}
}
}
IBeWoReport < ServiceInvoiceRO > invoiceReport = FindReportImp < ServiceInvoiceRO > ( reportId ) ;
invoiceReport . SetReportDataSource ( ServiceInvoiceRO . Create ( dc ) ) ;
( ( XtraReport ) invoiceReport ) . CreateDocument ( ) ;
var qb = CreateBelegeForInvoice ( serviceInvoice . InvoiceBase ) ;
AddReportPagesToMaster ( invoiceReport as XtraReport , qb ) ;
return invoiceReport as XtraReport ;
}
return new XtraReport ( ) ;
}
2017-02-01 13:53:59 +01:00
public virtual void AddCostBearerIdToDict ( long serviceInvoiceOid , Dictionary < long , string > serviceInvoiceOid2CostbearerId , CostBearer2SupportConcept c2s )
2020-09-30 10:00:31 +02:00
{
if ( c2s ! = null & & c2s . CostBearer ! = null )
{
var id = c2s . CostBearer . ID ;
if ( String . IsNullOrEmpty ( id ) & & c2s . CostBearer . IsSingleInvoicePerCustomer )
id = "Sammelrechnung" ;
if ( ! serviceInvoiceOid2CostbearerId . ContainsKey ( serviceInvoiceOid ) )
serviceInvoiceOid2CostbearerId . Add ( serviceInvoiceOid , id ) ;
}
}
2016-06-27 01:45:38 +02:00
2020-10-19 17:22:40 +02:00
public virtual XtraReport CreateServiceOverviewAllCustomersReport ( int month , int year , long orgaOid , long empOid , long? serviceCategoryOid , int startDay , int endDay )
{
2020-11-11 23:26:35 +01:00
return CreateServiceOverviewAllCustomersReport ( month , year , orgaOid , empOid , serviceCategoryOid , startDay , endDay , false ) ;
2020-10-19 17:22:40 +02:00
}
public override XtraReport CreateServiceOverviewAllCustomersReport ( int month , int year , long orgaOid , long empOid , long? serviceCategoryOid , int startDay , int endDay , bool nurFehlende )
2020-09-30 10:00:31 +02:00
{
var os = new OperationsServiceImp ( ) ;
var m = os . GetMandator2 ( false ) ;
if ( m . AllowSbd )
{
2022-03-09 16:52:32 +01:00
return CreateSbdLeistungsnachweisForAllCustomers ( month , year , orgaOid , empOid , serviceCategoryOid ? ? 0 , startDay , endDay , false , "nrw" ) ;
2020-09-30 10:00:31 +02:00
}
2018-10-08 11:57:16 +02:00
2020-10-19 17:22:40 +02:00
List < ServicesOverviewRO > lROs = ServicesOverviewRO . Create ( month , year , orgaOid , empOid , startDay , endDay , serviceCategoryOid , true , nurFehlende ) ;
2016-06-27 01:45:38 +02:00
2025-11-19 14:25:12 +01:00
return CreateServiceOverviewReportForROs ( lROs , orgaOid ) ;
}
public override XtraReport CreateServiceOverviewSingleCustomerReport ( long customerOid , int month , int year , long orgaOid , long empOid , long? serviceCategoryOid , int startDay , int endDay )
{
var os = new OperationsServiceImp ( ) ;
var m = os . GetMandator2 ( false ) ;
if ( m . AllowSbd )
{
return CreateSbdLeistungsnachweisForSingleCustomerReport ( customerOid , month , year , orgaOid , empOid , serviceCategoryOid ? ? 0 , startDay , endDay , false , "nrw" ) ;
}
var ro = ServicesOverviewRO . Create ( customerOid , month , year , false , orgaOid , empOid , startDay , endDay , serviceCategoryOid ) ;
var roList = new List < ServicesOverviewRO > ( ) ;
if ( ro ! = null )
{
roList . Add ( ro ) ;
}
return CreateServiceOverviewReportForROs ( roList , orgaOid ) ;
}
public virtual XtraReport CreateServiceOverviewReportForROs ( List < ServicesOverviewRO > roList , long orgaOid )
{
if ( roList . Count > 0 )
2020-09-30 10:00:31 +02:00
{
String reportId = null ;
if ( orgaOid > 0 )
{
var organisation = DAOFactory . GenericDAO . LoadByID < Organisation > ( orgaOid ) ;
if ( organisation ! = null )
reportId = organisation . Name ;
}
2017-05-18 21:47:09 +02:00
var lServiceOverviewAllCustomersReport = this . FindReportImp < ServicesOverviewRO > ( reportId ) ;
2025-11-19 14:25:12 +01:00
lServiceOverviewAllCustomersReport . SetReportDataSource ( roList [ 0 ] ) ;
2020-09-30 10:00:31 +02:00
( lServiceOverviewAllCustomersReport as XtraReport ) . CreateDocument ( ) ;
var Report = lServiceOverviewAllCustomersReport as XtraReport ;
2018-10-08 11:57:16 +02:00
2025-11-19 14:25:12 +01:00
for ( int i = 1 ; i < roList . Count ; i + + )
2020-09-30 10:00:31 +02:00
{
var lNext = FindReportImp < ServicesOverviewRO > ( reportId ) ;
2025-11-19 14:25:12 +01:00
lNext . SetReportDataSource ( roList [ i ] ) ;
2020-09-30 10:00:31 +02:00
( lNext as XtraReport ) . CreateDocument ( ) ;
Report . Pages . AddRange ( ( lNext as XtraReport ) . Pages ) ;
}
return lServiceOverviewAllCustomersReport as XtraReport ;
}
return new XtraReport ( ) ;
}
2025-11-17 00:47:17 +01:00
public override XtraReport CreateServiceOverviewReportNew ( int month , int year , QBFilterEnum filterType , long? customerOid , long? teamOid , long? empOid , long? orgaOid , long? serviceCategoryOid , int startDay , int endDay , bool nurFehlende )
{
DateTime startDate = new DateTime ( year , month , startDay ) ;
DateTime endDate = new DateTime ( year , month , endDay ) ;
return CreateServiceOverviewReportNew ( ( QBFilterEnum ) filterType , customerOid , teamOid , empOid , orgaOid , serviceCategoryOid , startDate , endDate , nurFehlende ) ;
}
2025-10-24 01:59:17 +02:00
public override XtraReport CreateServiceOverviewReportNew ( QBFilterEnum filterType , long? customerOid , long? teamOid , long? empOid , long? orgaOid , long? serviceCategoryOid , DateTime startDate , DateTime endDate , bool nurFehlende )
2020-09-15 13:14:43 +02:00
{
2025-10-24 01:59:17 +02:00
XtraReport gesamtReport = null ;
DateTime dt = startDate ;
int startDay = dt . Day ;
int month = dt . Month ;
int year = dt . Year ;
while ( dt < endDate )
2020-09-15 13:14:43 +02:00
{
2025-10-24 01:59:17 +02:00
XtraReport report = null ;
DateTime monatsEnde = new DateTime ( dt . Year , dt . Month , DateTime . DaysInMonth ( dt . Year , dt . Month ) ) ;
int endDay = monatsEnde . Day ;
if ( endDate < monatsEnde )
{
endDay = endDate . Day ;
}
switch ( filterType )
{
case QBFilterEnum . AlleKlienten :
if ( ! nurFehlende )
{
report = CreateServiceOverviewAllCustomersReport ( month , year , orgaOid ? ? 0 , empOid ? ? 0 , serviceCategoryOid , startDay , endDay ) ;
}
2025-10-24 12:41:39 +02:00
else
{
report = CreateServiceOverviewAllCustomersReport ( month , year , orgaOid ? ? 0 , empOid ? ? 0 , serviceCategoryOid , startDay , endDay , nurFehlende ) ;
}
2025-10-24 01:59:17 +02:00
break ;
case QBFilterEnum . NurKlientenMeinesTeams :
var list1 = GetKlientenOidsMeinesTeams ( null ) ;
report = CreateServiceOverviewReportForCustomers ( list1 , month , year , orgaOid , empOid , serviceCategoryOid , startDay , endDay , nurFehlende ) ;
break ;
case QBFilterEnum . MeineKlienten :
var list2 = GetMeineKlientenOids ( ) ;
report = CreateServiceOverviewReportForCustomers ( list2 , month , year , orgaOid , empOid , serviceCategoryOid , startDay , endDay , nurFehlende ) ;
break ;
case QBFilterEnum . KlientenAuswahl :
report = CreateServiceOverviewSingleCustomerReport ( customerOid ? ? 0 , month , year , orgaOid ? ? 0 , empOid ? ? 0 , serviceCategoryOid , startDay , endDay ) ;
break ;
case QBFilterEnum . TeamAuswahl :
var list3 = GetKlientenOidsMeinesTeams ( teamOid ) ;
report = CreateServiceOverviewReportForCustomers ( list3 , month , year , orgaOid , empOid , serviceCategoryOid , startDay , endDay , nurFehlende ) ;
break ;
}
if ( gesamtReport = = null )
{
gesamtReport = report ;
}
else
{
2025-11-17 00:47:17 +01:00
AddReportPagesToMaster ( gesamtReport , report ) ;
2025-10-24 01:59:17 +02:00
}
dt = dt . AddMonths ( 1 ) ;
startDay = 1 ;
month = dt . Month ;
year = dt . Year ;
2020-09-15 13:14:43 +02:00
}
2025-10-24 01:59:17 +02:00
if ( gesamtReport = = null )
{
gesamtReport = new XtraReport ( ) ;
}
return gesamtReport ;
2020-09-15 13:14:43 +02:00
}
2024-04-09 11:47:48 +02:00
public virtual IList < long > GetMeineKlientenOids ( )
2020-10-13 14:35:06 +02:00
{
IList < long > customerOids = new List < long > ( ) ;
2020-09-15 13:14:43 +02:00
ApplicationUser loggedInUser = null ;
2020-10-13 14:35:06 +02:00
if ( LoggedInUserOperationContextExt . Current ! = null & & LoggedInUserOperationContextExt . Current . User ! = null )
{
loggedInUser = LoggedInUserOperationContextExt . Current . User ;
}
else
{
loggedInUser = SessionFacade . LoggedInUser ;
}
if ( loggedInUser ! = null & & loggedInUser . Employee ! = null )
{
foreach ( var e2c in loggedInUser . Employee . Employee2CustomerList )
{
if ( e2c . Customer . IsActive = = ActivationTypeId . Active )
{
foreach ( var v2o in e2c . ValueList )
{
if ( v2o . Entry . Type = = ValueListEntryType . StaffRoleType & & v2o . Entry . SystemEntryID . HasValue & & v2o . Entry . SystemEntryID . Value = = SystemEntryID . EmployeeRoleMainAttendant )
2020-09-15 13:14:43 +02:00
{
2020-10-13 14:35:06 +02:00
if ( ! customerOids . Contains ( e2c . Customer . Oid . Value ) )
{
customerOids . Add ( e2c . Customer . Oid . Value ) ;
}
2020-09-15 13:14:43 +02:00
2020-10-13 14:35:06 +02:00
}
}
}
}
}
2020-09-15 13:14:43 +02:00
2020-10-13 14:35:06 +02:00
return customerOids ;
}
2020-09-15 13:14:43 +02:00
2023-11-13 11:33:08 +01:00
/// <summary>
/// Lädt die Oids der Klienten, die im Reiter "Betreuung" mit dem vom angemeldeten Mitarbeiter geleiteten Team verknüpft sind.
/// </summary>
/// <param name="teamOid">Die Oid des Teams oder aller Teams des Mitarbeiters, falls null</param>
/// <returns>CustomerOids, die im Reiter "Betreuung" mit dem vom angemeldeten Mitarbeiter geleiteten Team - falls die teamOid null ist, aller Teams des Mitarbeiters - verknüpft sind.</returns>
2020-10-13 14:35:06 +02:00
public virtual IList < long > GetKlientenOidsMeinesTeams ( long? teamOid )
{
IList < long > customerOids = new List < long > ( ) ;
2020-09-15 13:14:43 +02:00
2023-11-13 11:33:08 +01:00
ApplicationUser loggedInUser ;
2020-09-15 13:14:43 +02:00
if ( LoggedInUserOperationContextExt . Current ! = null & & LoggedInUserOperationContextExt . Current . User ! = null )
{
loggedInUser = LoggedInUserOperationContextExt . Current . User ;
}
else
{
loggedInUser = SessionFacade . LoggedInUser ;
}
2023-11-13 11:33:08 +01:00
if ( loggedInUser ? . Employee ! = null )
2020-09-15 13:14:43 +02:00
{
var teams = new List < Team > ( ) ;
if ( teamOid . HasValue )
{
teams . Add ( DAOFactory . GenericDAO . LoadByID < Team > ( teamOid . Value ) ) ;
}
else
{
teams . AddRange ( DAOFactory . SearchDAO . FindLeadingTeams ( loggedInUser . Employee . Oid . Value ) ) ;
teams . AddRange ( DAOFactory . SearchDAO . FindTeamsOfEmployee ( loggedInUser . Employee . Oid . Value ) ) ;
}
2020-10-13 14:35:06 +02:00
2020-11-10 02:25:15 +01:00
//1. Mitarbeiter der Teams durchlaufen oder
//foreach (var team in teams)
//{
// foreach (var employee in team.MemberList)
// {
// foreach (var e2c in employee.Employee2CustomerList)
// {
// if (e2c.Customer.IsActive == ActivationTypeId.Active)
// {
// foreach (var v2o in e2c.ValueList)
// {
// if (v2o.Entry.Type == ValueListEntryType.StaffRoleType && v2o.Entry.SystemEntryID.HasValue && v2o.Entry.SystemEntryID.Value == SystemEntryID.EmployeeRoleMainAttendant)
// {
// if (!customerOids.Contains(e2c.Customer.Oid.Value))
// {
// customerOids.Add(e2c.Customer.Oid.Value);
// }
// }
// }
// }
// }
// }
//}
//2. Klienten der Teams durchlaufen oder
2020-09-15 13:14:43 +02:00
foreach ( var team in teams )
{
2020-11-10 02:25:15 +01:00
var customers = DAOFactory . SearchDAO . FindCustomerOfTeam ( team . Oid . Value ) ;
foreach ( var c in customers )
2020-09-15 13:14:43 +02:00
{
2020-11-10 02:25:15 +01:00
if ( c . IsActive = = ActivationTypeId . Active )
2020-09-15 13:14:43 +02:00
{
2020-11-10 02:25:15 +01:00
if ( ! customerOids . Contains ( c . Oid . Value ) )
2020-09-15 13:14:43 +02:00
{
2020-11-10 02:25:15 +01:00
customerOids . Add ( c . Oid . Value ) ;
2020-09-15 13:14:43 +02:00
}
}
}
}
}
2020-10-13 14:35:06 +02:00
return customerOids ;
}
2020-09-15 13:14:43 +02:00
2020-10-19 17:22:40 +02:00
public virtual XtraReport CreateServiceOverviewReportForCustomers ( IList < long > customerOids , int month , int year , long? orgaOid , long? empOid , long? serviceCategoryOid , int startDay , int endDay , bool nurFehlende )
2020-10-13 14:35:06 +02:00
{
var roList = new List < ServicesOverviewRO > ( ) ;
2020-09-15 13:14:43 +02:00
2020-10-13 14:35:06 +02:00
foreach ( var coid in customerOids )
{
var ro = ServicesOverviewRO . Create ( coid , month , year , true , orgaOid ? ? 0 , empOid ? ? 0 , startDay , endDay , serviceCategoryOid ) ;
2020-09-15 13:14:43 +02:00
2020-10-13 14:35:06 +02:00
if ( ro ! = null )
{
roList . Add ( ro ) ;
}
}
2020-09-15 13:14:43 +02:00
2024-03-03 19:07:45 +01:00
QBSortOrderEnum sortOrder = QBSortOrderEnum . NachKlient ;
2020-09-15 13:14:43 +02:00
2024-03-03 19:07:45 +01:00
if ( HttpContext . Current ! = null )
{
var so = HttpContext . Current . Request . Params [ "sortorder" ] ;
if ( ! String . IsNullOrWhiteSpace ( so ) )
{
sortOrder = ( QBSortOrderEnum ) ( Int32 . Parse ( so ) ) ;
}
}
if ( sortOrder = = QBSortOrderEnum . NachHauptbetreuung )
{
roList = roList . OrderBy ( r = > r . MainAttendant ) . ToList ( ) ;
}
else
{
roList = roList . OrderBy ( r = > r . CustomerLastName + ", " + r . CustomerFirstName ) . ToList ( ) ;
}
if ( roList . Count > 0 )
2020-10-13 14:35:06 +02:00
{
String reportId = null ;
if ( orgaOid . HasValue & & orgaOid > 0 )
{
var organisation = DAOFactory . GenericDAO . LoadByID < Organisation > ( orgaOid . Value ) ;
if ( organisation ! = null )
reportId = organisation . Name ;
}
2020-09-15 13:14:43 +02:00
2024-03-03 19:07:45 +01:00
var rootReport = CreateReportForServicesOverviewRo ( roList [ 0 ] , reportId ) ;
2020-10-13 14:35:06 +02:00
if ( rootReport . Pages . Count = = 0 )
{
rootReport . CreateDocument ( ) ;
}
2020-09-15 13:14:43 +02:00
2024-03-03 19:07:45 +01:00
for ( int i = 1 ; i < roList . Count ; i + + )
2020-10-13 14:35:06 +02:00
{
2024-03-03 19:07:45 +01:00
var lNext = CreateReportForServicesOverviewRo ( roList [ i ] , reportId ) ;
2020-10-13 14:35:06 +02:00
2025-11-17 00:47:17 +01:00
AddReportPagesToMaster ( rootReport , lNext ) ;
2020-09-15 13:14:43 +02:00
}
2020-10-13 14:35:06 +02:00
return rootReport ;
}
return new XtraReport ( ) ;
}
2020-09-15 13:14:43 +02:00
public virtual XtraReport CreateReportForServicesOverviewRo ( ServicesOverviewRO ro , String reportId )
{
2020-10-13 14:35:06 +02:00
2020-09-15 13:14:43 +02:00
var serviceOverviewReport = this . FindReportImp < ServicesOverviewRO > ( reportId ) ;
serviceOverviewReport . SetReportDataSource ( ro ) ;
2020-10-13 14:35:06 +02:00
2020-09-15 13:14:43 +02:00
return serviceOverviewReport as XtraReport ;
}
2020-10-13 14:35:06 +02:00
public virtual XtraReport AddSubServicesOverviewReportToReport ( XtraReport masterReport , IBeWoReport < ServicesOverviewRO > newReport , ServicesOverviewRO ro )
{
if ( ro . Services . Count > 0 )
{
newReport . SetReportDataSource ( ro ) ;
( ( XtraReport ) newReport ) . CreateDocument ( ) ;
if ( masterReport = = null )
{
masterReport = newReport as XtraReport ;
}
else
{
2025-11-17 00:47:17 +01:00
AddReportPagesToMaster ( masterReport , ( XtraReport ) newReport ) ;
2020-10-13 14:35:06 +02:00
}
}
return masterReport ;
}
2020-09-15 13:14:43 +02:00
2022-03-09 16:52:32 +01:00
public override XtraReport CreateSbdLeistungsnachweisForAllCustomers ( int month , int year , long orgaOid , long empOid , long serviceCategoryOid , int startDay , int endDay , bool checkServiceRecords , string bundesland )
2020-10-13 14:35:06 +02:00
{
2022-03-09 16:52:32 +01:00
return CreateReportForStundenaufstellungROs ( SbdStundenaufstellungRO . Create ( month , year , orgaOid , empOid , serviceCategoryOid , startDay , endDay , false , "nrw" ) ) ;
2018-10-08 11:57:16 +02:00
2018-11-22 14:05:45 +01:00
}
2022-03-09 16:52:32 +01:00
public override XtraReport CreateSbdLeistungsnachweisForSingleCustomerReport ( long customerOid , int month , int year , long orgaOid , long empOid , long serviceCategoryOid , int startDay , int endDay , bool checkServiceRecords , string bundesland )
2020-09-30 10:00:31 +02:00
{
2022-03-09 16:52:32 +01:00
return CreateReportForStundenaufstellungROs ( SbdStundenaufstellungRO . Create ( customerOid , month , year , orgaOid , empOid , serviceCategoryOid , startDay , endDay , false , "nrw" , false ) ) ;
2018-10-08 11:57:16 +02:00
2020-09-30 10:00:31 +02:00
}
2018-11-22 14:05:45 +01:00
2022-03-09 16:52:32 +01:00
public virtual XtraReport CreateReportForStundenaufstellungROs ( IList < SbdStundenaufstellungRO > ros )
2020-09-30 10:00:31 +02:00
{
if ( ros . Count > 0 )
{
2018-11-22 14:05:45 +01:00
var lServiceOverviewAllCustomersReport = this . FindReportImp < SbdStundenaufstellungRO > ( ) ;
2020-09-30 10:00:31 +02:00
lServiceOverviewAllCustomersReport . SetReportDataSource ( ros [ 0 ] ) ;
( lServiceOverviewAllCustomersReport as XtraReport ) . CreateDocument ( ) ;
var Report = lServiceOverviewAllCustomersReport as XtraReport ;
2018-10-08 11:57:16 +02:00
2020-09-30 10:00:31 +02:00
for ( int i = 1 ; i < ros . Count ; i + + )
{
var lNext = FindReportImp < SbdStundenaufstellungRO > ( ) ;
lNext . SetReportDataSource ( ros [ i ] ) ;
( lNext as XtraReport ) . CreateDocument ( ) ;
Report . Pages . AddRange ( ( lNext as XtraReport ) . Pages ) ;
}
2018-10-08 11:57:16 +02:00
2020-09-30 10:00:31 +02:00
return lServiceOverviewAllCustomersReport as XtraReport ;
}
return new XtraReport ( ) ;
}
2018-10-08 11:57:16 +02:00
public override XtraReport CreateServiceRecordListReport ( long employeeOid , long customerOid , long supportConceptOid , long costbearer2SupportConceptOid , bool isLimitedToAdditionalServices , DateTimeSpan limitingTimeSpan )
2020-09-30 10:00:31 +02:00
{
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
IBeWoReport < ServiceRecordListRO > lServiceRecordListReport = FindReportImp < ServiceRecordListRO > ( ) ;
lServiceRecordListReport . SetReportDataSource ( ServiceRecordListRO . Create ( employeeOid , customerOid , supportConceptOid , costbearer2SupportConceptOid , isLimitedToAdditionalServices , limitingTimeSpan ) ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return lServiceRecordListReport as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public override XtraReport CreateSettlementReport ( String dcId , long? invoiceBaseOid )
{
2021-05-24 21:40:02 +02:00
return CreateSettlementReport ( dcId , invoiceBaseOid , false ) ;
}
public virtual XtraReport CreateSettlementReport ( String dcId , long? invoiceBaseOid , bool createAnhang )
{
XtraReport report = null ;
2020-10-13 14:35:06 +02:00
String reportId = null ;
2025-10-24 01:59:17 +02:00
var lSettlementDC = GetSettlementDC ( dcId , invoiceBaseOid ) ;
2020-10-13 14:35:06 +02:00
if ( lSettlementDC . CostBearer2SupportConceptOid . HasValue )
{
CostBearer2SupportConcept c2s = DAOFactory . GenericDAO . LoadByID < CostBearer2SupportConcept > ( lSettlementDC . CostBearer2SupportConceptOid . Value ) ;
reportId = c2s . CostBearer . ID ;
}
2023-09-20 09:20:31 +02:00
2020-09-30 10:00:31 +02:00
if ( lSettlementDC . DifferentHourlyRateCount > 0 )
{
2023-09-20 09:20:31 +02:00
2020-09-30 10:00:31 +02:00
IBeWoReport < SettlementRO > lSettlementReport = FindReportImp < SettlementRO > ( reportId ) ;
2021-05-24 21:40:02 +02:00
var ro = SettlementRO . Create ( lSettlementDC ) ;
lSettlementReport . SetReportDataSource ( ro ) ;
2016-06-27 01:45:38 +02:00
2021-05-24 21:40:02 +02:00
report = lSettlementReport as XtraReport ;
2020-09-30 10:00:31 +02:00
}
else
{
IBeWoReport < Settlement2RO > lSettlementReport = FindReportImp < Settlement2RO > ( reportId ) ;
lSettlementReport . SetReportDataSource ( Settlement2RO . Create ( lSettlementDC ) ) ;
2021-05-24 21:40:02 +02:00
report = lSettlementReport as XtraReport ;
2023-09-20 09:20:31 +02:00
2021-05-24 21:40:02 +02:00
}
2023-09-20 09:20:31 +02:00
2021-05-24 21:40:02 +02:00
if ( createAnhang )
{
if ( report ! = null )
{
report . CreateDocument ( ) ;
2025-10-20 10:40:24 +02:00
if ( reportId ! = null & & reportId = = "LWLDigga" )
2021-05-24 21:40:02 +02:00
{
2025-10-20 10:40:24 +02:00
var anhang = CreateBudgetnachweisDiggiAnhang ( lSettlementDC ) ;
if ( anhang ! = null )
{
anhang . CreateDocument ( ) ;
report . Pages . AddRange ( anhang . Pages ) ;
}
}
else
{
var anhang = CreateBudgetnachweisAnhang ( lSettlementDC ) ;
if ( anhang ! = null )
{
anhang . CreateDocument ( ) ;
report . Pages . AddRange ( anhang . Pages ) ;
}
2021-05-24 21:40:02 +02:00
}
}
2020-09-30 10:00:31 +02:00
}
2021-05-24 21:40:02 +02:00
return report ;
}
2025-10-24 01:59:17 +02:00
public override XtraReport CreateSettlementReportMitQB ( String dcId , long? invoiceBaseOid )
{
XtraReport report = null ;
String reportId = null ;
var lSettlementDC = GetSettlementDC ( dcId , invoiceBaseOid ) ;
if ( lSettlementDC . CostBearer2SupportConceptOid . HasValue )
{
CostBearer2SupportConcept c2s = DAOFactory . GenericDAO . LoadByID < CostBearer2SupportConcept > ( lSettlementDC . CostBearer2SupportConceptOid . Value ) ;
reportId = c2s . CostBearer . ID ;
}
if ( lSettlementDC . DifferentHourlyRateCount > 0 )
{
IBeWoReport < SettlementRO > lSettlementReport = FindReportImp < SettlementRO > ( reportId ) ;
var ro = SettlementRO . Create ( lSettlementDC ) ;
lSettlementReport . SetReportDataSource ( ro ) ;
report = lSettlementReport as XtraReport ;
}
else
{
IBeWoReport < Settlement2RO > lSettlementReport = FindReportImp < Settlement2RO > ( reportId ) ;
lSettlementReport . SetReportDataSource ( Settlement2RO . Create ( lSettlementDC ) ) ;
report = lSettlementReport as XtraReport ;
}
if ( lSettlementDC . InvoiceBaseOid . HasValue )
{
var sb = DAOFactory . GenericDAO . LoadByID < InvoiceBase > ( lSettlementDC . InvoiceBaseOid . Value ) ;
var qb = CreateBelegeForInvoice ( sb ) ;
2025-11-17 00:47:17 +01:00
AddReportPagesToMaster ( report , qb ) ;
2025-10-24 01:59:17 +02:00
}
return report ;
}
2025-11-17 00:47:17 +01:00
public void AddReportPagesToMaster ( XtraReport master , XtraReport report2Add )
{
if ( master = = null | | report2Add = = null )
return ;
if ( report2Add . Pages . Count = = 0 )
{
report2Add . CreateDocument ( ) ;
}
if ( master . Pages . Count = = 0 )
{
master . CreateDocument ( ) ;
}
master . Pages . AddRange ( report2Add . Pages ) ;
}
2025-10-24 01:59:17 +02:00
public virtual Settlement2DC GetSettlementDC ( String dcId , long? invoiceBaseOid )
{
Settlement2DC dc ;
long result ;
if ( string . IsNullOrEmpty ( dcId ) & & invoiceBaseOid . HasValue )
{
dc = MapperFactory . SettlementDC_SettlementInvoice . MapToNewDC ( DAOFactory . SearchDAO . GetSettlementInvoiceByInvoiceBaseOid ( invoiceBaseOid . Value ) ) ;
}
else if ( Int64 . TryParse ( dcId , out result ) )
{
dc = MapperFactory . SettlementDC_SettlementInvoice . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < SettlementInvoice > ( result ) ) ; // = Utils.XMLDeserialize<SettlementDC>(lPath);
}
else
{
string lPath = BS . Shared . Core . Utils . CreateSavePath ( TempPath , dcId ) ;
dc = Utils . XMLDeserialize < Settlement2DC > ( lPath ) ;
}
return dc ;
}
protected virtual XtraReport CreateBelegeForInvoice ( InvoiceBase invoiceBase )
{
List < ServicesOverviewRO > quittierungsbelegRos = null ;
if ( invoiceBase . CostBearer2SupportConcept ! = null )
{
var customerOid = invoiceBase . CostBearer2SupportConcept . SupportConcept . Customer . Oid . Value ;
return CreateServiceOverviewReportNew ( QBFilterEnum . KlientenAuswahl , customerOid , null , null , null , null , invoiceBase . AccountingPeriodStart . Value , invoiceBase . AccountingPeriodEnd . Value , false ) ;
}
return null ;
}
2021-05-24 21:40:02 +02:00
protected virtual XtraReport CreateBudgetnachweisAnhang ( Settlement2DC settlementDC )
{
2021-11-24 17:12:03 +01:00
var ro = PluginLoader . FindClass < BudgetnachweisAnhangRO > ( ) ;
ro . Create ( settlementDC ) ;
2021-05-24 21:40:02 +02:00
IBeWoReport < BudgetnachweisAnhangRO > anhang = FindReportImp < BudgetnachweisAnhangRO > ( ) ;
anhang . SetReportDataSource ( ro ) ;
return anhang as XtraReport ;
2020-09-30 10:00:31 +02:00
}
2016-06-27 01:45:38 +02:00
2025-10-20 10:40:24 +02:00
protected virtual XtraReport CreateBudgetnachweisDiggiAnhang ( Settlement2DC settlementDC )
{
var ro = PluginLoader . FindClass < BudgetnachweisAnhangDiggaRO > ( ) ;
ro . Create ( settlementDC ) ;
IBeWoReport < BudgetnachweisAnhangDiggaRO > anhang = FindReportImp < BudgetnachweisAnhangDiggaRO > ( ) ;
anhang . SetReportDataSource ( ro ) ;
return anhang as XtraReport ;
}
2022-12-28 23:57:47 +01:00
public override XtraReport CreateSupportConceptReport ( IList < long > c2sOids , long? employeeOid , long? teamOid , long? catOid , int? expiredMonths , bool archivedSupportConcepts , DateTime ? startDate , DateTime ? endDate )
2020-09-30 10:00:31 +02:00
{
var lSupportConceptReport = FindReportImp < SupportConceptListRO > ( ) ;
2022-12-28 23:57:47 +01:00
lSupportConceptReport . SetReportDataSource ( SupportConceptListRO . Create ( c2sOids , employeeOid , teamOid , catOid , expiredMonths , archivedSupportConcepts , startDate , endDate ) ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return lSupportConceptReport as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public override XtraReport CreateAdditionalServiceBookingReport ( long addServiceRegionOid , Monat month , int year )
{
var report = FindReportImp < AdditionalServiceBookingRO > ( ) ;
var x =
AdditionalServiceBookingRO . Create (
DAOFactory . GenericDAO . LoadByID < AdditionalServiceRegion > ( addServiceRegionOid ) , month , year ) ;
report . SetReportDataSource ( x ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return report as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public override XtraReport CreateEmployeeHourReport ( long? employeeOid , IList < long > teamOids , DateTime startDate , DateTime endDate , int ansicht )
{
IBeWoReport < MitarbeiterstundenkontoRO > report ;
2017-03-14 20:27:20 +01:00
2020-10-13 14:35:06 +02:00
if ( ansicht = = 1 )
{
report = FindReportImp < MitarbeiterstundenkontoRO > ( "Mitarbeiterarbeitszeitkonto" ) ;
2017-03-14 20:27:20 +01:00
}
2020-09-18 15:59:03 +02:00
else if ( ansicht = = 2 )
2020-10-13 14:35:06 +02:00
{
2020-11-25 11:40:05 +01:00
var reportjahr = FindReportImp < MitarbeiterstundenkontoMonateRO > ( "MitarbeiterstundenkontoJahr" ) ;
2020-10-13 14:35:06 +02:00
var jahrStart = new DateTime ( startDate . Year , 1 , 1 ) ;
var ds = new MitarbeiterstundenkontoMonateRO ( employeeOid , teamOids , jahrStart , endDate , null ) ;
reportjahr . SetReportDataSource ( ds ) ;
return reportjahr as XtraReport ;
}
else
{
if ( teamOids ! = null & & teamOids . Count > 0 )
{
report = FindReportImp < MitarbeiterstundenkontoRO > ( "Teamstundenkonto" ) ;
}
else
{
report = FindReportImp < MitarbeiterstundenkontoRO > ( "Mitarbeiterstundenkonto" ) ;
}
}
2023-09-20 09:20:31 +02:00
var reportObject = MitarbeiterstundenkontoRO . Create ( employeeOid , teamOids , startDate , endDate , null ) ;
2023-09-04 16:57:20 +02:00
report . SetReportDataSource ( reportObject ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return report as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public override XtraReport CreateAuslastungReport ( long? employeeOid , IList < long > teamOids , DateTime startDate , DateTime endDate )
{
IBeWoReport < MitarbeiterauslastungRO > report ;
2017-03-16 13:36:54 +01:00
if ( teamOids ! = null & & teamOids . Count > 0 )
report = FindReportImp < MitarbeiterauslastungRO > ( "Teamauslastung" ) ;
2020-09-30 10:00:31 +02:00
else
report = FindReportImp < MitarbeiterauslastungRO > ( "Mitarbeiterauslastung" ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
var x = MitarbeiterauslastungRO . Create ( employeeOid , teamOids , startDate , endDate ) ;
report . SetReportDataSource ( x ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return report as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public override XtraReport CreateMediVerordListenReport ( long? mvlOid )
{
var report = FindReportImp < MedVerListRO > ( ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
report . SetReportDataSource ( MedVerListRO . Create ( mvlOid ) ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return report as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public override XtraReport CreateMediVerordListenMZfReport ( long? mvlOid , bool mitZusatzfeldern )
{
var report = FindReportImp < MedVerListRO > ( ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
report . SetReportDataSource ( MedVerListRO . Create ( mvlOid , mitZusatzfeldern ) ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return report as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
public override XtraReport CreateKalenderReport ( long? employeeOid , AppointmentViewType viewType , DateTime rangeStartDate , DateTime rangeEndDate , List < DateTime > datesList , List < UserRightType > userRights )
{
var report = new DailyAppointmentReportKalender ( ) ;
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
//switch (viewType)
//{
// case AppointmentViewType.Week:
// var r = new WeeklyAppointmentReport();
// r.SetReportDataSource(KalenderRO.Create(employeeOid, viewType, rangeStartDate, rangeEndDate, datesList));
// return r;
//}
//throw new NotImplementedException("Wird umgebaut");
//report.SetReportDataSource(KalenderRO.Create(employeeOid, viewType, rangeStartDate, rangeEndDate, datesList, userRights));
2016-06-27 01:45:38 +02:00
2020-09-30 10:00:31 +02:00
return report ;
}
2016-06-27 01:45:38 +02:00
2022-08-10 12:13:18 +02:00
2023-10-18 10:54:53 +02:00
public override XtraReport CreateFinanceReport ( DateTime ? start , DateTime ? end , bool splitByServiceCategory , bool onlyNotApproved )
2020-09-30 10:00:31 +02:00
{
var report = FindReportImp < FinanceRO > ( ) ;
2016-06-27 01:45:38 +02:00
2023-10-18 10:54:53 +02:00
report . SetReportDataSource ( FinanceRO . Create ( start , end , splitByServiceCategory , onlyNotApproved ) ) ;
2020-09-30 10:00:31 +02:00
return report as XtraReport ;
}
2016-06-27 01:45:38 +02:00
2026-04-17 17:46:28 +02:00
public override XtraReport CreateJahresberichtReport ( AnnualReportConfigDC config )
2016-06-27 01:45:38 +02:00
{
var report = FindReportImp < JahresReportRO > ( ) ;
2026-04-17 17:46:28 +02:00
report . SetReportDataSource ( JahresReportRO . Create ( config ) ) ;
2016-06-27 01:45:38 +02:00
return report as XtraReport ;
}
2018-10-08 11:57:16 +02:00
2020-09-30 10:00:31 +02:00
public override XtraReport CreateEmployeeDataReport ( long oid )
{
var report = FindReportImp < EmployeeDataRO > ( ) ;
report . SetReportDataSource ( EmployeeDataRO . Create ( MapperFactory . EmployeeDC_Employee . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Employee > ( oid ) ) ) ) ;
return report as XtraReport ;
}
2019-08-09 16:40:41 +02:00
2022-02-22 11:58:42 +01:00
public override XtraReport CreateEmployeeCustomerListReport ( long? employeeOid )
{
var report = FindReportImp < EmployeeCustomerListRO > ( ) ;
report . SetReportDataSource ( EmployeeCustomerListRO . Create ( employeeOid ) ) ;
return report as XtraReport ;
}
2023-01-05 13:56:27 +01:00
public override XtraReport CreateRatingReport ( long ratingOid , long supportConceptOid )
{
var report = FindReportImp < RatingRO > ( ) ;
report . SetReportDataSource ( RatingRO . Create ( ratingOid , supportConceptOid ) ) ;
return report as XtraReport ;
}
2022-02-22 11:58:42 +01:00
2019-08-09 16:40:41 +02:00
public override XtraReport CreateNotizenReport ( long kategorieOid , DateTime start , DateTime end )
{
var report = FindReportImp < NotizenRO > ( ) ;
report . SetReportDataSource ( NotizenRO . Create ( start , end , MapperFactory . NotizenKategorieDC_NotizenKategorie . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < NotizenKategorie > ( kategorieOid ) ) ) ) ;
return report as XtraReport ;
}
2020-10-29 11:20:37 +01:00
public override XtraReport CreateBewertungsstatistikReport ( DateTime ? start , DateTime ? end , SupportConceptDC supportConcept , bool inclZeiterfassung , List < ValueListEntryDC > ziele , List < RatingDC > scZiele )
{
2024-12-17 09:52:43 +01:00
// Ist kein Hilfeplan gesetzt, wird die Tabelle für die Auswertung aller Bewertungen in einem Zeitraum gebaut
if ( supportConcept = = null )
{
var report = new Bewertungsstatistik ( ) ;
report . SetReportDataSource ( BewertungsstatistikRO . Create ( start , end , supportConcept , inclZeiterfassung , null , null ) ) ;
return report as XtraReport ;
}
// Ist der Hilfeplan als Parameter gesetzt, Bericht für einen HP erstellen
else
{
var report = FindReportImp < BewertungsstatistikRO > ( ) ;
report . SetReportDataSource ( BewertungsstatistikRO . Create ( start , end , supportConcept , inclZeiterfassung , ziele , scZiele ) ) ;
return report as XtraReport ;
}
2020-10-29 11:20:37 +01:00
}
2019-08-15 11:06:50 +02:00
public override XtraReport CreateCustomReport ( long employeeOid , String reportName )
{
2019-08-29 15:43:23 +02:00
if ( String . IsNullOrEmpty ( reportName ) )
{
return new XtraReport ( ) ;
}
2019-08-15 11:06:50 +02:00
var report = FindReportImp < QueryRO > ( null , reportName ) ;
if ( report = = null )
{
return new XtraReport ( ) ;
}
return report as XtraReport ;
}
2019-09-02 15:48:37 +02:00
public override XtraReport CreateSBDCharacteristicsReport ( long customerOid )
{
var report = FindReportImp < SBDCharacteristicsRO > ( ) ;
report . SetReportDataSource ( SBDCharacteristicsRO . Create ( MapperFactory . CustomerDC_Customer . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Customer > ( customerOid ) ) ) ) ;
return report as XtraReport ;
}
2020-07-07 16:09:48 +02:00
2023-10-26 00:06:56 +02:00
public override XtraReport CreateSBDEmployeeReport ( long employeeOid )
{
var report = FindReportImp < SBDEmployeeRO > ( ) ;
report . SetReportDataSource ( SBDEmployeeRO . Create ( DAOFactory . GenericDAO . LoadByID < Employee > ( employeeOid ) ) ) ;
return report as XtraReport ;
}
2023-03-14 18:12:07 +01:00
public override XtraReport CreateKilometerauswertung ( long customerOid , List < long > serviceDescriptionOids , DateTime start , DateTime end )
2020-07-07 16:09:48 +02:00
{
var report = FindReportImp < KilometerauswertungsRO > ( ) ;
2023-03-14 18:12:07 +01:00
report . SetReportDataSource ( KilometerauswertungsRO . Create ( MapperFactory . CompactCustomerDC_CustomerCompact . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Customer > ( customerOid ) ) , serviceDescriptionOids , start , end ) ) ;
2020-07-07 16:09:48 +02:00
return report as XtraReport ;
}
2023-03-14 18:12:07 +01:00
public override XtraReport CreateKilometerauswertungForAllCustomers ( List < long > customerOids , List < long > serviceDescriptionOids , DateTime start , DateTime end )
2020-07-07 16:09:48 +02:00
{
var report = FindReportImp < KilometerauswertungsListRO > ( ) ;
2023-03-14 18:12:07 +01:00
report . SetReportDataSource ( KilometerauswertungsListRO . Create ( MapperFactory . CompactCustomerDC_CustomerCompact . MapToNewDCs ( DAOFactory . GenericDAO . LoadByIDs < Customer > ( customerOids ) ) , serviceDescriptionOids , start , end ) ) ;
2020-07-07 16:09:48 +02:00
return report as XtraReport ;
}
2020-09-30 19:23:42 +02:00
2023-03-14 18:12:07 +01:00
public override XtraReport CreateEmployeeKilometerauswertung ( long employeeOid , List < long > serviceDescriptionOids , DateTime start , DateTime end )
2020-09-30 19:23:42 +02:00
{
var report = FindReportImp < EmployeeKilometerauswertungsRO > ( ) ;
2023-09-20 09:20:31 +02:00
report . SetReportDataSource ( EmployeeKilometerauswertungsRO . Create ( MapperFactory . CompactEmployeeDC_Employee . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Employee > ( employeeOid ) ) , serviceDescriptionOids , start , end ) ) ;
2020-09-30 19:23:42 +02:00
2023-09-20 09:20:31 +02:00
return report as XtraReport ;
2020-09-30 19:23:42 +02:00
}
2023-03-14 18:12:07 +01:00
public override XtraReport CreateKilometerauswertungForAllEmployees ( List < long > employeeOids , List < long > serviceDescriptionOids , DateTime start , DateTime end )
2020-09-30 19:23:42 +02:00
{
var report = FindReportImp < EmployeeKilometerauswertungsListRO > ( ) ;
2023-09-20 09:20:31 +02:00
report . SetReportDataSource ( EmployeeKilometerauswertungsListRO . Create ( MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( DAOFactory . GenericDAO . LoadByIDs < Employee > ( employeeOids ) ) , serviceDescriptionOids , start , end ) ) ;
2020-09-30 19:23:42 +02:00
return report as XtraReport ;
}
2020-10-01 13:58:10 +02:00
2021-05-03 15:13:53 +02:00
public override XtraReport CreateAbsenceReport ( DateTime dt , List < long > abs , List < long > empTypes , List < long > teams , List < int > feiertage )
2020-09-30 10:00:31 +02:00
{
var report = FindReportImp < AbsenceRO > ( ) ;
2026-07-14 15:41:32 +02:00
var es = new EmployeeServiceImp ( ) ;
var os = new OperationsServiceImp ( ) ;
2023-09-20 09:20:31 +02:00
var filter = new AbsenceOverviewFilterDC ( ) { AbsenceReasons = abs , EmploymentType = empTypes , Year = dt . Year , Month = dt . Month , Teams = teams } ;
2021-05-03 15:13:53 +02:00
List < CompactTeamDC > compactTeams = new List < CompactTeamDC > ( ) ;
if ( teams ! = null )
{
2023-09-20 09:20:31 +02:00
if ( teams . Count > 0 )
2026-07-14 15:41:32 +02:00
compactTeams = os . GetCertainTeamsById ( teams ) ;
2021-05-03 15:13:53 +02:00
}
2020-10-13 14:35:06 +02:00
2026-07-14 15:41:32 +02:00
report . SetReportDataSource ( AbsenceRO . Create ( es . GetAbsenceOverview ( filter ) , filter , compactTeams , feiertage ) ) ;
2020-09-30 10:00:31 +02:00
return report as XtraReport ;
}
2022-12-29 12:32:07 +01:00
public override XtraReport CreateRosterReport ( long wOid , DateTime dt , List < int > feiertage , int sortingIndex , bool aufsteigend , long creator )
2020-09-30 10:00:31 +02:00
{
2021-10-28 12:07:51 +02:00
if ( TemplateOid . HasValue & & TemplateOid . Value = = - 2 )
{
return CreateRosterReportIst ( wOid , dt ) ;
}
2020-09-30 10:00:31 +02:00
var service = new OperationsServiceImp ( ) ;
var service2 = new CustomerServiceImp ( ) ;
var report = FindReportImp < RosterRO > ( ) ;
2020-10-13 14:35:06 +02:00
2021-04-06 08:06:51 +02:00
var dienstEintraege = service . GetAllDienstEintraegeAsList ( wOid , dt . Year , dt . Month ) ;
var vertretungen = service . GetAllDienstvertretungenAsList ( wOid , dt . Year , dt . Month ) ;
List < long > employeeOids = new List < long > ( ) ;
foreach ( var eintrag in dienstEintraege )
{
if ( ! employeeOids . Contains ( eintrag . EmployeeOid ) )
employeeOids . Add ( eintrag . EmployeeOid ) ;
}
foreach ( var vertretung in vertretungen )
{
if ( ! employeeOids . Contains ( vertretung . EmployeeOid ) )
employeeOids . Add ( vertretung . EmployeeOid ) ;
}
2022-01-05 16:23:38 +01:00
List < EmployeeDC > employee = new List < EmployeeDC > ( ) ;
foreach ( var oid in employeeOids )
employee . Add ( MapperFactory . EmployeeDC_Employee . MapToNewDC ( DAOFactory . GenericDAO . GetByID < Employee > ( oid ) ) ) ;
2021-04-06 08:06:51 +02:00
2022-12-29 12:32:07 +01:00
var creatorEmployee = MapperFactory . EmployeeDC_Employee . MapToNewDC ( DAOFactory . GenericDAO . GetByID < Employee > ( creator ) ) ;
2021-04-06 08:06:51 +02:00
//report.SetReportDataSource(RosterRO.Create(service.GetDienstEintraege(wOid, dt.Year, dt.Month), service.GetAllDienste(), service2.GetAllActiveWohnheimeCompact().First(x => x.WohnheimOid == wOid), dt.Year, dt.Month));
report . SetReportDataSource ( RosterRO . CreateNew ( dienstEintraege , vertretungen , employee ,
2022-12-29 12:32:07 +01:00
service . GetAllDienste ( wOid ) , service2 . GetAllActiveWohnheimeCompact ( ) . First ( x = > x . WohnheimOid = = wOid ) , dt . Year , dt . Month , feiertage , sortingIndex , aufsteigend , creatorEmployee ) ) ;
2020-09-30 10:00:31 +02:00
return report as XtraReport ;
}
2021-09-22 15:34:38 +02:00
public override XtraReport CreateRosterReportIst ( long wOid , DateTime dt )
{
var opertionsService = new OperationsServiceImp ( ) ;
var customerService = new CustomerServiceImp ( ) ;
var employeeService = new EmployeeServiceImp ( ) ;
2023-09-20 09:20:31 +02:00
2021-09-22 15:34:38 +02:00
var report = FindReportImp < RosterIstRO > ( ) ;
var dienstEintraege = opertionsService . GetAllDienstEintraegeAsList ( wOid , dt . Year , dt . Month ) ;
var vertretungen = opertionsService . GetAllDienstvertretungenAsList ( wOid , dt . Year , dt . Month ) ;
List < long > employeeOids = new List < long > ( ) ;
foreach ( var eintrag in dienstEintraege )
{
if ( ! employeeOids . Contains ( eintrag . EmployeeOid ) )
employeeOids . Add ( eintrag . EmployeeOid ) ;
}
foreach ( var vertretung in vertretungen )
{
if ( ! employeeOids . Contains ( vertretung . EmployeeOid ) )
employeeOids . Add ( vertretung . EmployeeOid ) ;
}
2022-01-05 16:23:38 +01:00
List < EmployeeDC > employee = new List < EmployeeDC > ( ) ;
foreach ( var oid in employeeOids )
employee . Add ( MapperFactory . EmployeeDC_Employee . MapToNewDC ( DAOFactory . GenericDAO . GetByID < Employee > ( oid ) ) ) ;
2021-09-22 15:34:38 +02:00
List < AbsenceTimeDC > absences = employeeService . GetMultipleEmployeeAbsenceTimesForMonth ( dt . Year , dt . Month , employeeOids ) ;
List < FeiertagDC > feiertageDCs = opertionsService . ErstelleDefaultFeiertage ( dt . Year ) . Where ( f = > f . Datum . Month = = dt . Month ) . ToList ( ) ;
2021-10-12 16:00:17 +02:00
Dictionary < long? , decimal > stundenBeiAbwesenheit = new Dictionary < long? , decimal > ( ) ;
2022-01-05 16:23:38 +01:00
foreach ( var emp in employee ) // Irgendwo hier drin Fehler
2021-10-12 16:00:17 +02:00
{
ContractDC currentContract = null ;
foreach ( var c in emp . Contracts )
{
if ( ! c . ContractEndDate . HasValue )
{
if ( dt > = c . EntryDate )
{
currentContract = c ;
break ;
}
}
else
{
if ( dt > = c . EntryDate & & dt < = c . ContractEndDate )
{
currentContract = c ;
break ;
}
}
}
2026-06-10 08:30:18 +02:00
2021-10-12 16:00:17 +02:00
if ( currentContract ! = null )
2022-01-05 16:23:38 +01:00
{
2026-06-09 16:50:59 +02:00
if ( ( currentContract . WeeklyTotalHours = = null & & currentContract . MonthlyTotalHours = = null ) | | currentContract . WeeklyDays = = null )
2022-01-05 16:23:38 +01:00
continue ;
2026-06-09 16:50:59 +02:00
else
{
if ( currentContract . WeeklyTotalHours ! = null )
stundenBeiAbwesenheit . Add ( emp . EmployeeOid , currentContract . WeeklyTotalHours . Value / currentContract . WeeklyDays ) ;
else if ( currentContract . MonthlyTotalHours ! = null )
stundenBeiAbwesenheit . Add ( emp . EmployeeOid , currentContract . MonthlyTotalHours . Value / DateTime . DaysInMonth ( dt . Year , dt . Month ) ) ;
}
2022-01-05 16:23:38 +01:00
}
2021-10-12 16:00:17 +02:00
}
2021-09-22 15:34:38 +02:00
2023-09-20 09:20:31 +02:00
report . SetReportDataSource ( RosterIstRO . Create ( dienstEintraege , vertretungen , employee , opertionsService . GetAllDienste ( wOid ) ,
2021-10-12 16:00:17 +02:00
customerService . GetAllActiveWohnheimeCompact ( ) . First ( x = > x . WohnheimOid = = wOid ) , dt . Year , dt . Month , feiertageDCs , absences , stundenBeiAbwesenheit ) ) ;
2021-09-22 15:34:38 +02:00
return report as XtraReport ;
}
2021-01-13 11:21:51 +01:00
public override XtraReport CreateVorlagenReport ( long template , List < long > objectOids , long table )
{
string rtf = "" ;
var templateDC = MapperFactory . DokumentvorlageDC_Dokumentvorlage . MapToNewDC ( DAOFactory . GenericDAO . GetByID < Dokumentvorlage > ( template ) ) ;
OperationsServiceImp operations = new OperationsServiceImp ( ) ;
XtraReport mainReport = null ;
2023-09-20 09:20:31 +02:00
2021-01-13 11:21:51 +01:00
foreach ( var oid in objectOids )
{
string text = operations . ReplacePlaceholdersInTemplate ( templateDC , oid , table ) ;
2023-09-20 09:20:31 +02:00
2025-04-17 01:11:16 +02:00
//++++++++++++++++++++++
RichEditDocumentServer server = new RichEditDocumentServer ( ) ;
using ( var stream = new MemoryStream ( Encoding . Default . GetBytes ( text ) ) )
{
server . LoadDocument ( stream ) ;
}
var ranges = server . Document . FindAll ( DevExpress . Office . Characters . PageBreak . ToString ( ) , DevExpress . XtraRichEdit . API . Native . SearchOptions . None ) ;
var dp = server . Document . Paragraphs [ 0 ] . Range . Start ;
List < VorlageRO > collection = new List < VorlageRO > ( ) ;
foreach ( var dr in ranges )
{
var tmpRange = server . Document . CreateRange ( dp , dr . Start . ToInt ( ) - dp . ToInt ( ) ) ;
collection . Add ( new VorlageRO { RTFText = server . Document . GetRtfText ( tmpRange ) } ) ;
dp = dr . End ;
}
var tmpRange2 = server . Document . CreateRange ( dp , server . Document . Paragraphs [ server . Document . Paragraphs . Count - 1 ] . Range . End . ToInt ( ) - dp . ToInt ( ) ) ;
collection . Add ( new VorlageRO { RTFText = server . Document . GetRtfText ( tmpRange2 ) } ) ;
//var report = new XtraReport();
//report.DataSource = collection;
//++++++++++++++++++++++
//var report = FindReportImp<VorlageRO>();
var report = new VorlageReport ( ) ;
report . SetReportDataSource ( collection ) ;
2021-01-13 11:21:51 +01:00
( ( XtraReport ) report ) . CreateDocument ( ) ;
if ( mainReport = = null )
{
mainReport = ( XtraReport ) report ;
}
else
{
if ( ! text . Equals ( "" ) )
mainReport . Pages . AddRange ( ( ( XtraReport ) report ) . Pages ) ;
}
}
return mainReport ;
}
2021-08-27 07:34:43 +02:00
public override XtraReport CreateAbwesenheitsPrintReport ( List < long > oids , string titel )
{
EmployeeServiceImp employeeService = new EmployeeServiceImp ( ) ;
List < AbwesenheitsInformationPrintDC > list = employeeService . GetAbwesenheitsInformationPrints ( oids ) ;
var report = FindReportImp < AbwesenheitsPrintRO > ( ) ;
report . SetReportDataSource ( AbwesenheitsPrintRO . Create ( list , titel ) ) ;
( ( XtraReport ) report ) . CreateDocument ( ) ;
return ( XtraReport ) report ;
}
2023-01-26 00:31:27 +01:00
public override XtraReport CreateKassenbelegReport ( BargeldtransaktionDC transaktion , long objectOid , TableID objectTid )
{
IBeWoReport < KassenbelegRO > report = FindReportImp < KassenbelegRO > ( ) ;
var beguenstigter = LoadToBargeldkasseRelatedObject ( objectTid , objectOid ) ;
report . SetReportDataSource ( KassenbelegRO . Create ( transaktion , beguenstigter ) ) ;
return report as XtraReport ;
}
2023-07-14 00:32:16 +02:00
public override XtraReport CreateVertretungsPlanungReport ( DateTime start , int ansicht )
{
//IBeWoReport<KassenbelegRO> report = FindReportImp<KassenbelegRO>();
//var beguenstigter = LoadToBargeldkasseRelatedObject(objectTid, objectOid);
//report.SetReportDataSource(KassenbelegRO.Create(transaktion, beguenstigter));
//return report as XtraReport;
return new XtraReport ( ) ;
}
2023-01-26 00:31:27 +01:00
private BeWoEntityBase LoadToBargeldkasseRelatedObject ( TableID pObjectTid , long pObjectOid )
{
switch ( pObjectTid )
{
case TableID . Customer :
return DAOFactory . GenericDAO . LoadByID < Customer > ( pObjectOid ) ;
default :
return null ;
}
}
2023-08-21 18:34:18 +02:00
public override XtraReport CreateValidationMessageListReport ( DateTime startDate , DateTime endDate )
{
IBeWoReport < ValidationMessageListRO > report = FindReportImp < ValidationMessageListRO > ( ) ;
report . SetReportDataSource ( ValidationMessageListRO . Create ( startDate , endDate , DAOFactory . SearchDAO . GetValidationMessagesForMonth ( startDate , endDate ) . ToList ( ) ) ) ;
2023-09-20 09:20:31 +02:00
2023-08-21 18:34:18 +02:00
2023-09-13 01:39:27 +02:00
return report as XtraReport ;
}
2023-09-18 17:50:16 +02:00
public override XtraReport CreateInvoiceListReport ( List < long > oids )
{
2023-11-15 00:52:39 +01:00
XtraReport master = null ;
2023-09-18 17:50:16 +02:00
var ibList = DAOFactory . GenericDAO . LoadByIDs < InvoiceBase > ( oids ) ;
foreach ( var ib in ibList )
{
XtraReport report = null ;
if ( ib . Type = = InvoiceType . Service )
{
report = CreateServiceInvoiceReport ( null , ib . Oid ) ;
}
else if ( ib . Type = = InvoiceType . Settlement )
{
report = CreateSettlementReport ( null , ib . Oid ) ;
}
else
{
report = CreateCustomerInvoiceReport ( ib . Oid . Value ) ;
}
if ( report ! = null )
{
2023-11-15 00:52:39 +01:00
report . Watermark . PageRange = "1" ;
2023-11-02 14:47:40 +01:00
if ( report . Pages . Count = = 0 )
{
report . CreateDocument ( ) ;
}
2023-11-15 00:52:39 +01:00
if ( master = = null )
2023-09-18 17:50:16 +02:00
{
2023-11-15 00:52:39 +01:00
master = report ;
}
else
{
//master.Pages.AddRange(report.Pages);
XRWatermark wm = new XRWatermark ( ) ;
2023-11-08 00:34:17 +01:00
2023-11-15 00:52:39 +01:00
wm . CopyFrom ( report . Watermark ) ;
bool firstpage = true ;
foreach ( var item in report . Pages )
{
var page2add = item as DevExpress . XtraPrinting . Page ;
if ( page2add ! = null )
2023-11-08 00:34:17 +01:00
{
2023-11-15 00:52:39 +01:00
master . Pages . Add ( page2add ) ;
if ( wm ! = null & & firstpage )
{
var newpage = master . Pages [ master . Pages . Count - 1 ] ;
newpage . AssignWatermark ( wm ) ;
//newpage.AssignWatermark(page2add.Watermark);
}
2023-11-08 00:34:17 +01:00
}
2023-11-15 00:52:39 +01:00
firstpage = false ;
2023-11-08 00:34:17 +01:00
}
2023-09-18 17:50:16 +02:00
}
2023-09-20 09:20:31 +02:00
2023-09-18 17:50:16 +02:00
}
}
2025-01-07 15:55:17 +01:00
if ( master = = null )
{
master = new XtraReport ( ) ;
}
2023-09-18 17:50:16 +02:00
return master ;
}
2023-09-20 09:20:31 +02:00
2023-09-18 17:50:16 +02:00
2023-09-13 01:39:27 +02:00
public override XtraReport CreateCustomerListReport ( List < long > oids )
2023-09-20 09:20:31 +02:00
{
2023-10-24 10:35:26 +02:00
var queryReport = FindReportImp < QueryRO > ( null , "Klienten" ) ;
var customers = DAOFactory . GenericDAO . LoadByIDs < Customer > ( oids ) ;
2023-09-13 01:39:27 +02:00
2023-10-24 10:35:26 +02:00
DataTable table = new DataTable ( ) ;
string [ ] spalten = new string [ ] { "Name" , "Geburtsdatum" , "Anschrift" , "Telefon" , "Mobil" , "Mail" ,
"Betreuung begonnen" , "Betreuung beendet" } ;
for ( int i = 0 ; i < spalten . Length ; i + + )
table . Columns . Add ( spalten [ i ] , typeof ( string ) ) ;
for ( int i = 0 ; i < customers . Count ; i + + )
{
DataRow row = table . NewRow ( ) ;
Customer customer = customers [ i ] ;
Person person = customer . Person ;
if ( person ! = null )
{
row [ 0 ] = person . LastNameFirstName ;
row [ 1 ] = String . Format ( "{0:dd.MM.yyyy}" , person . DateOfBirth ) ;
var address = person . Address ;
if ( address ! = null )
{
row [ 2 ] = address . Street + ", " + address . PostalCode + " " + address . Town ;
}
var contacts = person . Contacts ;
if ( contacts ! = null )
{
row [ 3 ] = contacts . FirstOrDefault ( c = > c . Type = = BS . Shared . ContactType . business_Phone ) ? . Value ;
row [ 4 ] = contacts . FirstOrDefault ( c = > c . Type = = BS . Shared . ContactType . business_MobilePhone ) ? . Value ;
row [ 5 ] = contacts . FirstOrDefault ( c = > c . Type = = BS . Shared . ContactType . business_Mail ) ? . Value ;
}
}
row [ 6 ] = String . Format ( "{0:dd.MM.yyyy}" , customer . AssistanceBegin ) ;
row [ 7 ] = String . Format ( "{0:dd.MM.yyyy}" , customer . TerminationDate ) ;
table . Rows . Add ( row ) ;
}
2026-04-28 10:26:01 +02:00
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Klienten" } , table ) ;
queryReportObject . Name = "Klienten" ;
2023-10-24 10:35:26 +02:00
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
2023-08-21 18:34:18 +02:00
}
2023-09-20 09:20:31 +02:00
2023-10-10 15:45:38 +02:00
public override XtraReport CreateSupportConceptListReport ( List < long > oids )
{
var queryReport = FindReportImp < QueryRO > ( null , "Hilfeplaene" ) ;
var helper = PluginLoader . FindClass < ExportAndPrintHelper > ( ) ;
string [ ] lHeaderCaption = helper . PrepareHeaderArrayForSupportConceptExport ( ) ;
string [ ] [ ] lContent = helper . PrepareContentArrayForSupportConceptExport ( oids . ToArray ( ) ) ;
DataTable table = new DataTable ( ) ;
2023-10-10 15:56:59 +02:00
int columnNumber = lHeaderCaption . Count ( ) ;
2023-10-10 15:45:38 +02:00
for ( int i = 0 ; i < columnNumber ; i + + )
table . Columns . Add ( lHeaderCaption [ i ] , typeof ( string ) ) ;
int rowNumber = lContent . GetLength ( 0 ) ;
for ( int i = 0 ; i < rowNumber ; i + + )
{
DataRow row = table . NewRow ( ) ;
for ( int j = 0 ; j < columnNumber ; j + + )
{
row [ j ] = lContent [ i ] [ j ] ;
}
table . Rows . Add ( row ) ;
}
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Hilfepläne" } , table ) ;
queryReportObject . Name = "Hilfepläne" ;
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
}
2023-10-19 15:59:31 +02:00
public override XtraReport CreateWohnheimListReport ( List < long > oids )
{
var queryReport = FindReportImp < QueryRO > ( null , "Wohnprojekte" ) ;
var wohnprojekte = DAOFactory . GenericDAO . LoadByIDs < Wohnheim > ( oids ) ;
DataTable table = new DataTable ( ) ;
string [ ] spalten = new string [ ] { "Wohnprojekt" , "Straße" , "PLZ" , "Ort" , "Bemerkung" } ;
for ( int i = 0 ; i < spalten . Length ; i + + )
table . Columns . Add ( spalten [ i ] , typeof ( string ) ) ;
for ( int i = 0 ; i < wohnprojekte . Count ; i + + )
{
DataRow row = table . NewRow ( ) ;
Wohnheim wohnprojekt = wohnprojekte [ i ] ;
row [ 0 ] = wohnprojekt . WohnheimName ;
row [ 1 ] = wohnprojekt . Strasse ;
row [ 2 ] = wohnprojekt . PLZ ;
row [ 3 ] = wohnprojekt . Ort ;
row [ 3 ] = wohnprojekt . Bemerkung ;
table . Rows . Add ( row ) ;
}
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Wohnprojekte" } , table ) ;
queryReportObject . Name = "Wohnprojekte" ;
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
}
2023-10-18 17:50:40 +02:00
public override XtraReport CreateOrganisationListReport ( List < long > oids )
{
var queryReport = FindReportImp < QueryRO > ( null , "Organisationen" ) ;
var organisations = DAOFactory . GenericDAO . LoadByIDs < Organisation > ( oids ) ;
DataTable table = new DataTable ( ) ;
string [ ] spalten = new string [ ] { "Organisation" , "Straße" , "PLZ" , "Ort" , "Telefon" , "Fax" , "Mail" , "Ansprechpartner" } ;
for ( int i = 0 ; i < spalten . Length ; i + + )
table . Columns . Add ( spalten [ i ] , typeof ( string ) ) ;
for ( int i = 0 ; i < organisations . Count ; i + + )
{
DataRow row = table . NewRow ( ) ;
Organisation organisation = organisations [ i ] ;
row [ 0 ] = organisation . Name ;
var address = organisation . Address ;
if ( address ! = null )
{
row [ 1 ] = address . Street ;
row [ 2 ] = address . PostalCode ;
row [ 3 ] = address . Town ;
}
var contacts = organisation . Contacts ;
if ( contacts ! = null )
{
row [ 4 ] = contacts . FirstOrDefault ( c = > c . Type = = BS . Shared . ContactType . business_Phone ) ? . Value ;
row [ 5 ] = contacts . FirstOrDefault ( c = > c . Type = = BS . Shared . ContactType . business_Fax ) ? . Value ;
row [ 6 ] = contacts . FirstOrDefault ( c = > c . Type = = BS . Shared . ContactType . business_Mail ) ? . Value ;
row [ 7 ] = contacts . FirstOrDefault ( c = > c . Type = = BS . Shared . ContactType . ContactPerson ) ? . Value ;
}
table . Rows . Add ( row ) ;
}
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Organisationen" } , table ) ;
queryReportObject . Name = "Organisationen" ;
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
}
2023-09-15 15:02:43 +02:00
public override XtraReport CreatePersonListReport ( List < long > oids )
{
2023-12-11 15:00:04 +01:00
var queryReport = FindReportImp < QueryRO > ( null , "Personen" ) ;
var helper = PluginLoader . FindClass < ExportAndPrintHelper > ( ) ;
2023-09-15 15:02:43 +02:00
2023-12-11 15:00:04 +01:00
string [ ] lHeaderCaption = helper . PrepareHeaderArrayForPersonExport ( ) ;
string [ ] [ ] lContent = helper . PrepareContentArrayForPersonExport ( oids . ToArray ( ) ) ;
DataTable table = new DataTable ( ) ;
int columnNumber = lHeaderCaption . Count ( ) ;
for ( int i = 0 ; i < columnNumber ; i + + )
table . Columns . Add ( lHeaderCaption [ i ] , typeof ( string ) ) ;
int rowNumber = lContent . GetLength ( 0 ) ;
for ( int i = 0 ; i < rowNumber ; i + + )
{
DataRow row = table . NewRow ( ) ;
for ( int j = 0 ; j < columnNumber ; j + + )
{
row [ j ] = lContent [ i ] [ j ] ;
}
table . Rows . Add ( row ) ;
}
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Personen" } , table ) ;
queryReportObject . Name = "Personen" ;
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
2023-08-21 18:34:18 +02:00
}
2023-09-19 15:46:19 +02:00
2023-09-20 16:51:35 +02:00
public override XtraReport CreateUserListReport ( List < long > oids )
2023-09-18 14:42:54 +02:00
{
var queryReport = FindReportImp < QueryRO > ( null , "Benutzergruppen" ) ;
2023-09-22 06:51:38 +02:00
#region alt
//var lUser = DAOFactory.GenericDAO.LoadByIDs<ApplicationUser>(oids);
2023-09-18 14:42:54 +02:00
2023-09-22 06:51:38 +02:00
//string[] lHeaderCaption = {
// "Mitarbeiter", // 0
// "Login", // 1
// "zugeordnete Benutzergruppen", // 2
// };
2023-09-18 14:42:54 +02:00
2023-09-22 06:51:38 +02:00
//string[][] lContent = new string[lUser.Count][];
2023-09-18 14:42:54 +02:00
2023-09-22 06:51:38 +02:00
//for (int iRowCount = 0; iRowCount < lUser.Count; iRowCount++)
//{
// lContent[iRowCount] = new string[lHeaderCaption.Count()];
// if (lUser[iRowCount].Employee != null)
// lContent[iRowCount][0] = lUser[iRowCount].Employee.Person.FirstNameLastName;
// else
// lContent[iRowCount][0] = string.Empty;
// if (lUser[iRowCount].LoginName != null)
// lContent[iRowCount][1] = lUser[iRowCount].LoginName;
// else
// lContent[iRowCount][1] = string.Empty;
// if (lUser[iRowCount].UserGroups != null && lUser[iRowCount].UserGroups.Count > 0)
// lContent[iRowCount][2] = string.Join(", ", lUser[iRowCount].UserGroups.Select(
// r => r.Name).OrderBy(s => s).ToArray());
// else
// lContent[iRowCount][2] = string.Empty;
//}
#endregion
2023-09-18 14:42:54 +02:00
2023-09-27 13:45:05 +02:00
var helper = PluginLoader . FindClass < ExportAndPrintHelper > ( ) ;
2023-09-18 14:42:54 +02:00
2023-09-22 06:51:38 +02:00
string [ ] lHeaderCaption = helper . PrepareHeaderArrayForUserExport ( ) ;
string [ ] [ ] lContent = helper . PrepareContentArrayForUserExport ( oids . ToArray ( ) ) ;
2023-09-18 14:42:54 +02:00
2023-09-20 16:51:35 +02:00
// Zweidimensionales Array zu DataTable konvertieren
DataTable table = new DataTable ( ) ;
int columnNumber = 3 ;
for ( int i = 0 ; i < columnNumber ; i + + )
table . Columns . Add ( lHeaderCaption [ i ] , typeof ( string ) ) ;
int rowNumber = lContent . GetLength ( 0 ) ;
for ( int i = 0 ; i < rowNumber ; i + + )
{
DataRow row = table . NewRow ( ) ;
for ( int j = 0 ; j < columnNumber ; j + + )
{
row [ j ] = lContent [ i ] [ j ] ;
}
table . Rows . Add ( row ) ;
2023-09-18 14:42:54 +02:00
}
2023-09-20 16:51:35 +02:00
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Benutzer" } , table ) ;
queryReportObject . Name = "Benutzer" ;
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
}
2023-10-18 17:50:40 +02:00
2023-09-19 15:46:19 +02:00
public override XtraReport CreateEmployeeListReport ( List < long > oids )
{
2023-10-23 16:12:22 +02:00
var queryReport = FindReportImp < QueryRO > ( null , "Mitarbeiter" ) ;
2025-12-22 10:13:07 +01:00
var helper = PluginLoader . FindClass < ExportAndPrintHelper > ( ) ;
string [ ] lHeaderCaption = helper . PrepareHeaderArrayForEmployeeExport ( ) ;
string [ ] [ ] lContent = helper . PrepareContentArrayForEmployeeExport ( oids . ToArray ( ) ) ;
2023-09-19 15:46:19 +02:00
2023-10-23 16:12:22 +02:00
DataTable table = new DataTable ( ) ;
2025-12-22 10:13:07 +01:00
int columnNumber = lHeaderCaption . Count ( ) ;
// Spalten nur bis zur 10., da sonst der Druck nicht lesbar ist und weil in den ersten 9 die Kerninfos stehen
for ( int i = 0 ; i < 10 ; i + + )
table . Columns . Add ( lHeaderCaption [ i ] , typeof ( string ) ) ;
2023-10-23 16:12:22 +02:00
2025-12-22 10:13:07 +01:00
int rowNumber = lContent . GetLength ( 0 ) ;
for ( int i = 0 ; i < rowNumber ; i + + )
2023-10-23 16:12:22 +02:00
{
DataRow row = table . NewRow ( ) ;
2025-12-22 10:13:07 +01:00
// Spalten nur bis zur 10., da sonst der Druck nicht lesbar ist und weil in den ersten 9 die Kerninfos stehen
for ( int j = 0 ; j < 10 ; j + + )
2023-10-23 16:12:22 +02:00
{
2025-12-22 10:13:07 +01:00
row [ j ] = lContent [ i ] [ j ] ;
2023-10-23 16:12:22 +02:00
}
table . Rows . Add ( row ) ;
}
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Mitarbeiter" } , table ) ;
queryReportObject . Name = "Mitarbeiter" ;
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
2023-09-19 15:46:19 +02:00
}
2024-06-12 16:58:10 +02:00
public override XtraReport CreateInvoiceOverviewReport ( List < long > oids )
{
var queryReport = FindReportImp < QueryRO > ( null , "Invoices" ) ;
var invoices = MapperFactory . InvoiceBaseDC_InvoiceBase . MapToNewDCs ( DAOFactory . GenericDAO . LoadByIDs < InvoiceBase > ( oids ) ) ;
DataTable table = new DataTable ( ) ;
string [ ] spalten = new string [ ] { "Art der Rechnung" , "Klient/in" , "Zeitraum" , "Nummer" , "Datum" , "Empfänger" , "Betrag" , "Bemerkung" ,
"Geprüft" , "Versendet" , "Exportiert" , "Bezahlt" , "Teilzahlung" } ;
for ( int i = 0 ; i < spalten . Length ; i + + )
table . Columns . Add ( spalten [ i ] , typeof ( string ) ) ;
for ( int i = 0 ; i < invoices . Count ; i + + )
{
DataRow row = table . NewRow ( ) ;
InvoiceBaseDC invoice = invoices [ i ] ;
row [ 0 ] = invoice . InvoiceTypeText ;
row [ 1 ] = invoice . CustomerLastName + ", " + invoice . CustomerFirstName ;
row [ 2 ] = invoice . PeriodString ;
row [ 3 ] = invoice . InvoiceNumber ;
row [ 4 ] = string . Format ( "{0:dd.MM.yyyy}" , invoice . InvoiceDate ) ;
string recipient = invoice . RecipientOrganisation ;
if ( ! string . IsNullOrEmpty ( recipient ) & & ( ! string . IsNullOrEmpty ( invoice . RecipientPersonFirstName ) | | ! string . IsNullOrEmpty ( invoice . RecipientPersonLastName ) ) )
{
recipient + = " - " ;
}
recipient + = invoice . RecipientPersonFirstName + " " + invoice . RecipientPersonLastName ;
row [ 5 ] = recipient ;
row [ 6 ] = string . Format ( "{0:0.00}" , invoice . TotalAmount ) ;
row [ 7 ] = invoice . Notice ;
row [ 8 ] = invoice . IsReviewed ? "Ja" : "" ;
row [ 9 ] = invoice . IsSent ? "Ja" : "" ;
row [ 10 ] = invoice . IsExported ? "Ja" : "" ;
row [ 11 ] = invoice . IsPaid ? "Ja" : "" ;
row [ 12 ] = invoice . PartialPayment ;
table . Rows . Add ( row ) ;
}
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Rechnungen" } , table ) ;
queryReportObject . Name = "Rechnungen" ;
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
}
2023-10-23 15:05:46 +02:00
public override XtraReport CreateTeamListReport ( List < long > oids )
{
var queryReport = FindReportImp < QueryRO > ( null , "Teams" ) ;
var teams = DAOFactory . GenericDAO . LoadByIDs < Team > ( oids ) ;
DataTable table = new DataTable ( ) ;
string [ ] spalten = new string [ ] { "Name" , "Leitung" , "Notiz" , "Mitglieder" } ;
for ( int i = 0 ; i < spalten . Length ; i + + )
table . Columns . Add ( spalten [ i ] , typeof ( string ) ) ;
for ( int i = 0 ; i < teams . Count ; i + + )
{
DataRow row = table . NewRow ( ) ;
Team team = teams [ i ] ;
row [ 0 ] = team . Name ;
row [ 1 ] = team . Leader ;
row [ 2 ] = team . Notice ;
String mitglieder = "" ;
IOrderedEnumerable < Employee > employees = team . MemberList . OrderBy ( m = > m . Person . LastName + ", " + m . Person . FirstName ) ;
foreach ( Employee employee in employees )
{
if ( employee . Person ! = null )
{
mitglieder + = employee . Person . FirstName + " " + employee . Person . LastName + ", " ;
}
}
if ( mitglieder . Length > 2 )
{
row [ 3 ] = mitglieder . Substring ( 0 , mitglieder . Length - 2 ) ;
}
table . Rows . Add ( row ) ;
}
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Teams" } , table ) ;
queryReportObject . Name = "Teams" ;
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
}
2023-09-18 14:42:54 +02:00
public override XtraReport CreateUserGroupListReport ( List < long > oids )
{
var queryReport = FindReportImp < QueryRO > ( null , "Benutzergruppen" ) ;
2023-09-27 13:45:05 +02:00
var helper = PluginLoader . FindClass < ExportAndPrintHelper > ( ) ;
2023-09-18 14:42:54 +02:00
2023-09-22 06:51:38 +02:00
//var lUserGroups = DAOFactory.GenericDAO.LoadByIDs<UserGroup>(oids);
2023-09-18 14:42:54 +02:00
2023-09-22 06:51:38 +02:00
string [ ] lHeaderCaption = helper . PrepareHeaderArrayForUserGroupExport ( ) ;
string [ ] [ ] lContent = helper . PrepareContentArrayForUserGroupExport ( oids . ToArray ( ) ) ;
2023-09-18 14:42:54 +02:00
2023-09-22 06:51:38 +02:00
#region alt
//for (int iRowCount = 0; iRowCount < lUserGroups.Count; iRowCount++)
//{
// lContent[iRowCount] = new string[lHeaderCaption.Count()];
// if (lUserGroups[iRowCount].Name != null)
// lContent[iRowCount][0] = lUserGroups[iRowCount].Name;
// else
// lContent[iRowCount][0] = string.Empty;
// if (lUserGroups[iRowCount].Description != null)
// lContent[iRowCount][1] = lUserGroups[iRowCount].Description;
// else
// lContent[iRowCount][1] = string.Empty;
// if (lUserGroups[iRowCount].Rights != null && lUserGroups[iRowCount].Rights.Count > 0)
// lContent[iRowCount][2] = string.Join(", ", lUserGroups[iRowCount].Rights.Select(
// r => EnumTranslations.UserRightType2Translations[r.RightType]).OrderBy(s => s).ToArray());
// else
// lContent[iRowCount][2] = string.Empty;
//}
#endregion
2023-09-18 14:42:54 +02:00
DataTable table = new DataTable ( ) ;
int columnNumber = 3 ;
for ( int i = 0 ; i < columnNumber ; i + + )
table . Columns . Add ( lHeaderCaption [ i ] , typeof ( string ) ) ;
int rowNumber = lContent . GetLength ( 0 ) ;
for ( int i = 0 ; i < rowNumber ; i + + )
{
DataRow row = table . NewRow ( ) ;
for ( int j = 0 ; j < columnNumber ; j + + )
{
row [ j ] = lContent [ i ] [ j ] ;
}
table . Rows . Add ( row ) ;
}
var queryReportObject = QueryRO . Create ( new Query ( ) { Title = "Benutzergruppen" } , table ) ;
queryReportObject . Name = "Benutzergruppen" ;
queryReport . SetReportDataSource ( queryReportObject ) ;
return queryReport as XtraReport ;
}
2024-05-13 17:56:09 +02:00
public XtraReport CreateServiceRecordChangesReport ( DateTime start , DateTime end )
{
var ro = ServiceRecordChangesAfterInvoiceDateRO . Create ( start , end ) ;
var report = FindReportImp < ServiceRecordChangesAfterInvoiceDateRO > ( ) ;
report . SetReportDataSource ( ro ) ;
return report as XtraReport ;
}
2024-11-20 15:17:13 +01:00
public override XtraReport CreateGkvAbrechnungReport ( GkvAbrechnungReportRequest req )
{
var os = new OperationsServiceImp ( ) ;
2024-11-26 16:19:39 +01:00
var mandator = os . GetMandatorEntity ( ) ;
2024-11-20 15:17:13 +01:00
2024-11-26 14:28:33 +01:00
var employee = UserRightHelper . GetLoggedInUser ( ) . Employee ;
2024-11-20 15:17:13 +01:00
var gkvAbrechnung = DAOFactory . GenericDAO . LoadByID < GkvAbrechnung > ( req . Oid ) ;
var gkvAbrechnungDC = MapperFactory . GkvAbrechnungDC_GkvAbrechnung . MapToNewDC ( gkvAbrechnung ) ;
2024-12-09 11:37:20 +01:00
var invoicebase = gkvAbrechnungDC . InvoiceBases . First ( ) ;
var customer_oid = invoicebase . CustomerOid ;
var plugin = PluginLoader . FindClass < AccountingService > ( ) ;
var address_information = plugin . GetAddressInformation ( customer_oid ) ;
var ro = GkvAbrechnungRO . Create ( gkvAbrechnungDC , mandator , employee , address_information ) ;
2024-11-20 15:17:13 +01:00
var report = FindReportImp < GkvAbrechnungRO > ( ) ;
report . SetReportDataSource ( ro ) ;
2024-12-04 18:40:49 +01:00
var xtra = report as XtraReport ;
if ( req . AddUrbelege )
{
AddQuittierungsbelegToReport ( xtra , gkvAbrechnung ) ;
}
return report as XtraReport ;
}
private void AddQuittierungsbelegToReport ( XtraReport xtra , GkvAbrechnung gkvAbrechnung )
{
xtra . CreateDocument ( ) ;
var dict = new Dictionary < long , HashSet < Point > > ( ) ;
foreach ( var invb in gkvAbrechnung . InvoiceBases )
{
var coid = invb . CostBearer2SupportConcept . SupportConcept . Customer . Oid . Value ;
if ( ! dict . ContainsKey ( coid ) )
dict . Add ( coid , new HashSet < Point > ( ) ) ;
var points = dict [ coid ] ;
var start = invb . AccountingPeriodStart . Value ;
var end = invb . AccountingPeriodEnd . Value ;
var start_1 = start . AddMonths ( 1 ) ;
var runner = new DateTime ( start_1 . Year , start_1 . Month , 1 ) ;
points . Add ( new Point ( start . Year , start . Month ) ) ;
while ( runner < = end )
{
points . Add ( new Point ( runner . Year , runner . Month ) ) ;
runner = runner . AddMonths ( 1 ) ;
}
}
foreach ( var kv in dict )
{
var coid = kv . Key ;
foreach ( var point in kv . Value . OrderBy ( x = > x . X ) . ThenBy ( x = > x . Y ) )
{
var year = point . X ;
var month = point . Y ;
var quittierung = CreateServiceOverviewSingleCustomerReport ( coid , month , year , 0 , 0 , null ) ;
quittierung . CreateDocument ( ) ;
xtra . Pages . AddRange ( quittierung . Pages ) ;
}
}
2024-11-20 15:17:13 +01:00
}
2020-09-15 13:14:43 +02:00
}
2016-06-27 01:45:38 +02:00
}