Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -151,7 +151,11 @@
|
||||
<Compile Include="ViewModel\AiConfigVM.cs" />
|
||||
<Compile Include="ViewModel\AiPromptbausteinFolderVM.cs" />
|
||||
<Compile Include="ViewModel\AiPromptbausteinPromptVM.cs" />
|
||||
<Compile Include="ViewModel\AiPromptbausteinRoutineStepVM.cs" />
|
||||
<Compile Include="ViewModel\AiPromptbausteinRoutineVM.cs" />
|
||||
<Compile Include="ViewModel\AiUserSettingVM.cs" />
|
||||
<Compile Include="ViewModel\ListViewModel\AiPromptbausteinRoutineListVM.cs" />
|
||||
<Compile Include="ViewModel\ListViewModel\AiPromptbausteinRoutineStepListVM.cs" />
|
||||
<Compile Include="ViewModel\ListViewModel\AiPromptbausteinPromptListVM.cs" />
|
||||
<Compile Include="ViewModel\ListViewModel\AiPromptbausteinFolderListVM.cs" />
|
||||
<Compile Include="ViewModel\ListViewModel\TextModuleListVM.cs" />
|
||||
@@ -199,9 +203,13 @@
|
||||
<Compile Include="View\Detail\AI\AiConfigView.xaml.cs">
|
||||
<DependentUpon>AiConfigView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\Detail\Report\DatenbereinigungView.xaml.cs">
|
||||
<DependentUpon>DatenbereinigungView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\Document\RtfEditView.xaml.cs">
|
||||
<DependentUpon>RtfEditView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\Navigation\Filter\ValueListFilter.cs" />
|
||||
<Compile Include="View\TemplateSelectors\AiConversationMessageTemplateSelector.cs" />
|
||||
<Compile Include="View\Windows\AnimatedBeWoWindow.xaml.cs">
|
||||
<DependentUpon>AnimatedBeWoWindow.xaml</DependentUpon>
|
||||
@@ -330,6 +338,10 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="View\Detail\Report\DatenbereinigungView.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="View\Document\RtfEditView.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
@@ -659,6 +671,10 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="View\Controls\Utils\HelpInfoControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="View\Controls\Wohnhilfe\CustomerWohnhilfeControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@@ -1597,6 +1613,9 @@
|
||||
<Compile Include="View\Controls\Utils\ColorPicker.xaml.cs">
|
||||
<DependentUpon>ColorPicker.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\Controls\Utils\HelpInfoControl.xaml.cs">
|
||||
<DependentUpon>HelpInfoControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\Controls\Wohnhilfe\CustomerWohnhilfeControl.xaml.cs">
|
||||
<DependentUpon>CustomerWohnhilfeControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace BeWo.Converter
|
||||
{
|
||||
var showOnlyArchived = false;
|
||||
var showOnlyOnlyDeleted = false;
|
||||
CustomFilter customFilter = null;
|
||||
IList<CustomFilter> customFilters = null;
|
||||
|
||||
if (values.Length >= 3)
|
||||
{
|
||||
@@ -29,9 +29,9 @@ namespace BeWo.Converter
|
||||
|
||||
if (values.Length >= 4)
|
||||
{
|
||||
if (values[3] is CustomFilter)
|
||||
if (values[3] is IList<CustomFilter>)
|
||||
{
|
||||
customFilter = values[3] as CustomFilter;
|
||||
customFilters = values[3] as IList<CustomFilter>;
|
||||
}
|
||||
|
||||
if (values.Length >= 5)
|
||||
@@ -51,14 +51,15 @@ namespace BeWo.Converter
|
||||
var ret = (values[0] as IEnumerable<IFilterableDC>).Where(
|
||||
dc =>
|
||||
{
|
||||
var filterRelevants = dc.FilterRelevants != null && dc.FilterRelevants.ContainsAll(lFilter) && (customFilter == null || customFilter.IsValid(dc));
|
||||
var filterRelevants = dc.FilterRelevants != null && dc.FilterRelevants.ContainsAll(lFilter);
|
||||
var aktiv = (!showOnlyOnlyDeleted && !showOnlyArchived && dc.ActivationType == ActivationTypeId.Active);
|
||||
var archiviert = ((showOnlyArchived && dc.ActivationType == ActivationTypeId.Archived));
|
||||
var geloescht = ((!showOnlyArchived && showOnlyOnlyDeleted && dc.ActivationType == ActivationTypeId.Deleted));
|
||||
|
||||
var geloeschtOderArchiviert = (showOnlyArchived && dc.ActivationType == ActivationTypeId.Archived || showOnlyOnlyDeleted && dc.ActivationType == ActivationTypeId.Deleted) && filterRelevants;
|
||||
|
||||
var ergebnis = (aktiv || archiviert || geloescht || geloeschtOderArchiviert) && filterRelevants;
|
||||
var customerFilterValid = (customFilters == null || customFilters.All(f => f.IsValid(dc)));
|
||||
|
||||
var ergebnis = (aktiv || archiviert || geloescht || geloeschtOderArchiviert) && filterRelevants && customerFilterValid;
|
||||
|
||||
return ergebnis;
|
||||
});
|
||||
|
||||
@@ -100,6 +100,10 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAnalysisService/CreateAnnualReportBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
System.Collections.Generic.List<BS.Shared.DataContracts.AnnualReportDC> CreateAnnualReport(System.Nullable<long> costbearerOid, System.Nullable<long> teamOid, System.Nullable<long> customerCareTypeValueListEntryOid, System.DateTime startDate, System.DateTime endDate);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAnalysisService/CreateAnnualReport2", ReplyAction="http://tempuri.org/IAnalysisService/CreateAnnualReport2Response")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAnalysisService/CreateAnnualReport2BeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
System.Collections.Generic.List<BS.Shared.DataContracts.AnnualReportDC> CreateAnnualReport2(BS.Shared.DataContracts.AnnualReportConfigDC config);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAnalysisService/CreateAccountingReport", ReplyAction="http://tempuri.org/IAnalysisService/CreateAccountingReportResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAnalysisService/CreateAccountingReportBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
BS.Shared.DataContracts.Reports.AccountingReportDC CreateAccountingReport(System.DateTime start, System.DateTime end);
|
||||
@@ -243,6 +247,11 @@ namespace BeWo.ServiceProxy
|
||||
return base.Channel.CreateAnnualReport(costbearerOid, teamOid, customerCareTypeValueListEntryOid, startDate, endDate);
|
||||
}
|
||||
|
||||
public System.Collections.Generic.List<BS.Shared.DataContracts.AnnualReportDC> CreateAnnualReport2(BS.Shared.DataContracts.AnnualReportConfigDC config)
|
||||
{
|
||||
return base.Channel.CreateAnnualReport2(config);
|
||||
}
|
||||
|
||||
public BS.Shared.DataContracts.Reports.AccountingReportDC CreateAccountingReport(System.DateTime start, System.DateTime end)
|
||||
{
|
||||
return base.Channel.CreateAccountingReport(start, end);
|
||||
|
||||
@@ -217,6 +217,11 @@ namespace BeWo.ServiceProxy
|
||||
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> FindLeadingCompactTeamsOfEmployee(long employeeOid);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetActiveCompactEmployeesByOids", ReplyAction="http://tempuri.org/IEmployeeService/GetActiveCompactEmployeesByOidsResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetActiveCompactEmployeesByOidsBeWoFaultFault" +
|
||||
"", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC> GetActiveCompactEmployeesByOids(System.Collections.Generic.List<long> employeeOids);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/ArchiveEmployee", ReplyAction="http://tempuri.org/IEmployeeService/ArchiveEmployeeResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/ArchiveEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
void ArchiveEmployee(long pOid, long pVersion);
|
||||
@@ -838,6 +843,11 @@ namespace BeWo.ServiceProxy
|
||||
return base.Channel.FindLeadingCompactTeamsOfEmployee(employeeOid);
|
||||
}
|
||||
|
||||
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC> GetActiveCompactEmployeesByOids(System.Collections.Generic.List<long> employeeOids)
|
||||
{
|
||||
return base.Channel.GetActiveCompactEmployeesByOids(employeeOids);
|
||||
}
|
||||
|
||||
public void ArchiveEmployee(long pOid, long pVersion)
|
||||
{
|
||||
base.Channel.ArchiveEmployee(pOid, pVersion);
|
||||
|
||||
@@ -25,6 +25,18 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IOperationsService/GetAIVoiceTranscriptBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
BS.Shared.DataContracts.AiVoiceDataDC GetAIVoiceTranscript(BS.Shared.DataContracts.AiVoiceDataDC data);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetResourcesByOids", ReplyAction="http://tempuri.org/IOperationsService/GetResourcesByOidsResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IOperationsService/GetResourcesByOidsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
System.Collections.Generic.List<BS.Shared.DataContracts.ResourceDC> GetResourcesByOids(System.Collections.Generic.List<long> resourceOids);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetInactivePersons", ReplyAction="http://tempuri.org/IOperationsService/GetInactivePersonsResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IOperationsService/GetInactivePersonsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
System.Collections.Generic.List<BS.Shared.DataContracts.InactivePersonDC> GetInactivePersons(int jahreUngenutzt, BS.Shared.TableID tableId);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/DeleteInactivePersons", ReplyAction="http://tempuri.org/IOperationsService/DeleteInactivePersonsResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IOperationsService/DeleteInactivePersonsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
string DeleteInactivePersons(System.Collections.Generic.List<BS.Shared.DataContracts.InactivePersonDC> persons, bool anonymisieren);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/UpdateDienstEintrag", ReplyAction="http://tempuri.org/IOperationsService/UpdateDienstEintragResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IOperationsService/UpdateDienstEintragBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
void UpdateDienstEintrag(BS.Shared.DataContracts.DienstEintragDC dienstEintrag);
|
||||
@@ -367,6 +379,11 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Reports.AuslastungAnalysisSupportConceptDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Reports.AuslastungAnalysisSupportConceptDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AiVoiceDataDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.ResourceDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ResourceDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ValueListEntryDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.InactivePersonDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.InactivePersonDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.DienstEintragDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.DienstvertretungDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.DienstEintragDC>))]
|
||||
@@ -375,7 +392,6 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ServiceRecordDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.CostRatePeriodDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CostRatePeriodDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ValueListEntryDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.AbsenceTimeDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AbsenceTimeDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AbsenceReasonDC))]
|
||||
@@ -471,8 +487,6 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.SchedulerAppointmentDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Employee2SchedulerAppointmentDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Employee2SchedulerAppointmentDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.ResourceDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ResourceDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.BargeldtransaktionshistoryDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.BargeldtransaktionshistoryDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.SignatureDC>))]
|
||||
@@ -614,26 +628,10 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Core.BeWoFault))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Core.BeWoFaultType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Core.DateTimeSpan))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactOrganisationDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactCustomerDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactEmployeeDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactSupportConceptDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCostBearerDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactCostBearerDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactPersonDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactWohnheimDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactSupportConceptDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTokenDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactTokenDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactTeamDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactVertreterEmployeeDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactVertreterEmployeeDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ValueListEntryType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.TableID))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ActivationTypeId))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.CostRatePeriodType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ValueListEntryType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AbsenceReasonVisibilityType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Sex))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SubstitutionNeed))]
|
||||
@@ -648,7 +646,6 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SignatureType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SystemEntryID))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.FileAttachmentType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.TableID))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.SupportConceptApprovalInterval))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Bewilligungsart))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.FamilyStatus))]
|
||||
@@ -680,6 +677,23 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Priority))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Status))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.VertretungsStatus))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactOrganisationDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactCustomerDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactEmployeeDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactSupportConceptDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCostBearerDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactCostBearerDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactPersonDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactWohnheimDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactSupportConceptDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTokenDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactTokenDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactTeamDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactVertreterEmployeeDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactVertreterEmployeeDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Wohnhilfe.CustomerWohnhilfeDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Wohnhilfe.CustomerWohnhilfeDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Wohnhilfe.CustomerWohnhilfeBereichBundDC))]
|
||||
@@ -2008,6 +2022,21 @@ namespace BeWo.ServiceProxy
|
||||
return base.Channel.GetAIVoiceTranscript(data);
|
||||
}
|
||||
|
||||
public System.Collections.Generic.List<BS.Shared.DataContracts.ResourceDC> GetResourcesByOids(System.Collections.Generic.List<long> resourceOids)
|
||||
{
|
||||
return base.Channel.GetResourcesByOids(resourceOids);
|
||||
}
|
||||
|
||||
public System.Collections.Generic.List<BS.Shared.DataContracts.InactivePersonDC> GetInactivePersons(int jahreUngenutzt, BS.Shared.TableID tableId)
|
||||
{
|
||||
return base.Channel.GetInactivePersons(jahreUngenutzt, tableId);
|
||||
}
|
||||
|
||||
public string DeleteInactivePersons(System.Collections.Generic.List<BS.Shared.DataContracts.InactivePersonDC> persons, bool anonymisieren)
|
||||
{
|
||||
return base.Channel.DeleteInactivePersons(persons, anonymisieren);
|
||||
}
|
||||
|
||||
public void UpdateDienstEintrag(BS.Shared.DataContracts.DienstEintragDC dienstEintrag)
|
||||
{
|
||||
base.Channel.UpdateDienstEintrag(dienstEintrag);
|
||||
|
||||
@@ -17,7 +17,8 @@ namespace BeWo.View
|
||||
|
||||
private readonly long _CustomerOid;
|
||||
|
||||
private readonly Dictionary<int, AssessmentSheetValueVM> _Day2Entries = new Dictionary<int, AssessmentSheetValueVM>();
|
||||
private readonly Dictionary<int, AssessmentSheetValueVM> _Day2Values = new Dictionary<int, AssessmentSheetValueVM>();
|
||||
private readonly Dictionary<int, AssessmentSheetEntryVM> _Day2Entries = new Dictionary<int, AssessmentSheetEntryVM>();
|
||||
|
||||
private readonly AssessmentSheetEntryListVM _EntryList;
|
||||
|
||||
@@ -45,11 +46,13 @@ namespace BeWo.View
|
||||
if (showWeek)
|
||||
{
|
||||
TimeSpan ts = entry.Day.Value.Subtract(_StartDate);
|
||||
_Day2Entries[(int) ts.TotalDays + 1] = PossibleValues.SingleOrDefault(vm => vm.DataContract.AssessmentSheetValueOid.Equals(entry.ValueOid));
|
||||
_Day2Values[(int) ts.TotalDays + 1] = PossibleValues.SingleOrDefault(vm => vm.DataContract.AssessmentSheetValueOid.Equals(entry.ValueOid));
|
||||
_Day2Entries[(int)ts.TotalDays + 1] = entry;
|
||||
}
|
||||
else
|
||||
{
|
||||
_Day2Entries[entry.Day.Value.Day] = PossibleValues.SingleOrDefault(vm => vm.DataContract.AssessmentSheetValueOid.Equals(entry.ValueOid));
|
||||
_Day2Values[entry.Day.Value.Day] = PossibleValues.SingleOrDefault(vm => vm.DataContract.AssessmentSheetValueOid.Equals(entry.ValueOid));
|
||||
_Day2Entries[entry.Day.Value.Day] = entry;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -471,7 +474,13 @@ namespace BeWo.View
|
||||
|
||||
private AssessmentSheetValueVM Get(int day)
|
||||
{
|
||||
return this._Day2Entries.ContainsKey(day) ? this._Day2Entries[day] : null;
|
||||
var v = this._Day2Values.ContainsKey(day) ? this._Day2Values[day] : null;
|
||||
if (v != null && this._Day2Entries.ContainsKey(day))
|
||||
{
|
||||
var e = _Day2Entries[day];
|
||||
v.Tooltip = string.Format("{0}, {1:dd.MM.yyyy HH:mm} von {2}", v.Description, e.DataContract.InsTs, e.DataContract.InsUser);
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
private void Set(int day, AssessmentSheetValueVM value)
|
||||
@@ -480,11 +489,13 @@ namespace BeWo.View
|
||||
if (value.IsNew)
|
||||
{
|
||||
value = null;
|
||||
this._Day2Values.Remove(day);
|
||||
this._Day2Entries.Remove(day);
|
||||
}
|
||||
else
|
||||
{
|
||||
this._Day2Entries[day] = value;
|
||||
this._Day2Values[day] = value;
|
||||
this._Day2Entries.Remove(day);
|
||||
}
|
||||
|
||||
var list = this._EntryList.VMList.Where(vm => vm.CategoryOid.Equals(this._Category.AssessmentSheetCategoryOid) && vm.Day.HasValue && vm.Day.Value.Equals(date)).ToList();
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace BeWo.View.Controls
|
||||
c.shine.Visibility = Visibility.Visible;
|
||||
c.tb.Text = vm.Sign;
|
||||
c.border.Background = vm.Brush;
|
||||
c.border.ToolTip = vm.DataContract.Tooltip;
|
||||
c.border.ToolTip = vm.Tooltip;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
50
BeWo/View/Controls/Utils/HelpInfoControl.xaml
Normal file
50
BeWo/View/Controls/Utils/HelpInfoControl.xaml
Normal file
@@ -0,0 +1,50 @@
|
||||
<UserControl
|
||||
x:Class="BeWo.View.Controls.Utils.HelpInfoControl"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
x:Name="root"
|
||||
d:DesignWidth="28"
|
||||
d:DesignHeight="28"
|
||||
mc:Ignorable="d">
|
||||
<Button
|
||||
x:Name="btn"
|
||||
Width="22"
|
||||
Height="22"
|
||||
Padding="0"
|
||||
Click="btn_Click"
|
||||
ToolTip="{Binding HelpToolTip, ElementName=root}"
|
||||
Cursor="Hand"
|
||||
FontWeight="Bold"
|
||||
FontSize="13">
|
||||
<Button.Template>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Grid>
|
||||
<Ellipse
|
||||
Fill="White"
|
||||
Stroke="#FF14549E"
|
||||
StrokeThickness="1" />
|
||||
<ContentPresenter
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Opacity" Value="0.75" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter Property="Opacity" Value="0.6" />
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Button.Template>
|
||||
<TextBlock
|
||||
Text="?"
|
||||
Foreground="#FF14549E"
|
||||
FontWeight="Bold"
|
||||
FontSize="14"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center" />
|
||||
</Button>
|
||||
</UserControl>
|
||||
38
BeWo/View/Controls/Utils/HelpInfoControl.xaml.cs
Normal file
38
BeWo/View/Controls/Utils/HelpInfoControl.xaml.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System.Diagnostics;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace BeWo.View.Controls.Utils
|
||||
{
|
||||
public partial class HelpInfoControl : UserControl
|
||||
{
|
||||
public static readonly DependencyProperty UrlProperty =
|
||||
DependencyProperty.Register("Url", typeof(string), typeof(HelpInfoControl), new PropertyMetadata(null));
|
||||
|
||||
public string Url
|
||||
{
|
||||
get => (string)GetValue(UrlProperty);
|
||||
set => SetValue(UrlProperty, value);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty HelpToolTipProperty =
|
||||
DependencyProperty.Register("HelpToolTip", typeof(string), typeof(HelpInfoControl), new PropertyMetadata("Hilfe aufrufen"));
|
||||
|
||||
public string HelpToolTip
|
||||
{
|
||||
get => (string)GetValue(HelpToolTipProperty);
|
||||
set => SetValue(HelpToolTipProperty, value);
|
||||
}
|
||||
|
||||
public HelpInfoControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void btn_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(Url))
|
||||
Process.Start(new ProcessStartInfo(Url) { UseShellExecute = true });
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,8 +9,8 @@
|
||||
d:DataContext="{d:DesignInstance Type=ai:AiPromptbausteinActionResultViewModel}"
|
||||
d:DesignHeight="600"
|
||||
d:DesignWidth="600"
|
||||
mc:Ignorable="d"
|
||||
Background="{StaticResource ObjectEditBackgroundBrush}">
|
||||
Background="{StaticResource ObjectEditBackgroundBrush}"
|
||||
mc:Ignorable="d">
|
||||
<UserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
IsReadOnly="True"
|
||||
PopUpClick="popupedit_file_PopUpClick" />
|
||||
<Label
|
||||
x:Name="lblBuchungsdatum"
|
||||
Grid.Row="0"
|
||||
Grid.Column="2"
|
||||
VerticalAlignment="Center"
|
||||
|
||||
@@ -66,10 +66,14 @@ namespace BeWo.View.Detail
|
||||
|
||||
if (!BeWoApp.AppSettings.ShowImportAbschlagszahlungen)
|
||||
{
|
||||
lblBuchungsdatum.Visibility = Visibility.Collapsed;
|
||||
DateEditDefaultImportBuchungsdatum.Visibility = Visibility.Collapsed;
|
||||
popupedit_file.Visibility = Visibility.Collapsed;
|
||||
ButtonImport.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
#if DEBUG
|
||||
lblBuchungsdatum.Visibility = Visibility.Visible;
|
||||
DateEditDefaultImportBuchungsdatum.Visibility = Visibility.Visible;
|
||||
popupedit_file.Visibility = Visibility.Visible;
|
||||
ButtonImport.Visibility = Visibility.Visible;
|
||||
#endif
|
||||
|
||||
287
BeWo/View/Detail/Report/DatenbereinigungView.xaml
Normal file
287
BeWo/View/Detail/Report/DatenbereinigungView.xaml
Normal file
@@ -0,0 +1,287 @@
|
||||
<localView:BeWoView
|
||||
x:Class="BeWo.View.Detail.Report.DatenbereinigungView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic"
|
||||
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
|
||||
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
|
||||
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
|
||||
xmlns:localView="clr-namespace:BeWo.View"
|
||||
xmlns:localViewDetail="clr-namespace:BeWo.View.Detail.Accounting"
|
||||
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
|
||||
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
|
||||
xmlns:proxy="clr-namespace:BeWo.ServiceProxy"
|
||||
xmlns:r="clr-namespace:BeWo.Security"
|
||||
xmlns:s="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
|
||||
xmlns:val="clr-namespace:BeWo.Validation"
|
||||
xmlns:utils="clr-namespace:BeWo.View.Controls.Utils"
|
||||
Width="Auto"
|
||||
Height="Auto"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
Focusable="True">
|
||||
|
||||
<Grid>
|
||||
|
||||
<GroupBox
|
||||
x:Name="groupbox_editArea"
|
||||
Grid.Row="0"
|
||||
Header="{markup:Translate Datenbereinigung}"
|
||||
Style="{DynamicResource ObjectEditGroupBox}">
|
||||
|
||||
<Grid Margin="0,3,0,0" Grid.IsSharedSizeScope="True">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel
|
||||
Grid.Column="0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
Orientation="Horizontal">
|
||||
<Label Margin="3">Anzahl Jahre ungenutzt:</Label>
|
||||
<dxe:SpinEdit
|
||||
x:Name="editJahre"
|
||||
Grid.Row="1"
|
||||
Height="20"
|
||||
Width="60"
|
||||
Margin="3"
|
||||
MinValue="1"
|
||||
MaxValue="99"
|
||||
IsFloatValue="False"
|
||||
VerticalContentAlignment="Center"/>
|
||||
<RadioButton
|
||||
x:Name="radioCustomer"
|
||||
Margin="5,7,5,0"
|
||||
Content="{markup:Translate Klienten}"
|
||||
IsChecked="True" />
|
||||
<RadioButton
|
||||
x:Name="radioEmployee"
|
||||
Margin="5,7,5,0"
|
||||
Content="{markup:Translate Mitarbeiter}"
|
||||
IsChecked="False" />
|
||||
<RadioButton
|
||||
x:Name="radioPersonen"
|
||||
Margin="5,7,5,0"
|
||||
Content="{markup:Translate Personen}"
|
||||
IsChecked="False" />
|
||||
<Button
|
||||
x:Name="button_reload"
|
||||
Grid.Column="1"
|
||||
Width="80"
|
||||
Height="24"
|
||||
Margin="3"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Bottom"
|
||||
Click="ReloadButton_OnClick"
|
||||
Content="Aktualisieren" />
|
||||
</StackPanel>
|
||||
|
||||
|
||||
|
||||
|
||||
<dxg:GridControl
|
||||
x:Name="datagrid_inactiveData"
|
||||
Grid.Row="1"
|
||||
Grid.ColumnSpan="4"
|
||||
Margin="3"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn
|
||||
x:Name="ColumnChecked"
|
||||
MinWidth="30"
|
||||
FieldName="IsChecked"
|
||||
Header=" " />
|
||||
<dxg:GridColumn
|
||||
x:Name="ColumnButtons"
|
||||
Width="50"
|
||||
AllowEditing="False"
|
||||
FieldName="ReportLink"
|
||||
Header=" ">
|
||||
<dxg:GridColumn.DisplayTemplate>
|
||||
<ControlTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
|
||||
<Button
|
||||
x:Name="btn_delete"
|
||||
Width="22"
|
||||
Height="22"
|
||||
Margin="1"
|
||||
Padding="0"
|
||||
VerticalAlignment="Center"
|
||||
Click="btn_delete_Click"
|
||||
Content="r"
|
||||
FontFamily="Webdings"
|
||||
FontSize="13"
|
||||
Foreground="#FF0000"
|
||||
ToolTip="{markup:Translate ToolTipEndgueltigLoeschen}" />
|
||||
<Button
|
||||
x:Name="btn_anonymisieren"
|
||||
Width="22"
|
||||
Height="22"
|
||||
Margin="1"
|
||||
Padding="0"
|
||||
VerticalAlignment="Center"
|
||||
Content="?"
|
||||
FontSize="14"
|
||||
Foreground="#FFFFFF"
|
||||
Click="btn_anonymisieren_Click"
|
||||
ToolTip="{markup:Translate ToolTipAnonymisieren}" />
|
||||
</StackPanel>
|
||||
</ControlTemplate>
|
||||
</dxg:GridColumn.DisplayTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn
|
||||
Width="150"
|
||||
AllowEditing="False"
|
||||
FieldName="LastName"
|
||||
Header="Nachname"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
Width="100"
|
||||
AllowEditing="False"
|
||||
FieldName="FirstName"
|
||||
Header="Vorname"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
Width="100"
|
||||
AllowEditing="False"
|
||||
FieldName="DateOfBirth"
|
||||
EditSettings="{dxe:DateSettings DisplayFormat=d}"
|
||||
Header="Geburtsdatum"
|
||||
ReadOnly="True"
|
||||
SortFieldName="AccountingPeriodStart" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="Street"
|
||||
Header="Straße"
|
||||
ReadOnly="True"
|
||||
SortOrder="Ascending" />
|
||||
<dxg:GridColumn
|
||||
MinWidth="70"
|
||||
AllowEditing="False"
|
||||
FieldName="PostalCode"
|
||||
Header="PLZ"
|
||||
ReadOnly="True" />
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="Town"
|
||||
Header="Ort"
|
||||
ReadOnly="True" />
|
||||
<!--<dxg:GridColumn FieldName="AccountingPeriodString" Header="Abrechnungszeitraum" />-->
|
||||
<dxg:GridColumn
|
||||
MinWidth="70"
|
||||
AllowEditing="False"
|
||||
FieldName="LastUsedOn"
|
||||
Header="Zuletzt verwendet am"
|
||||
ReadOnly="True">
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn
|
||||
AllowEditing="False"
|
||||
FieldName="Notice"
|
||||
Header="Bemerkung"
|
||||
ReadOnly="True" />
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView
|
||||
x:Name="gridView"
|
||||
AllowBestFit="True"
|
||||
BestFitMode="Smart"
|
||||
Loaded="gridView_Loaded"
|
||||
NavigationStyle="Cell"
|
||||
ScrollingMode="Smart"
|
||||
ShowGroupPanel="False"
|
||||
SnapsToDevicePixels="True" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
|
||||
<Grid
|
||||
Grid.Row="1"
|
||||
Grid.ColumnSpan="4"
|
||||
Margin="5,2,5,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Top">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Label
|
||||
Margin="10,0,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
Content="{Binding FilterResultAmountSum, Converter={StaticResource StringFormatConverter}, ConverterParameter='{}Summe aller Rechnungen: {0:c}'}"
|
||||
FontSize="14"
|
||||
Foreground="{StaticResource GridPrintMenuLightBrush}" />
|
||||
<Label
|
||||
Margin="0,0,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
Content=" | "
|
||||
FontSize="14"
|
||||
Foreground="{StaticResource GridPrintMenuLightBrush}" />
|
||||
<Label
|
||||
x:Name="lblAmoutNotPaid"
|
||||
Margin="0,0,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
Content="{Binding FilterResultAmountNotPaidSum, Converter={StaticResource StringFormatConverter}, ConverterParameter='{}Summe der noch offenen Rechnungen: {0:c}'}"
|
||||
FontSize="14"
|
||||
Foreground="{StaticResource GridPrintMenuLightBrush}" />
|
||||
</StackPanel>
|
||||
|
||||
|
||||
|
||||
</Grid>
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal">
|
||||
<Button
|
||||
Name="button_checkAllLeistungen"
|
||||
Margin="10,3,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
Click="button_checkAll_Click">
|
||||
Alle auswählen
|
||||
</Button>
|
||||
<Button
|
||||
Name="button_uncheckAllLeistungen"
|
||||
Margin="10,3,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
Click="button_uncheckAll_Click">
|
||||
Alle abwählen
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
Name="button_deleteAll"
|
||||
Margin="20,3,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
Click="button_deleteAll_Click">
|
||||
Ausgewählte löschen
|
||||
</Button>
|
||||
<utils:HelpInfoControl Margin="2,6,2,2" Url="{markup:Translate EndgueltigLoeschenHilfeUrl}" ToolTip="{markup:Translate ToolTipEndgueltigLoeschen}" />
|
||||
|
||||
<Button
|
||||
Name="button_anonymisierenAll"
|
||||
Margin="10,3,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
Click="button_anonymisierenAll_Click">
|
||||
Ausgewählte anonymisieren
|
||||
</Button>
|
||||
<utils:HelpInfoControl Margin="2,6,2,2" Url="{markup:Translate AnonymisierenHilfeUrl}" ToolTip="{markup:Translate ToolTipAnonymisieren}" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
</Grid>
|
||||
|
||||
</localView:BeWoView>
|
||||
173
BeWo/View/Detail/Report/DatenbereinigungView.xaml.cs
Normal file
173
BeWo/View/Detail/Report/DatenbereinigungView.xaml.cs
Normal file
@@ -0,0 +1,173 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Policy;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Threading;
|
||||
using BeWo.Core;
|
||||
using BeWo.ServiceProxy;
|
||||
using BeWo.View.Windows;
|
||||
using BeWo.ViewModel;
|
||||
using BeWo.ViewModel.ListViewModel;
|
||||
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
using BS.Shared.Translation;
|
||||
using DevExpress.Xpf.Editors;
|
||||
using DevExpress.Xpf.Grid;
|
||||
using Microsoft.Win32;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace BeWo.View.Detail.Report
|
||||
{
|
||||
public partial class DatenbereinigungView : BeWoView
|
||||
{
|
||||
|
||||
public DatenbereinigungView()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
editJahre.Value = 10;
|
||||
button_reload.Focus();
|
||||
CheckRights();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void CheckRights()
|
||||
{
|
||||
if (!BeWoApp.AppSettings.AllowStorno)
|
||||
{
|
||||
ColumnButtons.MinWidth = 67;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void RefreshList()
|
||||
{
|
||||
DateTime? start = null;
|
||||
DateTime? end = null;
|
||||
|
||||
//bool filterByInvoiceDate = radioFilterByInvoiceDate.IsChecked.Value;
|
||||
var tid = TableID.Customer;
|
||||
if (radioEmployee.IsChecked == true) {
|
||||
tid = TableID.Employee;
|
||||
} else if (radioPersonen.IsChecked == true) {
|
||||
tid = TableID.Person;
|
||||
}
|
||||
|
||||
int anzahlJahre = (int)editJahre.Value;
|
||||
|
||||
ServiceFacade.DoOperationsServiceAsync(s => s.GetInactivePersons(anzahlJahre, tid), UpdateList);
|
||||
}
|
||||
|
||||
private void UpdateList(IList<InactivePersonDC> dcList)
|
||||
{
|
||||
this.Dispatcher.BeginInvoke(
|
||||
DispatcherPriority.Normal,
|
||||
(Action)delegate
|
||||
{
|
||||
//ViewModel.UpdateList(dcList);
|
||||
this.datagrid_inactiveData.ItemsSource = dcList;
|
||||
this.gridView.BestFitColumns();
|
||||
});
|
||||
}
|
||||
|
||||
private void ReloadButton_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
RefreshList();
|
||||
}
|
||||
|
||||
private void btn_delete_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var vm = this.datagrid_inactiveData.GetCurrentValue<InactivePersonDC>();
|
||||
|
||||
if (MessageBox.Show("Sind Sie sicher, dass Sie die gewählte Rechnung löschen möchten?", "Rechnung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void btn_anonymisieren_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var vm = this.datagrid_inactiveData.GetCurrentValue<InactivePersonDC>();
|
||||
|
||||
if (MessageBox.Show("Sind Sie sicher, dass Sie die gewählte Rechnung löschen möchten?", "Rechnung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void gridView_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.gridView.BestFitColumns();
|
||||
}
|
||||
|
||||
private void button_checkAll_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var visible = GetVisibleVMs();
|
||||
foreach (var item in visible)
|
||||
{
|
||||
item.IsChecked = true;
|
||||
}
|
||||
|
||||
datagrid_inactiveData.RefreshData();
|
||||
}
|
||||
|
||||
private void button_uncheckAll_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var visible = GetVisibleVMs();
|
||||
foreach (var item in visible)
|
||||
{
|
||||
item.IsChecked = false;
|
||||
}
|
||||
|
||||
datagrid_inactiveData.RefreshData();
|
||||
}
|
||||
|
||||
private void button_deleteAll_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void button_anonymisierenAll_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private IList<InactivePersonDC> GetVisibleVMs()
|
||||
{
|
||||
var list = new List<InactivePersonDC>();
|
||||
|
||||
var items = datagrid_inactiveData.ItemsSource as IList<InactivePersonDC>;
|
||||
|
||||
if (items != null)
|
||||
{
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
if (datagrid_inactiveData.IsRowVisible(i))
|
||||
{
|
||||
var vm = datagrid_inactiveData.GetRow(i) as InactivePersonDC;
|
||||
if (vm != null)
|
||||
{
|
||||
list.Add(vm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -37,7 +37,7 @@ namespace BeWo.View.Document
|
||||
view.InitView(tabelle, alleVorlagen, templateFolderList, null, true, false, "", defaultBerichte);
|
||||
//view.InitView(tabelle, alleVorlagen, templateFolderList, null, true, false, "");
|
||||
|
||||
var beWoWindow = BeWoWindowBuilder.GetBeWoWindow(Translator.Translate("Vorlage auswählen"), view, 500, 500);
|
||||
var beWoWindow = BeWoWindowBuilder.GetBeWoWindow(Translator.Translate("Vorlage auswählen"), view, 500, 600);
|
||||
|
||||
view.ButtonCancelClicked += () => beWoWindow.Close();
|
||||
view.ButtonCreateForSelectionClicked += () =>
|
||||
@@ -104,6 +104,7 @@ namespace BeWo.View.Document
|
||||
Node = rootNode
|
||||
};
|
||||
DocumentTreeItemVM vm = new DocumentTreeItemVM(dc);
|
||||
vm.SortName = String.Format("0_{0}", dc.Name); //Für Sortieren. Die Ordner sollen oberhalb der Vorlagen einsortiert werden
|
||||
rootNode.Content = vm;
|
||||
rootNode.IsExpandButtonVisible = DefaultBoolean.True;
|
||||
rootNode.IsExpanded = expandItems;
|
||||
@@ -154,6 +155,7 @@ namespace BeWo.View.Document
|
||||
BeWoFolderDC = new BeWoFolderDC { Name = "RootFolder", SubFolders = new List<BeWoFolderDC>() }
|
||||
};
|
||||
DocumentTreeItemVM vm = new DocumentTreeItemVM(dc);
|
||||
vm.SortName = String.Format("0_{0}", dc.Name); //Für Sortieren. Die Ordner sollen oberhalb der Vorlagen einsortiert werden
|
||||
node.Content = vm;
|
||||
treeControl.View.Nodes.Add(node);
|
||||
node.IsExpandButtonVisible = DefaultBoolean.True;
|
||||
@@ -190,6 +192,7 @@ namespace BeWo.View.Document
|
||||
};
|
||||
|
||||
DocumentTreeItemVM folder_vm = new DocumentTreeItemVM(dc);
|
||||
folder_vm.SortName = String.Format("z_{0}", dc.Name); //Für Sortieren. Die Ordner sollen oberhalb der Vorlagen einsortiert werden
|
||||
var newFolderNode = new TreeListNode()
|
||||
{
|
||||
Content = folder_vm,
|
||||
@@ -313,6 +316,7 @@ namespace BeWo.View.Document
|
||||
}
|
||||
}
|
||||
DocumentTreeItemVM folder_vm = new DocumentTreeItemVM(dc);
|
||||
folder_vm.SortName = String.Format("0_{0}", dc.Name); //Für Sortieren. Die Ordner sollen oberhalb der Vorlagen einsortiert werden
|
||||
var newFolderNode = new TreeListNode()
|
||||
{
|
||||
Content = folder_vm,
|
||||
|
||||
@@ -67,6 +67,9 @@
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\Ressources\Icons\Rename24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Berechtigungen">
|
||||
|
||||
</MenuItem>
|
||||
<Separator />
|
||||
<MenuItem Header="Neue Vorlage">
|
||||
|
||||
@@ -1447,6 +1447,10 @@ namespace BeWo.View.Document
|
||||
{
|
||||
this.EditSelectedTemplateFolder();
|
||||
}
|
||||
else if (twi.Header.Equals("Berechtigungen"))
|
||||
{
|
||||
this.OpenSelectRightsDialog();
|
||||
}
|
||||
else if (twi.Header.Equals("Löschen"))
|
||||
{
|
||||
this.DeleteTemplateFolderWithAllSubfolders(row.DataContract.BeWoFolderDC);
|
||||
@@ -1566,6 +1570,11 @@ namespace BeWo.View.Document
|
||||
//TemplateTreeView.SelectCell(h, template_treeview_control.Columns[0]);
|
||||
//TemplateTreeView.ShowEditForm();
|
||||
|
||||
}
|
||||
|
||||
private void OpenSelectRightsDialog()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -31,9 +31,10 @@
|
||||
|
||||
|
||||
<Label Margin="0,0,0,0" x:Name="lblTemplate" Content="Vorlage:"/>
|
||||
<dxg:TreeListControl x:Name="treelistcontrol_template" Grid.Row="1" Grid.ColumnSpan="2" DefaultSorting="Name" Margin="5,0,5,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
|
||||
<dxg:TreeListControl x:Name="treelistcontrol_template" Grid.Row="1" Grid.ColumnSpan="2" Margin="5,0,5,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
|
||||
<dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListColumn FieldName="Name" AllowSorting="True" CellToolTipBinding="{Binding Description}"/>
|
||||
<dxg:TreeListColumn FieldName="Name" CellToolTipBinding="{Binding Description}"/>
|
||||
<dxg:TreeListColumn FieldName="SortName" AllowSorting="True" SortIndex="0" SortOrder="Ascending" Visible="False"/>
|
||||
</dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListControl.View>
|
||||
<dxg:TreeListView x:Name="TreeView_template" ShowColumnHeaders="False" ShowIndicator="False" ShowHorizontalLines="False" ShowVerticalLines="False" AutoWidth="True"
|
||||
@@ -59,8 +60,15 @@
|
||||
</dxg:TreeListView>
|
||||
</dxg:TreeListControl.View>
|
||||
</dxg:TreeListControl>
|
||||
|
||||
<WrapPanel Grid.Row="5" Grid.ColumnSpan="2" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="0 5 5 5">
|
||||
<WrapPanel Grid.Row="5" Grid.ColumnSpan="1" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="0 5 5 5">
|
||||
<Button Margin="10 0 0 0"
|
||||
Name="button_aufklappenAllGoals" Click="button_aufklappenAll_Click"
|
||||
HorizontalAlignment="Left">Alle aufklappen</Button>
|
||||
<Button Margin="5 0 0 0"
|
||||
Name="button_zuklappenAllGoals" Click="button_zuklappenAll_Click"
|
||||
HorizontalAlignment="Left">Alle zuklappen</Button>
|
||||
</WrapPanel>
|
||||
<WrapPanel Grid.Row="5" Grid.Column="1" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="0 5 5 5">
|
||||
<Button x:Name="Button_SelectTemplate" Content="Dokument erstellen" Margin="0 0 5 0" Click="Button_CreateTemplateForSelection_Click" />
|
||||
<Button x:Name="Button_SelectFolder" Content="Dokument speichern" Margin="0 0 5 0" Click="Button_SelectFolder_Click" />
|
||||
<Button x:Name="Button_Cancel_OnlyOne" Content="Abbrechen" Click="Button_Cancel_Click" />
|
||||
|
||||
@@ -181,8 +181,36 @@ namespace BeWo.View.Document
|
||||
|
||||
private void TreeView_template_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
e.Handled = true;
|
||||
OpenSelectedTemplate();
|
||||
|
||||
var hitInfo = TreeView_template.CalcHitInfo(e.OriginalSource as DependencyObject);
|
||||
if (hitInfo.InRowCell)
|
||||
{
|
||||
e.Handled = true;
|
||||
OpenSelectedTemplate();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void button_aufklappenAll_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
ExpandAllTreeItems(TreeView_template.Nodes, true);
|
||||
}
|
||||
|
||||
private void button_zuklappenAll_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
ExpandAllTreeItems(TreeView_template.Nodes, false);
|
||||
}
|
||||
|
||||
private void ExpandAllTreeItems(TreeListNodeCollection nodes, bool expanded)
|
||||
{
|
||||
|
||||
foreach (var node in nodes)
|
||||
{
|
||||
node.IsExpanded = expanded;
|
||||
ExpandAllTreeItems(node.Nodes, expanded);
|
||||
}
|
||||
|
||||
//TreeView_template.items
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -119,6 +119,10 @@
|
||||
Name="tabitem_flexibleReport"
|
||||
Header="{markup:Translate Pivot Tabelle}"
|
||||
Selector.Selected="tabitem_flexibleReport_Selected" />
|
||||
<TabItem
|
||||
Name="tabitem_Datenbereinigung"
|
||||
Header="{markup:Translate Datenbereinigung}"
|
||||
Selector.Selected="tabitem_Datenbereinigung_Selected" />
|
||||
<!--<TabItem Header="Spitzabrechnung" Name="tabitem_settlement" Selector.Selected="tabitem_settlement_Selected"/>-->
|
||||
|
||||
</TabControl>
|
||||
|
||||
@@ -643,6 +643,25 @@ namespace BeWo.View.Master
|
||||
SelectStundenzettelTabItem();
|
||||
}
|
||||
|
||||
private void tabitem_Datenbereinigung_Selected(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ignoreSelectTabEvents)
|
||||
return;
|
||||
SelectDatenbereinigungTabItem();
|
||||
}
|
||||
|
||||
private void SelectDatenbereinigungTabItem()
|
||||
{
|
||||
tabitem_Datenbereinigung.IsSelected = true;
|
||||
|
||||
if (!OpenViews.ContainsKey(tabitem_Datenbereinigung))
|
||||
{
|
||||
OpenViews[tabitem_Datenbereinigung] = new DatenbereinigungView();
|
||||
}
|
||||
|
||||
Show(tabitem_Datenbereinigung);
|
||||
}
|
||||
|
||||
private void SelectFlexibleReportTabItem()
|
||||
{
|
||||
tabitem_flexibleReport.IsSelected = true;
|
||||
|
||||
@@ -31,6 +31,7 @@ using System.Collections;
|
||||
using System.Windows.Input;
|
||||
using BeWo.Core.Commands;
|
||||
using BeWo.ViewModel.View.AI;
|
||||
using DevExpress.Xpf.Editors;
|
||||
|
||||
namespace BeWo.View.Navigation
|
||||
{
|
||||
@@ -42,8 +43,9 @@ namespace BeWo.View.Navigation
|
||||
//private readonly CheckBox chkShowOnlyMyCustomers;
|
||||
//private readonly CheckBox chkShowOnlyTeamCustomers;
|
||||
private readonly ComboBox supportConceptFilterComboBox;
|
||||
|
||||
private IEnumerable<IFilterableDC> objectList;
|
||||
private readonly ComboBoxEdit betreuungsartFilterComboBox;
|
||||
|
||||
private IEnumerable<IFilterableDC> objectList;
|
||||
private IEnumerable<IFilterableDC> recentList;
|
||||
|
||||
public CustomerNavigationView()
|
||||
@@ -169,10 +171,46 @@ namespace BeWo.View.Navigation
|
||||
mainNavigationView.sortPanel.Children.Insert(3, lbl);
|
||||
mainNavigationView.sortPanel.Children.Insert(4, supportConceptFilterComboBox);
|
||||
|
||||
betreuungsartFilterComboBox = new ComboBoxEdit();
|
||||
betreuungsartFilterComboBox.FontSize = 12;
|
||||
betreuungsartFilterComboBox.Margin = new Thickness(10, 0, 0, 0);
|
||||
betreuungsartFilterComboBox.Width = 150;
|
||||
betreuungsartFilterComboBox.IsTextEditable = false;
|
||||
betreuungsartFilterComboBox.NullText = Translator.Translate("Nach Betreuungsart filtern");
|
||||
betreuungsartFilterComboBox.ItemsSource = ServiceFacade.DoValueListServiceSync(s => s.GetAllValueListEntrysByType(ValueListEntryType.CustomerCareType));
|
||||
betreuungsartFilterComboBox.DisplayMember = "TypeDescription";
|
||||
betreuungsartFilterComboBox.StyleSettings = new CheckedComboBoxStyleSettings();
|
||||
betreuungsartFilterComboBox.EditValueChanged += BetreuungsartComboBox_EditValueChanged;
|
||||
|
||||
//< dxe:ComboBoxEdit x:Name = "checkedComboBox"
|
||||
// NullText = "Select categories"
|
||||
// IsTextEditable = "False"
|
||||
// ItemsSource = "{Binding Categories}"
|
||||
// EditValue = "{Binding SelectedCategories}"
|
||||
// DisplayMember = "CategoryName"
|
||||
// ShowCustomItems = "True" >
|
||||
// < dxe:ComboBoxEdit.StyleSettings >
|
||||
// < dxe:CheckedComboBoxStyleSettings />
|
||||
// </ dxe:ComboBoxEdit.StyleSettings >
|
||||
// </ dxe:ComboBoxEdit >
|
||||
|
||||
lbl = new TextBlock
|
||||
{
|
||||
Text = Translator.Translate("Betreuungsart:"),
|
||||
FontSize = 12,
|
||||
Margin = new Thickness(8, 2, -3, 0)
|
||||
};
|
||||
|
||||
mainNavigationView.sortPanel.Children.Insert(5, lbl);
|
||||
mainNavigationView.sortPanel.Children.Insert(6, betreuungsartFilterComboBox);
|
||||
|
||||
|
||||
|
||||
|
||||
UpdateCustomFilter();
|
||||
}
|
||||
|
||||
public Dictionary<TableID, long[]> GetVisibleInformationReferences()
|
||||
public Dictionary<TableID, long[]> GetVisibleInformationReferences()
|
||||
{
|
||||
var visible = mainNavigationView.objectListBox.ItemsSource;
|
||||
|
||||
@@ -218,14 +256,37 @@ namespace BeWo.View.Navigation
|
||||
UpdateCustomFilter();
|
||||
}
|
||||
|
||||
private CustomFilter CreateNewCustomFilter()
|
||||
|
||||
|
||||
private void BetreuungsartComboBox_EditValueChanged(object sender, EditValueChangedEventArgs e)
|
||||
{
|
||||
UpdateCustomFilter();
|
||||
}
|
||||
|
||||
private CustomFilter CreateNewCustomerFilter()
|
||||
{
|
||||
var filter = new CustomerNavigationFilter { CustomerFilter = ((CustomerFilterItem)supportConceptFilterComboBox.SelectedItem)?.CustomerFilter ?? CustomerFilterEnum.MyCustomer };
|
||||
|
||||
return filter;
|
||||
}
|
||||
|
||||
private void OnLoaded(object sender, RoutedEventArgs e)
|
||||
private CustomFilter CreateNewBetreuungsartFilter()
|
||||
{
|
||||
if (betreuungsartFilterComboBox.SelectedItems == null)
|
||||
return null;
|
||||
|
||||
var list = new List<ValueListEntryDC>();
|
||||
foreach (var item in betreuungsartFilterComboBox.SelectedItems)
|
||||
{
|
||||
list.Add(item as ValueListEntryDC);
|
||||
}
|
||||
|
||||
var filter = new ValueListFilter { SelectedValueListEntries = list, ValueListProperty = "CustomerCareTypes" };
|
||||
|
||||
return filter;
|
||||
}
|
||||
|
||||
private void OnLoaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
ServiceFacade.DoCustomerServiceAsync(s => s.ConvertToNewSubstitutionType(), n => this.Dispatch(delegate
|
||||
{
|
||||
@@ -237,8 +298,8 @@ namespace BeWo.View.Navigation
|
||||
|
||||
private void UpdateCustomFilter()
|
||||
{
|
||||
mainNavigationView.CustomFilter = CreateNewCustomFilter();
|
||||
}
|
||||
mainNavigationView.CustomFilters = new List<CustomFilter> { CreateNewCustomerFilter(), CreateNewBetreuungsartFilter() };
|
||||
}
|
||||
|
||||
private void ChkShowOnlyMyCustomers_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
50
BeWo/View/Navigation/Filter/ValueListFilter.cs
Normal file
50
BeWo/View/Navigation/Filter/ValueListFilter.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
|
||||
|
||||
namespace BeWo.View.Navigation.Filter
|
||||
{
|
||||
public class ValueListFilter : CustomFilter
|
||||
{
|
||||
public IList<ValueListEntryDC> SelectedValueListEntries { get; set; }
|
||||
public string ValueListProperty { get; set; }
|
||||
public override bool IsValid(IFilterableDC dc)
|
||||
{
|
||||
var val = GetPropertyValue(dc, ValueListProperty);
|
||||
|
||||
if (SelectedValueListEntries != null && SelectedValueListEntries.Count > 0)
|
||||
{
|
||||
if (val != null)
|
||||
{
|
||||
foreach (var cct in SelectedValueListEntries)
|
||||
{
|
||||
if (val.ToString().Contains(cct.DisplayName))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private object GetPropertyValue(object obj, string propertyName)
|
||||
{
|
||||
if (obj == null || string.IsNullOrWhiteSpace(propertyName))
|
||||
return null;
|
||||
|
||||
var prop = obj.GetType().GetProperty(
|
||||
propertyName,
|
||||
BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase
|
||||
);
|
||||
|
||||
return prop?.GetValue(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
<Binding />
|
||||
<Binding ElementName="textbox_search" Path="Text" />
|
||||
<Binding ElementName="chkShowArchived" Path="IsChecked" />
|
||||
<Binding Path="CustomFilter">
|
||||
<Binding Path="CustomFilters">
|
||||
<Binding.RelativeSource>
|
||||
<RelativeSource AncestorType="{x:Type localNavView:MainNavigationView}" Mode="FindAncestor" />
|
||||
</Binding.RelativeSource>
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
@@ -27,7 +28,7 @@ namespace BeWo.View.Navigation
|
||||
{
|
||||
public partial class MainNavigationView : INotifyPropertyChanged
|
||||
{
|
||||
internal CustomFilter _CustomFilter;
|
||||
internal IList<CustomFilter> _CustomFilters;
|
||||
|
||||
private readonly string _DetailsLoadLock = string.Empty;
|
||||
|
||||
@@ -164,18 +165,18 @@ namespace BeWo.View.Navigation
|
||||
}
|
||||
}
|
||||
|
||||
public CustomFilter CustomFilter
|
||||
public IList<CustomFilter> CustomFilters
|
||||
{
|
||||
get
|
||||
{
|
||||
return _CustomFilter;
|
||||
return _CustomFilters;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
_CustomFilter = value;
|
||||
_CustomFilters = value.Where(f => f != null).ToList();
|
||||
|
||||
FirePropertyChanged("CustomFilter");
|
||||
FirePropertyChanged("CustomFilters");
|
||||
|
||||
// if (listBoxMultiBinding.Bindings.Count == 4)
|
||||
// listBoxMultiBinding.Bindings.RemoveAt(3);
|
||||
|
||||
@@ -22,6 +22,8 @@ using System.Windows.Input;
|
||||
using BeWo.Core.Commands;
|
||||
using DevExpress.XtraBars.Docking;
|
||||
using BeWo.ViewModel.View.AI;
|
||||
using DevExpress.Xpf.Editors;
|
||||
using BS.Shared.Translation;
|
||||
|
||||
namespace BeWo.View.Navigation
|
||||
{
|
||||
@@ -31,8 +33,9 @@ namespace BeWo.View.Navigation
|
||||
public partial class PersonNavigationView
|
||||
{
|
||||
private readonly ComboBox filterComboBox;
|
||||
private readonly ComboBoxEdit functionFilterComboBox;
|
||||
|
||||
private IEnumerable<IFilterableDC> objectList;
|
||||
private IEnumerable<IFilterableDC> objectList;
|
||||
private IEnumerable<IFilterableDC> recentList;
|
||||
|
||||
public PersonNavigationView()
|
||||
@@ -85,7 +88,41 @@ namespace BeWo.View.Navigation
|
||||
mainNavigationView.sortPanel.Children.Insert(3, lbl);
|
||||
mainNavigationView.sortPanel.Children.Insert(4, filterComboBox);
|
||||
|
||||
UpdateCustomFilter();
|
||||
|
||||
functionFilterComboBox = new ComboBoxEdit();
|
||||
functionFilterComboBox.FontSize = 12;
|
||||
functionFilterComboBox.Margin = new Thickness(10, 0, 0, 0);
|
||||
functionFilterComboBox.Width = 150;
|
||||
functionFilterComboBox.IsTextEditable = false;
|
||||
functionFilterComboBox.NullText = Translator.Translate("Nach Funktion filtern");
|
||||
functionFilterComboBox.ItemsSource = ServiceFacade.DoValueListServiceSync(s => s.GetAllValueListEntrysByType(ValueListEntryType.FunctionType));
|
||||
functionFilterComboBox.DisplayMember = "TypeDescription";
|
||||
functionFilterComboBox.StyleSettings = new CheckedComboBoxStyleSettings();
|
||||
functionFilterComboBox.EditValueChanged += FunctionComboBox_EditValueChanged;
|
||||
|
||||
//< dxe:ComboBoxEdit x:Name = "checkedComboBox"
|
||||
// NullText = "Select categories"
|
||||
// IsTextEditable = "False"
|
||||
// ItemsSource = "{Binding Categories}"
|
||||
// EditValue = "{Binding SelectedCategories}"
|
||||
// DisplayMember = "CategoryName"
|
||||
// ShowCustomItems = "True" >
|
||||
// < dxe:ComboBoxEdit.StyleSettings >
|
||||
// < dxe:CheckedComboBoxStyleSettings />
|
||||
// </ dxe:ComboBoxEdit.StyleSettings >
|
||||
// </ dxe:ComboBoxEdit >
|
||||
|
||||
lbl = new TextBlock
|
||||
{
|
||||
Text = Translator.Translate("Funktion:"),
|
||||
FontSize = 12,
|
||||
Margin = new Thickness(8, 2, -3, 0)
|
||||
};
|
||||
|
||||
mainNavigationView.sortPanel.Children.Insert(5, lbl);
|
||||
mainNavigationView.sortPanel.Children.Insert(6, functionFilterComboBox);
|
||||
|
||||
UpdateCustomFilter();
|
||||
}
|
||||
|
||||
public Dictionary<TableID, long[]> GetVisibleInformationReferences()
|
||||
@@ -135,12 +172,33 @@ namespace BeWo.View.Navigation
|
||||
UpdateCustomFilter();
|
||||
}
|
||||
|
||||
private void UpdateCustomFilter()
|
||||
{
|
||||
mainNavigationView.CustomFilter = CreateNewPersonFilter();
|
||||
}
|
||||
private void FunctionComboBox_EditValueChanged(object sender, EditValueChangedEventArgs e)
|
||||
{
|
||||
UpdateCustomFilter();
|
||||
}
|
||||
|
||||
private PersonNavigationFilter CreateNewPersonFilter()
|
||||
private void UpdateCustomFilter()
|
||||
{
|
||||
mainNavigationView.CustomFilters = new List<CustomFilter> { CreateNewPersonFilter(), CreateNewFunctionFilter() };
|
||||
}
|
||||
|
||||
private CustomFilter CreateNewFunctionFilter()
|
||||
{
|
||||
if (functionFilterComboBox.SelectedItems == null)
|
||||
return null;
|
||||
|
||||
var list = new List<ValueListEntryDC>();
|
||||
foreach (var item in functionFilterComboBox.SelectedItems)
|
||||
{
|
||||
list.Add(item as ValueListEntryDC);
|
||||
}
|
||||
|
||||
var filter = new ValueListFilter { SelectedValueListEntries = list, ValueListProperty = "Function" };
|
||||
|
||||
return filter;
|
||||
}
|
||||
|
||||
private PersonNavigationFilter CreateNewPersonFilter()
|
||||
{
|
||||
var filter = new PersonNavigationFilter { PersonFilter = ((PersonFilterItem)filterComboBox.SelectedItem)?.Filter ?? PersonFilterEnum.ContactPersons };
|
||||
|
||||
|
||||
@@ -283,9 +283,8 @@ namespace BeWo.View.Navigation
|
||||
|
||||
private void UpdateCustomFilter()
|
||||
{
|
||||
this.mainNavigationView.CustomFilter = this.CreateNewCustomFilter();
|
||||
mainNavigationView.CustomFilters = new List<CustomFilter> { CreateNewCustomFilter() };
|
||||
}
|
||||
|
||||
|
||||
private bool mainNavigationView_ArchiveObject(IFilterableDC obj)
|
||||
{
|
||||
|
||||
@@ -23,9 +23,6 @@
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
|
||||
|
||||
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
@@ -46,20 +43,34 @@
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Label Content="Jahr:" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" />
|
||||
<ComboBox Grid.Column="1" Grid.Row="0" Margin="3" Height="23" Name="combobox_year" />
|
||||
<!--<Label Content="Jahr:" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" Visibility="Collapsed"/>
|
||||
<ComboBox Grid.Column="1" Grid.Row="0" Margin="3" Height="23" Name="combobox_year" Visibility="Collapsed"/>-->
|
||||
|
||||
<Label x:Name="lblCostcenter" Content="{markup:Translate Kostenträger:}" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" />
|
||||
<uc:PopUpEdit Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="1"
|
||||
IsReadOnly="True" x:Name="popupedit_costcenter" DeleteButtonVisibility="Visible" DeleteClick="popupedit_organisation_DeleteClick" PopUpClick="popupedit_costcenter_PopUpClick" HorizontalAlignment="Left" Width="200" HorizontalContentAlignment="Left" Height="24" Margin="3" />
|
||||
IsReadOnly="True" x:Name="popupedit_costcenter" DeleteButtonVisibility="Visible" DeleteClick="popupedit_organisation_DeleteClick" PopUpClick="popupedit_costcenter_PopUpClick" HorizontalAlignment="Left" Width="230" HorizontalContentAlignment="Left" Height="24" Margin="3" />
|
||||
|
||||
<Label Content="Team:" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="2" VerticalAlignment="Center" />
|
||||
<uc:PopUpEdit Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="2" DeleteClick="popupedit_team_DeleteClick"
|
||||
IsReadOnly="True" x:Name="popupedit_team" DeleteButtonVisibility="Visible" PopUpClick="popupedit_team_PopUpClick"
|
||||
HorizontalAlignment="Left" Width="200" HorizontalContentAlignment="Left" Height="24" Margin="3" />
|
||||
HorizontalAlignment="Left" Width="230" HorizontalContentAlignment="Left" Height="24" Margin="3" />
|
||||
|
||||
<Label Content="Betreuungsart:" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="3" VerticalAlignment="Center" />
|
||||
<uc:NullItemComboBox Grid.Column="1" Grid.Row="3" Margin="3" Height="23" Name="combobox_customercaretype" />
|
||||
<uc:NullItemComboBox Grid.Column="1" Grid.Row="3" Margin="3" Height="23" Name="combobox_customercaretype" />
|
||||
|
||||
<CheckBox Grid.Column="2" Grid.Row="0" Margin="10,3,3,3" x:Name="CheckBoxStichtag" IsChecked="True" VerticalAlignment="Center" VerticalContentAlignment="Center" Content="{markup:Translate Stichtagsbezogen auswerten}" Visibility="Visible" ToolTip="{markup:Translate Bei stichtagsbezogenen Auswertungen werden nur Klienten gezählt\, die genau an dem Stichtag z.B. 31.12. des ausgewerteten Jahres einen laufenden Hilfeplan hatten.}" />
|
||||
<CheckBox Grid.Column="2" Grid.Row="1" Margin="10,3,3,3" x:Name="CheckBoxNurBewilligt" IsChecked="True" VerticalAlignment="Center" VerticalContentAlignment="Center" Content="{markup:Translate Nur bewilligte Hilfepläne berücksichtigen}" Visibility="Visible" />
|
||||
|
||||
<Label Content="Zeitraum von" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" />
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="1">
|
||||
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" Grid.Column="1" Grid.Row="2" x:Name="datePickerStartDate" Width="100" HorizontalAlignment="Left" Margin="3,0,0,0" />
|
||||
<Label Content="bis" Grid.Column="2" Grid.Row="2" VerticalAlignment="Center" />
|
||||
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" Grid.Column="3" Grid.Row="2" x:Name="datePickerEndDate" HorizontalAlignment="Left" Width="100" Margin="3,0,0,0" />
|
||||
|
||||
</StackPanel>
|
||||
|
||||
|
||||
|
||||
|
||||
<Button x:Name="button_generate" Grid.Column="1" Grid.Row="4" Content="Aktualisieren" Click="button_generate_Click" Height="24" HorizontalAlignment="Right" Width="90" Margin="3" />
|
||||
|
||||
|
||||
@@ -28,7 +28,10 @@ namespace BeWo.View.Report.AnnualReport
|
||||
{
|
||||
this.InitializeComponent();
|
||||
|
||||
InitDateCombos();
|
||||
//InitDateCombos();
|
||||
datePickerStartDate.DateTime = new DateTime(DateTime.Now.Year - 1, 1, 1);
|
||||
datePickerEndDate.DateTime = new DateTime(DateTime.Now.Year - 1, 12, 31);
|
||||
|
||||
InitCustomerCareTypeCombo();
|
||||
|
||||
//linkPdfExport.NavigateUri = new Uri("http://www.bewoplaner.de");
|
||||
@@ -51,18 +54,18 @@ namespace BeWo.View.Report.AnnualReport
|
||||
|
||||
}
|
||||
|
||||
private void InitDateCombos()
|
||||
{
|
||||
var years = new List<int>();
|
||||
for (int i = 0; i <= 10; i++)
|
||||
{
|
||||
years.Add(DateTime.Now.Year - i);
|
||||
}
|
||||
//private void InitDateCombos()
|
||||
//{
|
||||
// var years = new List<int>();
|
||||
// for (int i = 0; i <= 10; i++)
|
||||
// {
|
||||
// years.Add(DateTime.Now.Year - i);
|
||||
// }
|
||||
|
||||
this.combobox_year.ItemsSource = years;
|
||||
this.combobox_year.SelectedItem = DateTime.Now.Year - 1;
|
||||
// this.combobox_year.ItemsSource = years;
|
||||
// this.combobox_year.SelectedItem = DateTime.Now.Year - 1;
|
||||
|
||||
}
|
||||
//}
|
||||
|
||||
private void CreateReportView(List<AnnualReportDC> reportList )
|
||||
{
|
||||
@@ -120,53 +123,61 @@ namespace BeWo.View.Report.AnnualReport
|
||||
|
||||
private void button_generate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//int year = DateTime.Now.Year - 1;
|
||||
|
||||
|
||||
|
||||
int year = DateTime.Now.Year - 1;
|
||||
//if (combobox_year.SelectedItem != null)
|
||||
//{
|
||||
|
||||
// year = (int)combobox_year.SelectedItem;
|
||||
|
||||
if (combobox_year.SelectedItem != null)
|
||||
{
|
||||
//}
|
||||
|
||||
year = (int)combobox_year.SelectedItem;
|
||||
DateTime startDate = datePickerStartDate.DateTime;
|
||||
DateTime endDate = datePickerEndDate.DateTime;
|
||||
|
||||
}
|
||||
long? costbearerOid = null;
|
||||
long? teamOid = null;
|
||||
long? customerCareTypeOid = null;
|
||||
|
||||
DateTime startDate = new DateTime(year, 1, 1);
|
||||
if (_SelectedOrganisation != null)
|
||||
costbearerOid = _SelectedOrganisation.CostBearerOid;
|
||||
|
||||
long? costbearerOid = null;
|
||||
long? teamOid = null;
|
||||
long? customerCareTypeOid = null;
|
||||
if (_SelectedTeam != null)
|
||||
teamOid = _SelectedTeam.TeamOid;
|
||||
|
||||
if (_SelectedOrganisation != null)
|
||||
costbearerOid = _SelectedOrganisation.CostBearerOid;
|
||||
ValueListEntryDC en = combobox_customercaretype.SelectedItem as ValueListEntryDC;
|
||||
|
||||
if (_SelectedTeam != null)
|
||||
teamOid = _SelectedTeam.TeamOid;
|
||||
if (combobox_customercaretype.SelectedItem == null || en.TypeDescription.Equals("")) { }
|
||||
else
|
||||
if (combobox_customercaretype.SelectedItem != null)
|
||||
{
|
||||
ValueListEntryDC entry = combobox_customercaretype.SelectedItem as ValueListEntryDC;
|
||||
if (entry != null)
|
||||
customerCareTypeOid = entry.ValueListEntryOid;
|
||||
|
||||
ValueListEntryDC en = combobox_customercaretype.SelectedItem as ValueListEntryDC;
|
||||
}
|
||||
var config = new AnnualReportConfigDC
|
||||
{
|
||||
CostbearerOid = costbearerOid,
|
||||
TeamOid = teamOid,
|
||||
CustomerCareTypeValueListEntryOid = customerCareTypeOid,
|
||||
StartDate = startDate,
|
||||
EndDate = endDate,
|
||||
ShowOnlyApprovedSupportConcepts = CheckBoxNurBewilligt.IsChecked ?? true,
|
||||
StichtagsbezogenAuswerten = CheckBoxStichtag.IsChecked ?? true
|
||||
|
||||
if (combobox_customercaretype.SelectedItem == null || en.TypeDescription.Equals("") ) { }
|
||||
else
|
||||
if (combobox_customercaretype.SelectedItem != null)
|
||||
{
|
||||
ValueListEntryDC entry = combobox_customercaretype.SelectedItem as ValueListEntryDC;
|
||||
if (entry != null)
|
||||
customerCareTypeOid = entry.ValueListEntryOid;
|
||||
};
|
||||
|
||||
}
|
||||
ServiceFacade.DoAnalysisServiceAsync(s => s.CreateAnnualReport2(config), r => { this.Dispatch(delegate { this.CreateReportView(r); }); });
|
||||
|
||||
this.UpdatePDFExportUri(string.Empty);
|
||||
|
||||
ServiceFacade.DoAnalysisServiceAsync(s => s.CreateAnnualReport(costbearerOid, teamOid, customerCareTypeOid, startDate, startDate.AddYears(1)), r => { this.Dispatch(delegate { this.CreateReportView(r); }); });
|
||||
|
||||
this.UpdatePDFExportUri(string.Empty);
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void linkPdfExport_RequestNavigate(object sender, RequestNavigateEventArgs e)
|
||||
{
|
||||
string url = String.Format("{0}/ReportView.aspx?y={1}", BeWoApp.SiteOfOrigin, combobox_year.Text);
|
||||
string url = String.Format("{0}/ReportView.aspx?start={1:dd.MM.yyyy}&end={2:dd.MM.yyyy}", BeWoApp.SiteOfOrigin, datePickerStartDate.DateTime, datePickerEndDate.DateTime);
|
||||
|
||||
|
||||
if (_SelectedOrganisation != null)
|
||||
@@ -178,7 +189,8 @@ namespace BeWo.View.Report.AnnualReport
|
||||
{
|
||||
url += "&t=" + _SelectedTeam.TeamOid;
|
||||
}
|
||||
|
||||
url += String.Format("&appr={0}", CheckBoxNurBewilligt.IsChecked == true ? "1" : "0");
|
||||
url += String.Format("&stichtag={0}", CheckBoxStichtag.IsChecked == true ? "1" : "0");
|
||||
|
||||
ValueListEntryDC en = combobox_customercaretype.SelectedItem as ValueListEntryDC;
|
||||
|
||||
|
||||
@@ -580,7 +580,7 @@ namespace BeWo.View.Report.FLSReport
|
||||
}
|
||||
else
|
||||
{
|
||||
date += String.Format(" {0:0} min.", record.Start, record.End, record.RoundedDuration);
|
||||
date += String.Format(" {0:0} min.", record.RoundedDuration);
|
||||
}
|
||||
|
||||
String group = "";
|
||||
|
||||
54
BeWo/ViewModel/AiPromptbausteinRoutineStepVM.cs
Normal file
54
BeWo/ViewModel/AiPromptbausteinRoutineStepVM.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Feature.AI;
|
||||
|
||||
namespace BeWo.ViewModel
|
||||
{
|
||||
public class AiPromptbausteinRoutineStepVM : AbstractDCMapperVM<AiPromptbausteinRoutineStepDC>
|
||||
{
|
||||
private int _Position;
|
||||
private AiPromptbausteinPromptDC _PromptReference;
|
||||
private long _ReferenceVersion;
|
||||
|
||||
public AiPromptbausteinRoutineStepVM(AiPromptbausteinRoutineStepDC dc) : base(dc, dc.Oid)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public int Position
|
||||
{
|
||||
get => _Position;
|
||||
set => SetProperty(ref _Position, value, nameof(Position), () => DataContract.Position);
|
||||
}
|
||||
|
||||
public AiPromptbausteinPromptDC PromptReference
|
||||
{
|
||||
get => _PromptReference;
|
||||
set => SetProperty(ref _PromptReference, value, nameof(PromptReference), () => DataContract.PromptReference);
|
||||
}
|
||||
|
||||
public long ReferenceVersion
|
||||
{
|
||||
get => _ReferenceVersion;
|
||||
set => SetProperty(ref _ReferenceVersion, value, nameof(ReferenceVersion), () => DataContract.ReferenceVersion);
|
||||
}
|
||||
|
||||
protected override void InitByDataContract(AiPromptbausteinRoutineStepDC pDataContract)
|
||||
{
|
||||
_Position = pDataContract.Position;
|
||||
_PromptReference = pDataContract.PromptReference;
|
||||
_ReferenceVersion = pDataContract.ReferenceVersion;
|
||||
}
|
||||
|
||||
protected override AiPromptbausteinRoutineStepDC MapToDataContract(AiPromptbausteinRoutineStepDC pDataContract, bool doCommit)
|
||||
{
|
||||
pDataContract.Position = _Position;
|
||||
pDataContract.PromptReference = _PromptReference;
|
||||
pDataContract.ReferenceVersion = _ReferenceVersion;
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
}
|
||||
}
|
||||
120
BeWo/ViewModel/AiPromptbausteinRoutineVM.cs
Normal file
120
BeWo/ViewModel/AiPromptbausteinRoutineVM.cs
Normal file
@@ -0,0 +1,120 @@
|
||||
using System;
|
||||
using BeWo.ViewModel.ListViewModel;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.DataContracts.Feature.AI;
|
||||
|
||||
namespace BeWo.ViewModel
|
||||
{
|
||||
public class AiPromptbausteinRoutineVM : AbstractDCMapperVM<AiPromptbausteinRoutineDC>
|
||||
{
|
||||
private string _Title;
|
||||
private string _Description;
|
||||
private long? _ParentFolderOid;
|
||||
private CompactEmployeeDC _Creator;
|
||||
private bool _IsPublic;
|
||||
private int _Position;
|
||||
private bool _IsFavorite;
|
||||
private AiActionType _ActionType;
|
||||
private bool _CanEdit;
|
||||
private AiPromptbausteinRoutineStepListVM _Steps;
|
||||
|
||||
public AiPromptbausteinRoutineVM(AiPromptbausteinRoutineDC dc) : base(dc, dc.Oid)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public string Title
|
||||
{
|
||||
get => _Title;
|
||||
set => SetProperty(ref _Title, value, nameof(Title), () => DataContract.Title);
|
||||
}
|
||||
|
||||
public string Description
|
||||
{
|
||||
get => _Description;
|
||||
set => SetProperty(ref _Description, value, nameof(Description), () => DataContract.Description);
|
||||
}
|
||||
|
||||
public long? ParentFolderOid
|
||||
{
|
||||
get => _ParentFolderOid;
|
||||
set => SetProperty(ref _ParentFolderOid, value, nameof(ParentFolderOid), () => DataContract.ParentFolderOid);
|
||||
}
|
||||
|
||||
public CompactEmployeeDC Creator
|
||||
{
|
||||
get => _Creator;
|
||||
set => SetProperty(ref _Creator, value, nameof(Creator), () => DataContract.Creator);
|
||||
}
|
||||
|
||||
public bool IsPublic
|
||||
{
|
||||
get => _IsPublic;
|
||||
set => SetProperty(ref _IsPublic, value, nameof(IsPublic), () => DataContract.IsPublic);
|
||||
}
|
||||
|
||||
public int Position
|
||||
{
|
||||
get => _Position;
|
||||
set => SetProperty(ref _Position, value, nameof(Position), () => DataContract.Position);
|
||||
}
|
||||
|
||||
public bool IsFavorite
|
||||
{
|
||||
get => _IsFavorite;
|
||||
set => SetProperty(ref _IsFavorite, value, nameof(IsFavorite), () => DataContract.IsFavorite);
|
||||
}
|
||||
|
||||
public AiActionType ActionType
|
||||
{
|
||||
get => _ActionType;
|
||||
set => SetProperty(ref _ActionType, value, nameof(ActionType), () => DataContract.ActionType);
|
||||
}
|
||||
|
||||
public bool CanEdit
|
||||
{
|
||||
get => _CanEdit;
|
||||
set => SetProperty(ref _CanEdit, value, nameof(CanEdit), () => DataContract.CanEdit);
|
||||
}
|
||||
|
||||
public AiPromptbausteinRoutineStepListVM Steps
|
||||
{
|
||||
get => _Steps;
|
||||
set => SetProperty(ref _Steps, value, nameof(Steps));
|
||||
}
|
||||
|
||||
protected override void InitByDataContract(AiPromptbausteinRoutineDC pDataContract)
|
||||
{
|
||||
_Title = pDataContract.Title;
|
||||
_Description = pDataContract.Description;
|
||||
_ParentFolderOid = pDataContract.ParentFolderOid;
|
||||
_Creator = pDataContract.Creator;
|
||||
_IsPublic = pDataContract.IsPublic;
|
||||
_Position = pDataContract.Position;
|
||||
_IsFavorite = pDataContract.IsFavorite;
|
||||
_ActionType = pDataContract.ActionType;
|
||||
_CanEdit = pDataContract.CanEdit;
|
||||
|
||||
_Steps = new AiPromptbausteinRoutineStepListVM(pDataContract.Steps);
|
||||
}
|
||||
|
||||
protected override AiPromptbausteinRoutineDC MapToDataContract(AiPromptbausteinRoutineDC pDataContract, bool doCommit)
|
||||
{
|
||||
pDataContract.Title = _Title;
|
||||
pDataContract.Description = _Description;
|
||||
pDataContract.ParentFolderOid = _ParentFolderOid;
|
||||
pDataContract.Creator = _Creator;
|
||||
pDataContract.IsPublic = _IsPublic;
|
||||
pDataContract.Position = _Position;
|
||||
pDataContract.IsFavorite = _IsFavorite;
|
||||
pDataContract.ActionType = _ActionType;
|
||||
pDataContract.CanEdit = _CanEdit;
|
||||
|
||||
pDataContract.Steps = _Steps.CopyToDCList(doCommit);
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ namespace BeWo.ViewModel
|
||||
private string _ShortcutKey;
|
||||
|
||||
private string _Sign;
|
||||
private string _Tooltip;
|
||||
|
||||
public AssessmentSheetValueVM(AssessmentSheetValueDC pDC) : base(pDC, pDC.AssessmentSheetValueOid == null)
|
||||
{
|
||||
@@ -112,6 +113,13 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public string Tooltip
|
||||
{
|
||||
get { return this._Tooltip; }
|
||||
|
||||
set { this._Tooltip = value; }
|
||||
}
|
||||
|
||||
public static int Compare(AssessmentSheetValueVM x, AssessmentSheetValueVM y)
|
||||
{
|
||||
if (x.Position.Equals(y.Position) && x.Description != null)
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace BeWo.ViewModel
|
||||
private long? _DocTreeItemOid;
|
||||
private long? _ParentOid;
|
||||
private string _Name;
|
||||
private string _SortName;
|
||||
private string _Tooltip;
|
||||
|
||||
public DocumentTreeItemVM(DocumentTreeItemDC dc) : base(dc, dc.DocTreeItemOid == null)
|
||||
@@ -54,6 +55,12 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public string SortName
|
||||
{
|
||||
get { return _SortName ?? _Name; }
|
||||
set { _SortName = value; }
|
||||
}
|
||||
|
||||
public string Description
|
||||
{
|
||||
get
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using BS.Shared.DataContracts.Feature.AI;
|
||||
|
||||
namespace BeWo.ViewModel.ListViewModel
|
||||
{
|
||||
public class AiPromptbausteinRoutineListVM : AbstractDCListMapperVM<AiPromptbausteinRoutineDC, AiPromptbausteinRoutineVM>
|
||||
{
|
||||
public AiPromptbausteinRoutineListVM(IEnumerable<AiPromptbausteinRoutineDC> pDataContracts = null) : base(pDataContracts)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using BS.Shared.DataContracts.Feature.AI;
|
||||
|
||||
namespace BeWo.ViewModel.ListViewModel
|
||||
{
|
||||
public class AiPromptbausteinRoutineStepListVM : AbstractDCListMapperVM<AiPromptbausteinRoutineStepDC, AiPromptbausteinRoutineStepVM>
|
||||
{
|
||||
public AiPromptbausteinRoutineStepListVM(IEnumerable<AiPromptbausteinRoutineStepDC> pDataContracts = null) : base(pDataContracts)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,7 @@ namespace BeWo.ViewModel.View.AI
|
||||
|
||||
private AiPromptbausteinFolderVM _SelectedFolder;
|
||||
private AiPromptbausteinPromptVM _SelectedPrompt;
|
||||
private AiPromptbausteinRoutineVM _SelectedRoutine;
|
||||
|
||||
private IBeWoWindowService WindowService { get; set; }
|
||||
|
||||
@@ -47,6 +48,11 @@ namespace BeWo.ViewModel.View.AI
|
||||
public DelegateCommand DeletePromptCommand { get; private set; }
|
||||
public DelegateCommand ChangeFavoritenStatePromptCommand { get; private set; }
|
||||
|
||||
public DelegateCommand OpenAddRoutineDialogCommand { get; private set; }
|
||||
public DelegateCommand OpenEditRoutineDialogCommand { get; private set; }
|
||||
public DelegateCommand DeleteRoutineCommand { get; private set; }
|
||||
public DelegateCommand ChangeFavoritenStateRoutineCommand { get; private set; }
|
||||
|
||||
public bool CanEditPromptbausteine { get; set; }
|
||||
public bool HasCopiedFolder => CopiedFolder is object;
|
||||
public bool HasCopiedPrompt => CopiedPrompt is object;
|
||||
@@ -84,6 +90,11 @@ namespace BeWo.ViewModel.View.AI
|
||||
OpenEditPromptDialogCommand = new DelegateCommand(OpenEditPromptDialog, canOpenEditPromptDialog, false);
|
||||
DeletePromptCommand = new DelegateCommand(OpenDeletePromptDialog, canOpenDeletePromptDialog, false);
|
||||
ChangeFavoritenStatePromptCommand = new DelegateCommand(ChangeFavoritenStatePrompt, canChangeFavoritenStatePrompt, false);
|
||||
|
||||
OpenAddRoutineDialogCommand = new DelegateCommand(OpenAddRoutineDialog, canOpenAddRoutineDialog, false);
|
||||
OpenEditRoutineDialogCommand = new DelegateCommand(OpenEditRoutineDialog, canOpenEditRoutineDialog, false);
|
||||
DeleteRoutineCommand = new DelegateCommand(OpenDeleteRoutineDialog, canOpenDeleteRoutineDialog, false);
|
||||
ChangeFavoritenStateRoutineCommand = new DelegateCommand(ChangeFavoritenStateRoutine, canChangeFavoritenStateRoutine, false);
|
||||
|
||||
CanEditPromptbausteine = BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
|
||||
}
|
||||
@@ -99,12 +110,7 @@ namespace BeWo.ViewModel.View.AI
|
||||
get => _SelectedFolder;
|
||||
set
|
||||
{
|
||||
if (value == _SelectedFolder)
|
||||
return;
|
||||
|
||||
_SelectedFolder = value;
|
||||
FirePropertyChanged(nameof(SelectedFolder));
|
||||
|
||||
SetProperty(ref _SelectedFolder, value, nameof(SelectedFolder));
|
||||
if (SelectedPrompt is object)
|
||||
{
|
||||
SelectedPrompt.IsSelected = false;
|
||||
@@ -117,11 +123,18 @@ namespace BeWo.ViewModel.View.AI
|
||||
get => _SelectedPrompt;
|
||||
set
|
||||
{
|
||||
_SelectedPrompt = value;
|
||||
FirePropertyChanged(nameof(SelectedPrompt));
|
||||
SetProperty(ref _SelectedPrompt, value, nameof(SelectedPrompt));
|
||||
SendCommand.RaiseCanExecuteChanged();
|
||||
}
|
||||
}
|
||||
public AiPromptbausteinRoutineVM SelectedRoutine
|
||||
{
|
||||
get => _SelectedRoutine;
|
||||
set
|
||||
{
|
||||
SetProperty(ref _SelectedRoutine, value, nameof(SelectedRoutine));
|
||||
}
|
||||
}
|
||||
public AiPromptbausteinFolderListVM Folders { get; private set; }
|
||||
public AiActionType LoadedActionType { get; set; }
|
||||
|
||||
@@ -206,6 +219,11 @@ namespace BeWo.ViewModel.View.AI
|
||||
PastePromptCommand?.RaiseCanExecuteChanged();
|
||||
DeletePromptCommand?.RaiseCanExecuteChanged();
|
||||
ChangeFavoritenStatePromptCommand?.RaiseCanExecuteChanged();
|
||||
|
||||
OpenAddRoutineDialogCommand?.RaiseCanExecuteChanged();
|
||||
OpenEditRoutineDialogCommand?.RaiseCanExecuteChanged();
|
||||
DeleteRoutineCommand?.RaiseCanExecuteChanged();
|
||||
ChangeFavoritenStateRoutineCommand?.RaiseCanExecuteChanged();
|
||||
}
|
||||
|
||||
// --- Folder Commands ---
|
||||
@@ -364,5 +382,29 @@ namespace BeWo.ViewModel.View.AI
|
||||
bool canOpenEditPromptDialog() => SelectedPrompt is object;
|
||||
bool canOpenDeletePromptDialog() => CanEditPromptbausteine && (SelectedPrompt?.CanEdit ?? false);
|
||||
bool canChangeFavoritenStatePrompt() => SelectedPrompt is object;
|
||||
|
||||
// --- Routine Commands
|
||||
|
||||
void OpenAddRoutineDialog()
|
||||
{
|
||||
|
||||
}
|
||||
void OpenEditRoutineDialog()
|
||||
{
|
||||
|
||||
}
|
||||
void OpenDeleteRoutineDialog()
|
||||
{
|
||||
|
||||
}
|
||||
void ChangeFavoritenStateRoutine()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool canOpenAddRoutineDialog() => CanEditPromptbausteine && (SelectedFolder?.CanAddPrompt ?? false);
|
||||
bool canOpenEditRoutineDialog() => SelectedRoutine is object;
|
||||
bool canOpenDeleteRoutineDialog() => CanEditPromptbausteine && (SelectedRoutine?.CanEdit ?? false);
|
||||
bool canChangeFavoritenStateRoutine() => SelectedRoutine is object;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -467,5 +467,29 @@ namespace BeWo.ViewModel.View.Administration
|
||||
{
|
||||
return SelectedPrompt is object;
|
||||
}
|
||||
|
||||
// --- Routine Commands
|
||||
|
||||
void OpenAddRoutineDialog()
|
||||
{
|
||||
|
||||
}
|
||||
void OpenEditRoutineDialog()
|
||||
{
|
||||
|
||||
}
|
||||
void OpenDeleteRoutineDialog()
|
||||
{
|
||||
|
||||
}
|
||||
void ChangeFavoritenStateRoutine()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//bool canOpenAddRoutineDialog() => CanEditPromptbausteine && (SelectedFolder?.CanAddPrompt ?? false);
|
||||
//bool canOpenEditRoutineDialog() => SelectedRoutine is object;
|
||||
//bool canOpenDeleteRoutineDialog() => CanEditPromptbausteine && (SelectedRoutine?.CanEdit ?? false);
|
||||
//bool canChangeFavoritenStateRoutine() => SelectedRoutine is object;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.31729.503
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.14.37111.16 d17.14
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client", "Client", "{E7543C39-A44C-40C9-82C9-E7FAA2D9A852}"
|
||||
EndProject
|
||||
@@ -986,6 +986,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CaritasVerbandDuerenJuelich
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SamanthaRiegerIntegrationspraxis", "ReportImp\SamanthaRiegerIntegrationspraxis\SamanthaRiegerIntegrationspraxis.csproj", "{BD841D90-CD90-44B6-8B3C-5C7D05225842}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AspBegleitungNrw", "ReportImp\AspBegleitungNrw\AspBegleitungNrw.csproj", "{4D48D376-DCAE-4E22-82E3-36692B0FAE29}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|.NET = Debug|.NET
|
||||
@@ -12085,6 +12087,30 @@ Global
|
||||
{BD841D90-CD90-44B6-8B3C-5C7D05225842}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{BD841D90-CD90-44B6-8B3C-5C7D05225842}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BD841D90-CD90-44B6-8B3C-5C7D05225842}.Release|x86.Build.0 = Release|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.DebugRemote|.NET.Build.0 = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.DebugRemote|x86.Build.0 = Debug|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Release|.NET.Build.0 = Release|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -12572,6 +12598,7 @@ Global
|
||||
{15F9EE65-0B7F-49B6-91A7-5F606960AF4A} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{23696062-2534-49E5-B88D-E182F2399923} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{BD841D90-CD90-44B6-8B3C-5C7D05225842} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{4D48D376-DCAE-4E22-82E3-36692B0FAE29} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using BeWo.Data.Access;
|
||||
using Antlr.Runtime.Tree;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.AI;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BeWo.Service.Plugins;
|
||||
using BeWo.View.Navigation.Filter;
|
||||
@@ -32,7 +34,6 @@ using FormCollection = System.Web.Mvc.FormCollection;
|
||||
using GoalRating = BeWoPlanerMobil.Util.GoalRating;
|
||||
using Image = System.Drawing.Image;
|
||||
using ServiceRecordDC = BS.Shared.DataContracts.ServiceRecordDC;
|
||||
using BeWo.Service.AI;
|
||||
|
||||
/*
|
||||
* ToDo: Bug, wenn man auf "bearbeiten" bei einem Eintrag klickt, wird die Leistung nicht geladen
|
||||
@@ -382,6 +383,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.SelectedZeitraum = new NullableDateTimeSpan(Model.LastSelectedServiceRecordMonth.Date.GetFirstOfMonth(), Model.LastSelectedServiceRecordMonth.Date.GetLastOfMonth());
|
||||
}
|
||||
|
||||
Model.AiVoiceMode = UserSettingsUtils.GetSettingValueAsInteger(userSettings, SettingsKeys.AiVoiceMode);
|
||||
|
||||
CalculateSelectedDayCount(Model.LastSelectedServiceRecordTimeIntervalDays, Model.LastSelectedServiceRecordMonth, Model.SelectedZeitraum?.StartDate, Model.SelectedZeitraum?.EndDate, null);
|
||||
|
||||
var customerFilter = MobileUserSettingsUtils.GetSettingValueAsEnum(userSettings, SettingsKeys.CustomerFilterInZeiterfassung, CustomerFilterEnum.MyCustomer);
|
||||
@@ -3562,35 +3565,65 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return View("Main", Model);
|
||||
}
|
||||
|
||||
|
||||
[HttpPost]
|
||||
[Authorize]
|
||||
public ActionResult SetAiVoiceMode(string mode)
|
||||
{
|
||||
SkipModelInitialization = true;
|
||||
Model.AiVoiceMode = mode == "1" ? 1 : 0;
|
||||
|
||||
UpdateUserSettingsWithoutReload(SettingsKeys.AiVoiceMode, Model.AiVoiceMode.ToString());
|
||||
|
||||
return new HttpStatusCodeResult(200);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ermittelt die externe URL, die beim Klick auf den Test-Button aufgerufen werden soll.
|
||||
/// Die callbackUrl wird als Parameter mitgegeben, damit das externe System sie verwenden kann.
|
||||
/// Ermittelt die externe URL, die beim Klick auf den AI-Voice-Button aufgerufen werden soll.
|
||||
/// Die callId wird server-seitig als GUID erzeugt (kryptographisch sicher) und zusammen
|
||||
/// mit der URL an den Client zurückgegeben.
|
||||
/// </summary>
|
||||
[HttpGet]
|
||||
[Authorize]
|
||||
public JsonResult GetExternalCallUrl(string callId, string callbackUrl)
|
||||
public JsonResult GetExternalCallUrl()
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
SkipModelInitialization = true;
|
||||
// CallId server-seitig erzeugen – Guid.NewGuid() ist kryptographisch sicher (128-Bit)
|
||||
// In der Session speichern – der Browser bekommt sie nie zu sehen
|
||||
var callId = Guid.NewGuid().ToString("N");
|
||||
Session["ExternalCallId"] = callId;
|
||||
|
||||
// CallbackUrl server-seitig zusammenbauen
|
||||
var callbackUrl = Url.Action("ExternalCallCallback", "Main", new { callId }, Request.Url.Scheme);
|
||||
|
||||
var externalUrl = "";
|
||||
|
||||
if (Mandator?.OwnChatCode != null)
|
||||
{
|
||||
var ts = new TranscriptionService();
|
||||
var avd = ts.InitTranskription(MobileSessionFacade.Tenant, false);
|
||||
var sendOwnChatMessage = Model.AiVoiceMode == 0 ? false : true;
|
||||
|
||||
externalUrl = avd.OwnChatUrl;
|
||||
var avd = ts.InitTranskription(MobileSessionFacade.Tenant, sendOwnChatMessage);
|
||||
|
||||
if (!string.IsNullOrEmpty(callId) && !string.IsNullOrEmpty(avd.Token))
|
||||
if (!sendOwnChatMessage)
|
||||
{
|
||||
externalUrl = avd.OwnChatUrl;
|
||||
}
|
||||
else
|
||||
{
|
||||
avd.OwnChatUrl = null;
|
||||
}
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(avd.Token))
|
||||
{
|
||||
_externalCallTokens[callId] = ts.MapAiVoiceDataDC(avd);
|
||||
}
|
||||
|
||||
Log.Info($"GetExternalCallUrl: {callId}. Url = {externalUrl}, Transkription startet!");
|
||||
//var externalBaseUrl = "https://example.com/external-service";
|
||||
//var externalUrl = externalBaseUrl
|
||||
// + "?callbackUrl=" + Uri.EscapeDataString(callbackUrl)
|
||||
// + "&callId=" + Uri.EscapeDataString(callId);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3645,12 +3678,15 @@ namespace BeWoPlanerMobil.Controllers
|
||||
/// </summary>
|
||||
[HttpGet]
|
||||
[Authorize]
|
||||
public JsonResult CheckExternalCallStatus(string callId)
|
||||
public JsonResult CheckExternalCallStatus()
|
||||
{
|
||||
var callId = Session["ExternalCallId"] as string;
|
||||
|
||||
if(!string.IsNullOrEmpty(callId) && _externalCallResults.TryRemove(callId, out var data))
|
||||
{
|
||||
_externalCallStatusMessages.TryRemove(callId, out _);
|
||||
_externalCallTokens.TryRemove(callId, out _);
|
||||
Session.Remove("ExternalCallId");
|
||||
return Json(new { completed = true, data }, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
@@ -3666,8 +3702,15 @@ namespace BeWoPlanerMobil.Controllers
|
||||
avd = ts.GetTranskription(avd);
|
||||
|
||||
statusMessage = avd.StatusMessage;
|
||||
|
||||
|
||||
if (!String.IsNullOrEmpty(avd.OwnChatUrl)) // Wenn nicht null, dann wurde die Spracheingabe über direkt Link gestartet
|
||||
{
|
||||
if (!String.IsNullOrEmpty(statusMessage) && statusMessage.Contains("klicken Sie auf den Link"))
|
||||
{
|
||||
statusMessage = "Warte auf Beendigung der Aufzeichnung in ownChat...\r\nHINWEIS: Wenn ownChat auf diesem Gerät nicht installiert ist, ist die Spracheingabe nicht möglich. In diesem Fall brechen Sie den Vorgang bitte ab. Wenn Sie ownChat auf einem anderen Gerät nutzen, können Sie in den Einstellungen auch in den Push-Modus wechseln.";
|
||||
}
|
||||
}
|
||||
|
||||
if (!String.IsNullOrEmpty(avd.TranskriptionText))
|
||||
{
|
||||
statusMessage = "Transkription erfolgreich durchgeführt";
|
||||
@@ -3704,13 +3747,15 @@ namespace BeWoPlanerMobil.Controllers
|
||||
/// </summary>
|
||||
[HttpPost]
|
||||
[Authorize]
|
||||
public ActionResult CancelExternalCall(string callId)
|
||||
public ActionResult CancelExternalCall()
|
||||
{
|
||||
var callId = Session["ExternalCallId"] as string;
|
||||
if(!string.IsNullOrEmpty(callId))
|
||||
{
|
||||
_externalCallResults.TryRemove(callId, out _);
|
||||
_externalCallStatusMessages.TryRemove(callId, out _);
|
||||
_externalCallTokens.TryRemove(callId, out _);
|
||||
Session.Remove("ExternalCallId");
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(200);
|
||||
|
||||
@@ -9,6 +9,8 @@ namespace BeWoPlanerMobil.Models
|
||||
[Serializable]
|
||||
public abstract class BaseSessionModel
|
||||
{
|
||||
public int AiVoiceMode { get; set; }
|
||||
|
||||
public Dictionary<string, bool> Collapsibles2IsShown { get; set; } = new Dictionary<string, bool>();
|
||||
|
||||
public virtual void ResetValues()
|
||||
|
||||
@@ -820,6 +820,8 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
public bool IsShowingDurationInHours { get; set; }
|
||||
|
||||
public int AiVoiceMode { get { return MainSessionModel.AiVoiceMode; } set { MainSessionModel.AiVoiceMode = value; } } // 0 = direct, 1 = Link senden
|
||||
|
||||
public string SelectedDurationUnit => IsShowingDurationInHours ? "Stunden" : "Minuten";
|
||||
|
||||
public DateTime LastSelectedServiceRecordMonth { get; set; }
|
||||
|
||||
@@ -170,34 +170,35 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
var _externalCallPollingTimer = null;
|
||||
var _externalCallId = null;
|
||||
|
||||
// Zuletzt verwendeter Modus – wird aus der Session initialisiert
|
||||
var _aiVoiceMode = '@Model.AiVoiceMode';
|
||||
|
||||
function startExternalCall() {
|
||||
// Eindeutige ID für diesen Aufruf generieren
|
||||
_externalCallId = 'ext-' + Date.now() + '-' + Math.random().toString(36).substr(2, 9);
|
||||
// Direkt starten mit dem gespeicherten Modus, keine Moduswahl anzeigen
|
||||
if (_aiVoiceMode === '1') {
|
||||
$('#external-call-status-text').text('Um die Aufnahme zu starten, klicken Sie auf den Link, den wir an Ihren ownChat Account gesendet haben.');
|
||||
}
|
||||
else {
|
||||
$('#external-call-status-text').text('Bitte wechseln Sie zu ownChat um die Aufnahme zu starten.\nHINWEIS: Wenn ownChat auf diesem Gerät nicht installiert ist, ist die Spracheingabe nicht möglich.');
|
||||
}
|
||||
document.getElementById('external-call-overlay').style.display = 'flex';
|
||||
|
||||
// Callback-URL für das externe System
|
||||
var callbackUrl = window.location.origin + '@Url.Action("ExternalCallCallback", "Main")' + '?callId=' + encodeURIComponent(_externalCallId);
|
||||
|
||||
// Externe URL vom Server ermitteln lassen
|
||||
$.ajax({
|
||||
url: '@Url.Action("GetExternalCallUrl", "Main")',
|
||||
data: { callId: _externalCallId, callbackUrl: callbackUrl },
|
||||
type: 'GET',
|
||||
success: function(result) {
|
||||
if (result && result.success && result.url) {
|
||||
// Overlay anzeigen und Statustext zurücksetzen
|
||||
$('#external-call-status-text').text('Um die Aufnahme zu starten, klicken Sie auf den Link, den wir an Ihren ownChat Account gesendet haben.');
|
||||
document.getElementById('external-call-overlay').style.display = 'flex';
|
||||
|
||||
// Externe URL in neuem Tab/Fenster öffnen
|
||||
window.open(result.url, '_blank');
|
||||
|
||||
if (result && result.success) {
|
||||
// Custom URL Scheme (ownchat://) per temporärem Anchor-Element öffnen –
|
||||
if (result.url && result.url.length > 0) {
|
||||
var $a = $('<a>').attr('href', result.url).css('display', 'none').appendTo('body');
|
||||
$a[0].click();
|
||||
$a.remove();
|
||||
}
|
||||
// Polling starten - prüft regelmäßig ob der Callback aufgerufen wurde
|
||||
_externalCallPollingTimer = setInterval(function() {
|
||||
$.ajax({
|
||||
url: '@Url.Action("CheckExternalCallStatus", "Main")',
|
||||
data: { callId: _externalCallId },
|
||||
type: 'GET',
|
||||
success: function(pollResult) {
|
||||
if (pollResult && pollResult.completed) {
|
||||
@@ -213,31 +214,53 @@
|
||||
});
|
||||
}, 3000);
|
||||
} else {
|
||||
// Fehler beim Ermitteln der URL
|
||||
document.getElementById('external-call-overlay').style.display = 'none';
|
||||
var errorMsg = (result && result.message) ? result.message : 'Die externe URL konnte nicht ermittelt werden.';
|
||||
showAlertMessageBox(errorMsg);
|
||||
_externalCallId = null;
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
document.getElementById('external-call-overlay').style.display = 'none';
|
||||
showAlertMessageBox('Fehler bei der Kommunikation mit dem Server.');
|
||||
_externalCallId = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openAiVoiceSettings() {
|
||||
// Aktuellen Modus im Einstellungs-Overlay vorauswählen
|
||||
$('input[name="aiVoiceMode"][value="' + _aiVoiceMode + '"]').prop('checked', true);
|
||||
document.getElementById('aivoice-settings-overlay').style.display = 'flex';
|
||||
}
|
||||
|
||||
function closeAiVoiceSettings() {
|
||||
document.getElementById('aivoice-settings-overlay').style.display = 'none';
|
||||
}
|
||||
|
||||
function saveAiVoiceMode() {
|
||||
var selectedMode = $('input[name="aiVoiceMode"]:checked').val();
|
||||
$.ajax({
|
||||
url: '@Url.Action("SetAiVoiceMode", "Main")',
|
||||
data: { mode: selectedMode },
|
||||
type: 'POST',
|
||||
success: function() {
|
||||
_aiVoiceMode = selectedMode;
|
||||
closeAiVoiceSettings();
|
||||
cancelExternalCall();
|
||||
showMessagePopup('Einstellungen gespeichert', 'Die Änderungen wurden übernommen. Bitte starten Sie die Aufnahme erneut.');
|
||||
},
|
||||
error: function() {
|
||||
showAlertMessageBox('Fehler beim Speichern der Einstellung.');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function cancelExternalCall() {
|
||||
// callId merken BEVOR stopExternalCallPolling() sie auf null setzt
|
||||
var callIdToCancel = _externalCallId;
|
||||
stopExternalCallPolling();
|
||||
// Server informieren, dass abgebrochen wurde
|
||||
if (callIdToCancel) {
|
||||
$.ajax({
|
||||
url: '@Url.Action("CancelExternalCall", "Main")',
|
||||
data: { callId: callIdToCancel },
|
||||
type: 'POST'
|
||||
});
|
||||
}
|
||||
// Server informieren, dass abgebrochen wurde – callId liegt serverseitig in der Session
|
||||
$.ajax({
|
||||
url: '@Url.Action("CancelExternalCall", "Main")',
|
||||
type: 'POST'
|
||||
});
|
||||
}
|
||||
|
||||
function stopExternalCallPolling() {
|
||||
@@ -245,7 +268,6 @@
|
||||
clearInterval(_externalCallPollingTimer);
|
||||
_externalCallPollingTimer = null;
|
||||
}
|
||||
_externalCallId = null;
|
||||
document.getElementById('external-call-overlay').style.display = 'none';
|
||||
}
|
||||
|
||||
@@ -716,16 +738,46 @@
|
||||
@Html.Partial("RestoreServiceRecordInputsPartial", Model)
|
||||
</div>
|
||||
|
||||
@* Waiting-Overlay für externen Aufruf *@
|
||||
@* Warte-Overlay für externen Aufruf *@
|
||||
<div id="external-call-overlay" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.6); z-index:9999; justify-content:center; align-items:center;">
|
||||
<div style="background:white; border-radius:8px; padding:30px; text-align:center; box-shadow:0 4px 20px rgba(0,0,0,0.3);">
|
||||
<div style="background:white; border-radius:8px; padding:30px; min-width:300px; text-align:center; box-shadow:0 4px 20px rgba(0,0,0,0.3);">
|
||||
<div class="mb-3">
|
||||
<i class="fa fa-spinner fa-spin fa-2x"></i>
|
||||
</div>
|
||||
<p class="mb-3" id="external-call-status-text">Warte auf Rückmeldung vom externen System...</p>
|
||||
<p class="mb-3" id="external-call-status-text" style="white-space: pre-line">Bitte warten...</p>
|
||||
<button type="button" class="btn btn-secondary mr-2" onclick="openAiVoiceSettings();">
|
||||
<i class="fa fa-cog mr-1"></i>Einstellungen
|
||||
</button>
|
||||
<button type="button" class="btn btn-danger" onclick="cancelExternalCall();">Abbrechen</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* Einstellungs-Overlay für Moduswahl *@
|
||||
<div id="aivoice-settings-overlay" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.7); z-index:10000; justify-content:center; align-items:center;">
|
||||
<div style="background:white; border-radius:8px; padding:30px; max-width:480px; box-shadow:0 4px 20px rgba(0,0,0,0.3);">
|
||||
<h6 class="mb-3">Modus für Spracheingabe</h6>
|
||||
<div class="form-group text-left mb-4">
|
||||
<div class="form-check mb-3">
|
||||
<input class="form-check-input" type="radio" name="aiVoiceMode" id="aiVoiceModeDirect" value="0" />
|
||||
<label class="form-check-label font-weight-bold" for="aiVoiceModeDirect">
|
||||
Spracheingabe direkt aus Mobilklient starten
|
||||
</label>
|
||||
<small class="form-text text-muted">Diese Option setzt voraus, dass Mobilklient und ownChat auf gleichem Endgerät genutzt werden</small>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="aiVoiceMode" id="aiVoiceModePush" value="1" />
|
||||
<label class="form-check-label font-weight-bold" for="aiVoiceModePush">
|
||||
Spracheingabe per Push-Nachricht starten
|
||||
</label>
|
||||
<small class="form-text text-muted">Diese Option ermöglicht die Nutzung von Mobilklient und ownChat auf getrennten Endgeräten wie bei der Vollversion</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<button type="button" class="btn btn-secondary mr-2" onclick="closeAiVoiceSettings();">Schließen</button>
|
||||
<button type="button" class="btn btn-primary" onclick="saveAiVoiceMode();">Speichern</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
@* /Einzelbuchungsformular *@
|
||||
|
||||
@@ -78,6 +78,9 @@
|
||||
<Compile Include="Models\Auftragsdatei\AuftragssatzPart2.cs" />
|
||||
<Compile Include="Models\Auftragsdatei\AuftragssatzPart3.cs" />
|
||||
<Compile Include="Models\Auftragsdatei\AuftragssatzPart4.cs" />
|
||||
<Compile Include="Models\Blocke\BlockEinsatz.cs" />
|
||||
<Compile Include="Models\Blocke\BlockEinsatzPosition.cs" />
|
||||
<Compile Include="Models\Blocke\BlockKlientHKP.cs" />
|
||||
<Compile Include="Models\DakotaEnums.cs" />
|
||||
<Compile Include="DakotaExtensions.cs" />
|
||||
<Compile Include="Models\DakotaFile.cs" />
|
||||
@@ -143,6 +146,9 @@
|
||||
<Compile Include="Models\Segmente\KTD\SegmentKTDIDK.cs" />
|
||||
<Compile Include="Models\Segmente\KTD\SegmentKTDVDT.cs" />
|
||||
<Compile Include="Models\Segmente\KTD\SegmentKTDVKG.cs" />
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentEHK.cs" />
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentELP.cs" />
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentESK.cs" />
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentSLLABES.cs" />
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentSLLADIA.cs" />
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentSLLAMWS.cs" />
|
||||
@@ -152,6 +158,7 @@
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentSLLATXT.cs" />
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentSLLAZUV.cs" />
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentSLLAZUZ.cs" />
|
||||
<Compile Include="Models\Segmente\SLLA\SegmentZHK.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Models\Segmente\Segment.cs" />
|
||||
<Compile Include="Models\Segmente\SLGA\SegmentSLGAFKT.cs" />
|
||||
|
||||
@@ -195,10 +195,11 @@ namespace Dakota.Logic
|
||||
|
||||
info.Name1 = infoParameter.AddressInformation.OrganisationName;
|
||||
info.Name2 = infoParameter.AddressInformation.Phone;
|
||||
info.Name3 = infoParameter.AddressInformation.Mail;
|
||||
info.Name4 = "Entwicklung dakota.exchange@ownsoft.de";
|
||||
info.Name3 = string.Empty;
|
||||
info.Name4 = infoParameter.AddressInformation.Mail;
|
||||
//"Entwicklung dakota.exchange@ownsoft.de";
|
||||
|
||||
return info;
|
||||
return info;
|
||||
}
|
||||
|
||||
private InfoNachrichtSLLA CreateDakotaInfoNachrichtSLLA(InfoParameterInvoiceItem infoParameter)
|
||||
|
||||
47
Dakota/Models/Blocke/BlockEinsatz.cs
Normal file
47
Dakota/Models/Blocke/BlockEinsatz.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Segmente.SLLA;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Dakota.Models.Blocke
|
||||
{
|
||||
/// <summary>
|
||||
/// ESK + 1-n BlockEinsatzPosition –
|
||||
/// entspricht einem einzelnen Einsatz/Hausbesuch
|
||||
/// bei Häuslicher Krankenpflege (SLLA: C).
|
||||
/// </summary>
|
||||
internal class BlockEinsatz : Block
|
||||
{
|
||||
public SegmentSLLAESK SegmentSLLAESK { get; private set; }
|
||||
public List<BlockEinsatzPosition> Positionen { get; private set; }
|
||||
|
||||
public BlockEinsatz()
|
||||
{
|
||||
SegmentSLLAESK = new SegmentSLLAESK();
|
||||
Positionen = new List<BlockEinsatzPosition>();
|
||||
}
|
||||
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var res = new List<Segment> { SegmentSLLAESK };
|
||||
foreach (var pos in Positionen)
|
||||
res.AddRange(pos.GetSegments());
|
||||
return res;
|
||||
}
|
||||
|
||||
public override int GetUNHCount() => 0;
|
||||
|
||||
public void Apply(InfoAbrechnungsposition info)
|
||||
{
|
||||
// ESK: Datum + Uhrzeiten aus der Abrechnungsposition
|
||||
SegmentSLLAESK.DatumLeistungserbringung.SetValue(info.DatumDerLeistungserbringung);
|
||||
SegmentSLLAESK.UhrzeitBeginn.SetValue(info.Uhrzeit);
|
||||
SegmentSLLAESK.UhrzeitEnde.SetValue(info.UhrzeitBis);
|
||||
SegmentSLLAESK.Dauer.SetValue(info.Dauer > 0 ? info.Dauer.ToString() : null);
|
||||
|
||||
var posBlock = new BlockEinsatzPosition();
|
||||
posBlock.Apply(info);
|
||||
Positionen.Add(posBlock);
|
||||
}
|
||||
}
|
||||
}
|
||||
64
Dakota/Models/Blocke/BlockEinsatzPosition.cs
Normal file
64
Dakota/Models/Blocke/BlockEinsatzPosition.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Segmente.SLLA;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Dakota.Models.Blocke
|
||||
{
|
||||
/// <summary>
|
||||
/// EHK + optionale ELP-Segmente + optionales TXT-Segment –
|
||||
/// entspricht einer Abrechnungsposition innerhalb eines Einsatzes
|
||||
/// bei Häuslicher Krankenpflege (SLLA: C).
|
||||
/// </summary>
|
||||
internal class BlockEinsatzPosition : Block
|
||||
{
|
||||
public SegmentSLLAEHK SegmentSLLAEHK { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Einzelleistungen innerhalb einer Leistungspauschale (0-n je EHK).
|
||||
/// Nur füllen, wenn eine Pauschale abgerechnet wird.
|
||||
/// </summary>
|
||||
public List<SegmentSLLAELP> SegmenteELP { get; private set; }
|
||||
|
||||
public SegmentSLLATXT SegmentSLLATXT { get; private set; }
|
||||
|
||||
public decimal AnzahlEinheit => SegmentSLLAEHK.AnzahlMenge.DecimalValue;
|
||||
public decimal EinzelbetragAbrechnungsposition => SegmentSLLAEHK.EinzelbetragAbrechnungsposition.DecimalValue;
|
||||
|
||||
public BlockEinsatzPosition()
|
||||
{
|
||||
SegmentSLLAEHK = new SegmentSLLAEHK();
|
||||
SegmenteELP = new List<SegmentSLLAELP>();
|
||||
SegmentSLLATXT = new SegmentSLLATXT();
|
||||
}
|
||||
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var res = new List<Segment> { SegmentSLLAEHK };
|
||||
res.AddRange(SegmenteELP);
|
||||
res.Add(SegmentSLLATXT);
|
||||
return res;
|
||||
}
|
||||
|
||||
public override int GetUNHCount() => 0;
|
||||
|
||||
public void Apply(InfoAbrechnungsposition info)
|
||||
{
|
||||
SegmentSLLAEHK.Abrechnungscode.SetValue(info.Abrechnungscode);
|
||||
SegmentSLLAEHK.Tarifkennzeichen.SetValue(info.Tarifkennzeichen);
|
||||
SegmentSLLAEHK.ArtLeistung.SetValue(info.GetAbrechnungsposition());
|
||||
SegmentSLLAEHK.AnzahlMenge.SetValue(info.AnzahlMenge);
|
||||
SegmentSLLAEHK.EinzelbetragAbrechnungsposition.SetValue(info.EinzelbetragAbrechnungsposition);
|
||||
SegmentSLLAEHK.GefahreneKilometer.SetValue(info.GefahreneKilometer);
|
||||
|
||||
// Beschäftigtennummer: Pflichtfeld – Fallback auf Ersatzwert 999999999
|
||||
var bsnr1 = !string.IsNullOrWhiteSpace(info.Beschäftigtennummer)
|
||||
? info.Beschäftigtennummer
|
||||
: "999999999";
|
||||
SegmentSLLAEHK.Beschäftigtennummer1.SetValue(bsnr1);
|
||||
SegmentSLLAEHK.Beschäftigtennummer2.SetValue(info.Beschäftigtennummer2);
|
||||
|
||||
SegmentSLLATXT.Text.SetValue(info.Text);
|
||||
}
|
||||
}
|
||||
}
|
||||
146
Dakota/Models/Blocke/BlockKlientHKP.cs
Normal file
146
Dakota/Models/Blocke/BlockKlientHKP.cs
Normal file
@@ -0,0 +1,146 @@
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Segmente.SLLA;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Dakota.Models.Blocke
|
||||
{
|
||||
/// <summary>
|
||||
/// Abrechnungsfall (INV … BES) für Häusliche Krankenpflege (SLLA: C).
|
||||
/// Segmentfolge gem. TA § 302 Abs. 5.5.3.4:
|
||||
/// INV, NAD, [IMG], ESK { EHK [ELP] [TXT] }+, ZHK [DIA] SKZ BES
|
||||
/// </summary>
|
||||
internal class BlockKlientHKP : Block
|
||||
{
|
||||
public SegmentSLLAINV SegmentSLLAINV { get; private set; }
|
||||
public SegmentSLLANAD SegmentSLLANAD { get; private set; }
|
||||
public SegmentSLLAIMG SegmentSLLAIMG { get; private set; }
|
||||
|
||||
/// <summary>Ein BlockEinsatz pro Einsatz/Hausbesuch (ESK + EHK-Positionen).</summary>
|
||||
public List<BlockEinsatz> BlockEinsätze { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// ZHK – Zusatzinfo Verordnung HK.
|
||||
/// Laut TA 1-n je INV (eine je Verordnung); hier zunächst eine Verordnung pro Fall.
|
||||
/// </summary>
|
||||
public SegmentSLLAZHK SegmentSLLAZHK { get; private set; }
|
||||
|
||||
public List<BlockDiagnose> BlockDiagnose { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// SKZ ist bei C Pflicht (1-n je ZHK, laut TA zwingend zu übermitteln).
|
||||
/// Liegen mehrere Kostenzusagen vor, ist das Segment zu wiederholen –
|
||||
/// hier wird zunächst eine Kostenzusage je Fall unterstützt.
|
||||
/// </summary>
|
||||
public SegmentSLLASKZ SegmentSLLASKZ { get; private set; }
|
||||
|
||||
public SegmentSLLABES SegmentSLLABES { get; private set; }
|
||||
|
||||
// Summen-Zugriff für NachrichtSLLA / SLGA
|
||||
public decimal GesamtbetragBrutto => SegmentSLLABES.GesamtbetragBrutto.DecimalValue;
|
||||
|
||||
public BlockKlientHKP()
|
||||
{
|
||||
SegmentSLLAINV = new SegmentSLLAINV();
|
||||
SegmentSLLANAD = new SegmentSLLANAD();
|
||||
SegmentSLLAIMG = new SegmentSLLAIMG();
|
||||
BlockEinsätze = new List<BlockEinsatz>();
|
||||
SegmentSLLAZHK = new SegmentSLLAZHK();
|
||||
BlockDiagnose = new List<BlockDiagnose>();
|
||||
SegmentSLLASKZ = new SegmentSLLASKZ();
|
||||
SegmentSLLABES = new SegmentSLLABES();
|
||||
}
|
||||
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var res = new List<Segment>();
|
||||
|
||||
res.Add(SegmentSLLAINV);
|
||||
res.Add(SegmentSLLANAD);
|
||||
// IMG nur wenn befüllt – wie in BlockKlient gehandhabt
|
||||
|
||||
foreach (var einsatz in BlockEinsätze)
|
||||
res.AddRange(einsatz.GetSegments());
|
||||
|
||||
res.Add(SegmentSLLAZHK);
|
||||
|
||||
foreach (var dia in BlockDiagnose)
|
||||
res.AddRange(dia.GetSegments());
|
||||
|
||||
res.Add(SegmentSLLASKZ);
|
||||
res.Add(SegmentSLLABES);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public override int GetUNHCount() => 0;
|
||||
|
||||
public void Apply(InfoAbrechnungsfall info)
|
||||
{
|
||||
// INV
|
||||
SegmentSLLAINV.VersichertenNummer.SetValue(info.VersichtertenNummer);
|
||||
SegmentSLLAINV.Versichertenstatus.SetValue(info.Versichertenstatus);
|
||||
SegmentSLLAINV.Beleginformation.SetValue(info.Beleginformation);
|
||||
SegmentSLLAINV.Belegnummer.SetValue(info.Belegnummer);
|
||||
|
||||
// NAD
|
||||
SegmentSLLANAD.Vorname.SetValue(info.VersichtertenVorname);
|
||||
SegmentSLLANAD.Nachname.SetValue(info.VersichtertenNachname);
|
||||
SegmentSLLANAD.Geburtsdatum.SetValue(info.VersichtertenGeburtstag);
|
||||
SegmentSLLANAD.StraßeNr.SetValue(info.VersichtertenStraßeNr);
|
||||
SegmentSLLANAD.PLZ.SetValue(info.VersichtertenPLZ);
|
||||
SegmentSLLANAD.Wohnort.SetValue(info.VersichtertenWohnort);
|
||||
SegmentSLLANAD.Länderkennzeichen.SetValue(info.VersichtertenLanderkennung);
|
||||
|
||||
// ESK + EHK: je Abrechnungsposition ein eigener Einsatz
|
||||
// (ein InvoiceItem = ein Einsatz; mehrere Positionen am selben Tag
|
||||
// können durch den Aufrufer in einem BlockEinsatz zusammengefasst werden)
|
||||
foreach (var posinfo in info.InfosAbrechnungsposition
|
||||
.OrderBy(x => x.DatumDerLeistungserbringung))
|
||||
{
|
||||
var einsatz = new BlockEinsatz();
|
||||
einsatz.Apply(posinfo);
|
||||
BlockEinsätze.Add(einsatz);
|
||||
}
|
||||
|
||||
// ZHK
|
||||
SegmentSLLAZHK.Betriebsstättennummer.SetValue(
|
||||
string.IsNullOrWhiteSpace(info.Betriebsstättennummer) ? "999999999" : info.Betriebsstättennummer);
|
||||
SegmentSLLAZHK.LebenslangeArztnummer.SetValue(
|
||||
string.IsNullOrWhiteSpace(info.LebenslangeArztnummer) ? "999999999" : info.LebenslangeArztnummer);
|
||||
SegmentSLLAZHK.Verordnungsdatum.SetValue(info.Verordnungsdatum);
|
||||
SegmentSLLAZHK.Unfallkennzeichen.SetValue(info.Unfallkennzeichen);
|
||||
SegmentSLLAZHK.KennzeichenBVGSonstiges.SetValue(info.KennzeichenBVGSonstiges);
|
||||
SegmentSLLAZHK.KennzeichenVerordnungsbesonderheiten.SetValue(info.KennzeichenVerordnungsbesonderheiten);
|
||||
|
||||
// DIA
|
||||
if (info.DakotaInfoDiagnosen?.Any() == true)
|
||||
{
|
||||
foreach (var diagnose in info.DakotaInfoDiagnosen)
|
||||
{
|
||||
var block = new BlockDiagnose();
|
||||
block.Apply(diagnose);
|
||||
BlockDiagnose.Add(block);
|
||||
}
|
||||
}
|
||||
|
||||
// SKZ
|
||||
SegmentSLLASKZ.Genehmigungskennzeichen.SetValue(info.Genehmigungskennzeichen);
|
||||
SegmentSLLASKZ.DatumGenehmigung.SetValue(info.DatumDerGenehmigung);
|
||||
SegmentSLLASKZ.ArtGenehmigung.SetValue(info.ArtDerGenehmigung);
|
||||
|
||||
// BES
|
||||
CalculateSums();
|
||||
}
|
||||
|
||||
private void CalculateSums()
|
||||
{
|
||||
var gesamtbrutto = BlockEinsätze
|
||||
.SelectMany(e => e.Positionen)
|
||||
.Sum(p => p.AnzahlEinheit * p.EinzelbetragAbrechnungsposition);
|
||||
|
||||
SegmentSLLABES.GesamtbetragBrutto.SetValue(gesamtbrutto);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Nachrichten;
|
||||
using Dakota.Models.Schlüssels;
|
||||
using Dakota.Models.Segmente;
|
||||
@@ -55,6 +55,7 @@ namespace Dakota.Models.Blocke
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public override int GetUNHCount()
|
||||
{
|
||||
var i = 0;
|
||||
@@ -74,7 +75,14 @@ namespace Dakota.Models.Blocke
|
||||
{
|
||||
BlockKrankenkasse.Add(block);
|
||||
}
|
||||
public void Apply(InfoBlockKostentrager info)
|
||||
|
||||
/// <param name="info">Infoobjekt für diesen Kostenträger-Block.</param>
|
||||
/// <param name="isHKP">
|
||||
/// true = Häusliche Krankenpflege (Sammelgruppenschlüssel C).
|
||||
/// Wird an BlockKrankenkasse.Apply weitergereicht, damit dort
|
||||
/// NachrichtSLLA die ESK/EHK-Struktur (BlockKlientHKP) verwendet.
|
||||
/// </param>
|
||||
public void Apply(InfoBlockKostentrager info, bool isHKP = false)
|
||||
{
|
||||
if (IsSammelrechnung)
|
||||
{
|
||||
@@ -91,7 +99,7 @@ namespace Dakota.Models.Blocke
|
||||
{
|
||||
var blockkvkarte = new BlockKrankenkasse();
|
||||
|
||||
blockkvkarte.Apply(infoblock, IsSammelrechnung);
|
||||
blockkvkarte.Apply(infoblock, IsSammelrechnung, isHKP);
|
||||
|
||||
Add(blockkvkarte);
|
||||
}
|
||||
@@ -106,7 +114,7 @@ namespace Dakota.Models.Blocke
|
||||
|
||||
private void CalculateSLGA()
|
||||
{
|
||||
Dictionary<string, decimal[]> segments = new Dictionary<string, decimal[]>();
|
||||
var segments = new Dictionary<string, decimal[]>();
|
||||
|
||||
foreach (var block in BlockKrankenkasse)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Nachrichten;
|
||||
using Dakota.Models.Schlüssels;
|
||||
using Dakota.Models.Segmente;
|
||||
@@ -13,24 +13,24 @@ using System.Threading.Tasks;
|
||||
namespace Dakota.Models.Blocke
|
||||
{
|
||||
/// <summary>
|
||||
/// Wiederhole folgenden Block je IK der Krankenkarte bzw der Verordnung
|
||||
/// Wiederhole folgenden Block je IK der Krankenkarte bzw. der Verordnung
|
||||
/// </summary>
|
||||
internal class BlockKrankenkasse : Block
|
||||
{
|
||||
public SegmentUNH SegmentSLGAUNH { get; private set; }
|
||||
public NachrichtSLGA NachrichtSLGA { get; private set; }
|
||||
public SegmentUNT SegmentSLGAUNT { get; private set; }
|
||||
public SegmentUNH SegmentSLLAUNH { get; private set; }
|
||||
public NachrichtSLLA NachrichtSLLA { get; private set; }
|
||||
public SegmentUNT SegmentSLLAUNT { get; private set; }
|
||||
public SegmentUNH SegmentSLGAUNH { get; private set; }
|
||||
public NachrichtSLGA NachrichtSLGA { get; private set; }
|
||||
public SegmentUNT SegmentSLGAUNT { get; private set; }
|
||||
public SegmentUNH SegmentSLLAUNH { get; private set; }
|
||||
public NachrichtSLLA NachrichtSLLA { get; private set; }
|
||||
public SegmentUNT SegmentSLLAUNT { get; private set; }
|
||||
|
||||
public BlockKrankenkasse()
|
||||
{
|
||||
SegmentSLGAUNH = new SegmentUNH();
|
||||
NachrichtSLGA = new NachrichtSLGA();
|
||||
NachrichtSLGA = new NachrichtSLGA();
|
||||
SegmentSLGAUNT = new SegmentUNT(SLGASegmentLength);
|
||||
SegmentSLLAUNH = new SegmentUNH();
|
||||
NachrichtSLLA = new NachrichtSLLA();
|
||||
NachrichtSLLA = new NachrichtSLLA();
|
||||
SegmentSLLAUNT = new SegmentUNT(SLLASegmentLength);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace Dakota.Models.Blocke
|
||||
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var list = new List<Segment>() { SegmentSLGAUNH };
|
||||
var list = new List<Segment> { SegmentSLGAUNH };
|
||||
list.AddRange(NachrichtSLGA.GetSegments());
|
||||
list.Add(SegmentSLGAUNT);
|
||||
|
||||
@@ -61,14 +61,21 @@ namespace Dakota.Models.Blocke
|
||||
return 2;
|
||||
}
|
||||
|
||||
public void Apply(InfoBlockKrankenkasse blockinfo, bool isSammelrechnung)
|
||||
/// <param name="blockinfo">Infoobjekt für diesen KV-Karten-Block.</param>
|
||||
/// <param name="isSammelrechnung">true = Sammelrechnung.</param>
|
||||
/// <param name="isHKP">
|
||||
/// true = Häusliche Krankenpflege (Sammelgruppenschlüssel C).
|
||||
/// Schaltet in NachrichtSLLA auf ESK/EHK-Struktur (BlockKlientHKP) um.
|
||||
/// </param>
|
||||
public void Apply(InfoBlockKrankenkasse blockinfo, bool isSammelrechnung, bool isHKP = false)
|
||||
{
|
||||
ApplySLGA(blockinfo.DakotaInfoSLGA);
|
||||
ApplyNachrichtSLGA(blockinfo.DakotaInfoNachrichtSLGA, isSammelrechnung);
|
||||
ApplySLLA(blockinfo.DakotaInfoSLLA);
|
||||
ApplyNachrichtSLLA(blockinfo.DakotaInfoNachrichtSLLA);
|
||||
ApplyNachrichtSLLA(blockinfo.DakotaInfoNachrichtSLLA, isHKP);
|
||||
CalculateSLGA();
|
||||
}
|
||||
|
||||
private void ApplySLGA(InfoNachricht info)
|
||||
{
|
||||
SegmentSLGAUNH.Nachrichtenreferenznummer.SetValue(info.Nachrichtenreferenznummer);
|
||||
@@ -79,6 +86,7 @@ namespace Dakota.Models.Blocke
|
||||
|
||||
SegmentSLGAUNT.Nachrichtenreferenznummer.SetValue(info.Nachrichtenreferenznummer);
|
||||
}
|
||||
|
||||
private void ApplyNachrichtSLGA(InfoNachrichtSLGA info, bool isSammelrechnung)
|
||||
{
|
||||
NachrichtSLGA.Apply(info, isSammelrechnung);
|
||||
@@ -94,40 +102,35 @@ namespace Dakota.Models.Blocke
|
||||
|
||||
SegmentSLLAUNT.Nachrichtenreferenznummer.SetValue(info.Nachrichtenreferenznummer);
|
||||
}
|
||||
private void ApplyNachrichtSLLA(InfoNachrichtSLLA info)
|
||||
|
||||
private void ApplyNachrichtSLLA(InfoNachrichtSLLA info, bool isHKP)
|
||||
{
|
||||
NachrichtSLLA.Apply(info);
|
||||
NachrichtSLLA.Apply(info, isHKP);
|
||||
}
|
||||
|
||||
private void CalculateSLGA()
|
||||
{
|
||||
var sumseg = new decimal[3];
|
||||
var segments = new Dictionary<string, decimal[]>();
|
||||
|
||||
Dictionary<string, decimal[]> segments = new Dictionary<string, decimal[]>();
|
||||
|
||||
// G/N: ENF-basierte Fälle
|
||||
foreach (var fall in NachrichtSLLA.BlockKlienten)
|
||||
{
|
||||
var versicherten_status = fall.SegmentSLLAINV.Versichertenstatus.GetValue();
|
||||
var schlüssel_summenstatus = SchlüsselSummenstatus.Parse(versicherten_status);
|
||||
var status = schlüssel_summenstatus.Value;
|
||||
AccumulateFall(
|
||||
fall.SegmentSLLAINV.Versichertenstatus.GetValue(),
|
||||
fall.GesamtbetragBrutto,
|
||||
fall.GesamtbetragGesetzlicheZuzahlung + fall.GesamtbetragEigenanteil,
|
||||
segments, sumseg);
|
||||
}
|
||||
|
||||
if (!segments.ContainsKey(status))
|
||||
{
|
||||
segments.Add(status, new decimal[3]);
|
||||
}
|
||||
|
||||
var segment = segments[status];
|
||||
|
||||
decimal bruttobetrag = fall.GesamtbetragBrutto;
|
||||
decimal zuzahlung = fall.GesamtbetragGesetzlicheZuzahlung + fall.GesamtbetragEigenanteil;
|
||||
decimal rechnungsbetrag = bruttobetrag - zuzahlung;
|
||||
|
||||
segment[0] += rechnungsbetrag;
|
||||
segment[1] += bruttobetrag;
|
||||
segment[2] += zuzahlung;
|
||||
|
||||
sumseg[0] += rechnungsbetrag;
|
||||
sumseg[1] += bruttobetrag;
|
||||
sumseg[2] += zuzahlung;
|
||||
// C: ESK/EHK-basierte Fälle (Häusliche Krankenpflege)
|
||||
foreach (var fall in NachrichtSLLA.BlockKlientenHKP)
|
||||
{
|
||||
AccumulateFall(
|
||||
fall.SegmentSLLAINV.Versichertenstatus.GetValue(),
|
||||
fall.GesamtbetragBrutto,
|
||||
zuzahlung: 0, // HKP hat keine gesetzliche Zuzahlung im BES
|
||||
segments, sumseg);
|
||||
}
|
||||
|
||||
NachrichtSLGA.SegmentGES00.Status.SetValue(SchlüsselSummenstatus.Gesamtsumme);
|
||||
@@ -138,7 +141,7 @@ namespace Dakota.Models.Blocke
|
||||
foreach (var key in segments.Keys.OrderBy(x => x))
|
||||
{
|
||||
var segment = new SegmentSLGAGES();
|
||||
var array = segments[key];
|
||||
var array = segments[key];
|
||||
|
||||
segment.Status.SetValue(key);
|
||||
segment.Gesamtrechnungsbetrag.SetValue(array[0]);
|
||||
@@ -148,5 +151,29 @@ namespace Dakota.Models.Blocke
|
||||
NachrichtSLGA.ListSegmentGES.Add(segment);
|
||||
}
|
||||
}
|
||||
|
||||
private void AccumulateFall(
|
||||
string versichertenStatus,
|
||||
decimal bruttobetrag,
|
||||
decimal zuzahlung,
|
||||
Dictionary<string, decimal[]> segments,
|
||||
decimal[] sumseg)
|
||||
{
|
||||
var schlüssel = SchlüsselSummenstatus.Parse(versichertenStatus);
|
||||
var status = schlüssel.Value;
|
||||
|
||||
if (!segments.ContainsKey(status))
|
||||
segments.Add(status, new decimal[3]);
|
||||
|
||||
var seg = segments[status];
|
||||
var rechnungsbetrag = bruttobetrag - zuzahlung;
|
||||
|
||||
seg[0] += rechnungsbetrag;
|
||||
seg[1] += bruttobetrag;
|
||||
seg[2] += zuzahlung;
|
||||
sumseg[0] += rechnungsbetrag;
|
||||
sumseg[1] += bruttobetrag;
|
||||
sumseg[2] += zuzahlung;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Nachrichten;
|
||||
using Dakota.Models.Schlüssels;
|
||||
using Dakota.Models.Segmente;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -10,13 +11,13 @@ using System.Threading.Tasks;
|
||||
namespace Dakota.Models.Blocke
|
||||
{
|
||||
/// <summary>
|
||||
/// Nutzdatendatei ohne Logik
|
||||
/// Nutzdatendatei ohne Logik.
|
||||
/// </summary>
|
||||
internal class Nutzdatendatei : Block
|
||||
{
|
||||
public DakotaFile Parent { get; set; }
|
||||
|
||||
public SegmentUNB SegmentUNB { get; private set; }
|
||||
public SegmentUNB SegmentUNB { get; private set; }
|
||||
public List<BlockKostenträger> BlockKostenträger { get; private set; }
|
||||
public SegmentUNZ SegmentUNZ { get; private set; }
|
||||
|
||||
@@ -43,6 +44,7 @@ namespace Dakota.Models.Blocke
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public override int GetUNHCount()
|
||||
{
|
||||
int i = 0;
|
||||
@@ -59,8 +61,13 @@ namespace Dakota.Models.Blocke
|
||||
{
|
||||
BlockKostenträger.Add(blockkosten);
|
||||
}
|
||||
|
||||
public void Apply(InfoDateiNutzdaten info, bool isSammelrechnung)
|
||||
{
|
||||
// isHKP: true fuer Haeusliche Krankenpflege (Sammelgruppenschlüssel C)
|
||||
var isHKP = info.Leistungsbereich?.Value ==
|
||||
SchlüsselLeistungserbringerSammelgruppenschlussel.LeistungserbringerVonHäuslicherKrankenpflege.Value;
|
||||
|
||||
SegmentUNB.SyntaxKennung.SetValue(info.SyntaxKennung);
|
||||
SegmentUNB.SyntaxVersionsnummer.SetValue(info.SyntaxVersion);
|
||||
SegmentUNB.Absenderdatei.SetValue(info.Absenderbezeichnung);
|
||||
@@ -75,9 +82,7 @@ namespace Dakota.Models.Blocke
|
||||
foreach (var blockinfo in info.BlockKostentragers)
|
||||
{
|
||||
var block = new BlockKostenträger(isSammelrechnung);
|
||||
|
||||
block.Apply(blockinfo);
|
||||
|
||||
block.Apply(blockinfo, isHKP);
|
||||
Add(block);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
using Dakota.Models.Schlüssels;
|
||||
using Dakota.Models.Schlüssels;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models.Infos
|
||||
{
|
||||
@@ -18,7 +15,7 @@ namespace Dakota.Models.Infos
|
||||
public SchlüsselPosArtDerEinrichtung AbrechnungspositionArtDerEinrichtung { get; set; }
|
||||
public SchlüsselPosBehandlungsart AbrechnungspositionBehandlungsart { get; set; }
|
||||
public SchlüsselPosVergütungsart AbrechnungspositionVergütungsart { get; set; }
|
||||
|
||||
|
||||
public decimal AnzahlMenge { get; set; }
|
||||
public decimal EinzelbetragAbrechnungsposition { get; set; }
|
||||
public DateTime? DatumDerLeistungserbringung { get; set; }
|
||||
@@ -31,6 +28,19 @@ namespace Dakota.Models.Infos
|
||||
|
||||
public string Text { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Beschäftigtennummer nach § 293 Abs. 8 Satz 2 SGB V der Person,
|
||||
/// die die Leistung erbracht hat (Pflichtfeld bei SLLA: C – Häusliche Krankenpflege).
|
||||
/// Bei fehlendem Wert Ersatzwert gemäß Anlage 3, Schlüsseltabelle 8.1.19 verwenden.
|
||||
/// </summary>
|
||||
public string Beschäftigtennummer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Optionale Beschäftigtennummer einer zweiten Person (SLLA: C).
|
||||
/// Wird zum Pflichtfeld, sobald zwei Personen die Leistung erbracht haben.
|
||||
/// </summary>
|
||||
public string Beschäftigtennummer2 { get; set; }
|
||||
|
||||
internal string GetAbrechnungsposition()
|
||||
{
|
||||
return AbrechnungspositionString ?? Abrechnungsposition.Value;
|
||||
|
||||
@@ -1,80 +1,86 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Dakota.Models.Blocke;
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Schlüssels;
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Segmente.SLLA;
|
||||
|
||||
namespace Dakota.Models.Nachrichten
|
||||
{
|
||||
/// <summary>
|
||||
/// Leistungserbringer
|
||||
/// </summary>
|
||||
internal class NachrichtSLLA : Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen über den tatsächlichen
|
||||
/// Leistungserbringer und das IK der Krankenkasse von der
|
||||
/// Krankenversichertenkarte bzw.der ärztlichen Verordnung bezogen auf die folgenden Abrechnungsfälle.Es kommt je Nachricht nur einmal vor.
|
||||
/// </summary>
|
||||
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum
|
||||
/// </summary>
|
||||
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
|
||||
/// <summary>
|
||||
/// Abrechnungsfälle (INV - BES)
|
||||
/// </summary>
|
||||
public List<BlockKlient> BlockKlienten { get; set; }
|
||||
/// <summary>
|
||||
/// Leistungserbringer – Abrechnungsdaten (SLLA).
|
||||
/// Unterstützt G/N (ENF-basiert via BlockKlient) und
|
||||
/// C – Häusliche Krankenpflege (ESK/EHK-basiert via BlockKlientHKP).
|
||||
/// </summary>
|
||||
internal class NachrichtSLLA : Nachricht
|
||||
{
|
||||
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
|
||||
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
|
||||
|
||||
/// <summary>Abrechnungsfälle für G/N (ENF-Struktur).</summary>
|
||||
public List<BlockKlient> BlockKlienten { get; set; }
|
||||
|
||||
/// <summary>Abrechnungsfälle für C – Häusliche Krankenpflege (ESK/EHK-Struktur).</summary>
|
||||
public List<BlockKlientHKP> BlockKlientenHKP { get; set; }
|
||||
|
||||
public NachrichtSLLA()
|
||||
{
|
||||
SegmentSLLAFKT = new SegmentSLLAFKT();
|
||||
SegmentSLLAREC = new SegmentSLLAREC();
|
||||
public NachrichtSLLA()
|
||||
{
|
||||
SegmentSLLAFKT = new SegmentSLLAFKT();
|
||||
SegmentSLLAREC = new SegmentSLLAREC();
|
||||
BlockKlienten = new List<BlockKlient>();
|
||||
BlockKlientenHKP = new List<BlockKlientHKP>();
|
||||
}
|
||||
|
||||
BlockKlienten = new List<BlockKlient>();
|
||||
}
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var list = new List<Segment> { SegmentSLLAFKT, SegmentSLLAREC };
|
||||
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var list = new List<Segment>() { SegmentSLLAFKT, SegmentSLLAREC };
|
||||
foreach (var block in BlockKlienten)
|
||||
list.AddRange(block.GetSegments());
|
||||
|
||||
foreach (var block in BlockKlienten)
|
||||
{
|
||||
list.AddRange(block.GetSegments());
|
||||
}
|
||||
foreach (var block in BlockKlientenHKP)
|
||||
list.AddRange(block.GetSegments());
|
||||
|
||||
return list;
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public void Add(BlockKlient fall)
|
||||
{
|
||||
BlockKlienten.Add(fall);
|
||||
}
|
||||
public void Apply(InfoNachrichtSLLA info)
|
||||
{
|
||||
SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen);
|
||||
SegmentSLLAFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
|
||||
SegmentSLLAFKT.IKKostenträgers.SetValue(info.IKKostentrager);
|
||||
SegmentSLLAFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
|
||||
//SegmentSLLAFKT.IKRechnungsstellers.SetValue(info.IKAbsender);
|
||||
public void Add(BlockKlient fall) => BlockKlienten.Add(fall);
|
||||
public void Add(BlockKlientHKP fall) => BlockKlientenHKP.Add(fall);
|
||||
|
||||
foreach (var infofall in info.Abrechnungsfalle.OrderBy(x => x.InfosAbrechnungsposition.Min(y => y.DatumDerLeistungserbringung)))
|
||||
{
|
||||
var block = new BlockKlient();
|
||||
/// <summary>
|
||||
/// Befüllt die Nachricht. Für Häusliche Krankenpflege (Sammelgruppenschlüssel C)
|
||||
/// isHKP = true übergeben – dann wird BlockKlientHKP (ESK/EHK) statt BlockKlient (ENF) verwendet.
|
||||
/// </summary>
|
||||
public void Apply(InfoNachrichtSLLA info, bool isHKP = false)
|
||||
{
|
||||
SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen);
|
||||
SegmentSLLAFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
|
||||
SegmentSLLAFKT.IKKostenträgers.SetValue(info.IKKostentrager);
|
||||
SegmentSLLAFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
|
||||
|
||||
block.Apply(infofall);
|
||||
foreach (var infofall in info.Abrechnungsfalle
|
||||
.OrderBy(x => x.InfosAbrechnungsposition.Min(y => y.DatumDerLeistungserbringung)))
|
||||
{
|
||||
if (isHKP)
|
||||
{
|
||||
var block = new BlockKlientHKP();
|
||||
block.Apply(infofall);
|
||||
Add(block);
|
||||
}
|
||||
else
|
||||
{
|
||||
var block = new BlockKlient();
|
||||
block.Apply(infofall);
|
||||
Add(block);
|
||||
}
|
||||
}
|
||||
|
||||
Add(block);
|
||||
}
|
||||
|
||||
SegmentSLLAREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
|
||||
SegmentSLLAREC.EinzelRechnungsnummer.SetValue("0");
|
||||
SegmentSLLAREC.Rechnungsdatum.SetValue(info.Rechnungsdatum);
|
||||
SegmentSLLAREC.Rechnungsart.SetValue(info.Rechnungsart);
|
||||
}
|
||||
}
|
||||
SegmentSLLAREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
|
||||
SegmentSLLAREC.EinzelRechnungsnummer.SetValue("0");
|
||||
SegmentSLLAREC.Rechnungsdatum.SetValue(info.Rechnungsdatum);
|
||||
SegmentSLLAREC.Rechnungsart.SetValue(info.Rechnungsart);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
72
Dakota/Models/Segmente/SLLA/SegmentEHK.cs
Normal file
72
Dakota/Models/Segmente/SLLA/SegmentEHK.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
using Dakota.Models.Daten;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Dakota.Models.Segmente.SLLA
|
||||
{
|
||||
/// <summary>
|
||||
/// EHK – Einzelfallnachweis Häusliche Krankenpflege (SLLA: C).
|
||||
/// Das Segment ist je Einsatz/Hausbesuch 1-n mal zu übermitteln.
|
||||
/// Das letzte EHK kennzeichnet das Einsatzende.
|
||||
/// </summary>
|
||||
internal class SegmentSLLAEHK : Segment
|
||||
{
|
||||
/// <summary>Datenelementgruppe Abrechnungscode:Tarifkennzeichen.</summary>
|
||||
public Datenelementgruppe Leistungserbringergruppe { get; private set; }
|
||||
public Datenelement Abrechnungscode { get; private set; }
|
||||
public Datenelement Tarifkennzeichen { get; private set; }
|
||||
|
||||
/// <summary>Zu vergütende Abrechnungspositionsnummer (Anlage 3, Abschnitt 8.2.4).</summary>
|
||||
public Datenelement ArtLeistung { get; private set; }
|
||||
|
||||
/// <summary>Anzahl der Abrechnungspositionen. Max. ..4,2.</summary>
|
||||
public DatenelementDecimal AnzahlMenge { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Einzelpreis inkl. MwSt. Als Einzelpreis ist immer der vereinbarte
|
||||
/// Preis einschließlich Mehrwertsteuer einer Abrechnungsposition zu verstehen.
|
||||
/// </summary>
|
||||
public DatenelementDecimal EinzelbetragAbrechnungsposition { get; private set; }
|
||||
|
||||
/// <summary>Anzahl der gefahrenen Kilometer (Kann-Feld).</summary>
|
||||
public DatenelementDecimal GefahreneKilometer { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Beschäftigtennummer nach § 293 Abs. 8 Satz 2 SGB V der Person,
|
||||
/// die die Leistung erbracht hat. Pflichtfeld – bei fehlendem Wert
|
||||
/// ist ein Ersatzwert gemäß Anlage 3, Schlüsseltabelle 8.1.19 anzugeben.
|
||||
/// </summary>
|
||||
public Datenelement Beschäftigtennummer1 { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Beschäftigtennummer der zweiten Person (Kann-Feld; wird zum
|
||||
/// Muss-Feld, sobald eine zweite Person die Leistung erbracht hat).
|
||||
/// </summary>
|
||||
public Datenelement Beschäftigtennummer2 { get; private set; }
|
||||
|
||||
public SegmentSLLAEHK() : base(Feldart.Muss)
|
||||
{
|
||||
Leistungserbringergruppe = new Datenelementgruppe("Leistungserbringergruppe", 2);
|
||||
Abrechnungscode = Leistungserbringergruppe.Datenelemente[0] = new Datenelement("Abrechnungscode", 2, Feldart.Muss);
|
||||
Tarifkennzeichen = Leistungserbringergruppe.Datenelemente[1] = new Datenelement("Tarifkennzeichen", 5, Feldart.Muss);
|
||||
ArtLeistung = new Datenelement("ArtLeistung", 0, 10, Feldart.Muss);
|
||||
AnzahlMenge = new DatenelementDecimal("AnzahlMenge", 3, 7, Feldart.Muss);
|
||||
EinzelbetragAbrechnungsposition = new DatenelementDecimal("EinzelbetragAbrechnungsposition", 3, 13, Feldart.Muss);
|
||||
GefahreneKilometer = new DatenelementDecimal("GefahreneKilometer", 0, 6, Feldart.Kann);
|
||||
Beschäftigtennummer1 = new Datenelement("Beschäftigtennummer1", 9, Feldart.Muss);
|
||||
Beschäftigtennummer2 = new Datenelement("Beschäftigtennummer2", 9, Feldart.Kann);
|
||||
}
|
||||
|
||||
public override string GetHead() => "EHK";
|
||||
public override List<Dateneinheit> GetBody()
|
||||
=> new List<Dateneinheit>
|
||||
{
|
||||
Leistungserbringergruppe,
|
||||
ArtLeistung,
|
||||
AnzahlMenge,
|
||||
EinzelbetragAbrechnungsposition,
|
||||
GefahreneKilometer,
|
||||
Beschäftigtennummer1,
|
||||
Beschäftigtennummer2
|
||||
};
|
||||
}
|
||||
}
|
||||
33
Dakota/Models/Segmente/SLLA/SegmentELP.cs
Normal file
33
Dakota/Models/Segmente/SLLA/SegmentELP.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using Dakota.Models.Daten;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Dakota.Models.Segmente.SLLA
|
||||
{
|
||||
/// <summary>
|
||||
/// ELP – Erbrachte unterschiedliche Leistungen je Leistungspauschale (SLLA: C).
|
||||
/// Das Segment ist je EHK 0-n mal zu übermitteln.
|
||||
/// Wird eine Leistungspauschale abgerechnet, sind hier die im Rahmen
|
||||
/// der Leistungspauschale erbrachten Einzelleistungen zwingend anzugeben.
|
||||
/// </summary>
|
||||
internal class SegmentSLLAELP : Segment
|
||||
{
|
||||
/// <summary>
|
||||
/// Abrechnungspositionsnummer der erbrachten Einzelleistung
|
||||
/// (Anlage 3, Abschnitt 8.2.4).
|
||||
/// </summary>
|
||||
public Datenelement Abrechnungspositionsnummer { get; private set; }
|
||||
|
||||
/// <summary>Anzahl der Abrechnungspositionen. Max. ..4,2.</summary>
|
||||
public DatenelementDecimal AnzahlMenge { get; private set; }
|
||||
|
||||
public SegmentSLLAELP() : base(Feldart.Kann)
|
||||
{
|
||||
Abrechnungspositionsnummer = new Datenelement("Abrechnungspositionsnummer", 0, 10, Feldart.Muss);
|
||||
AnzahlMenge = new DatenelementDecimal("AnzahlMenge", 3, 7, Feldart.Muss);
|
||||
}
|
||||
|
||||
public override string GetHead() => "ELP";
|
||||
public override List<Dateneinheit> GetBody()
|
||||
=> new List<Dateneinheit> { Abrechnungspositionsnummer, AnzahlMenge };
|
||||
}
|
||||
}
|
||||
37
Dakota/Models/Segmente/SLLA/SegmentESK.cs
Normal file
37
Dakota/Models/Segmente/SLLA/SegmentESK.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using Dakota.Models.Daten;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Dakota.Models.Segmente.SLLA
|
||||
{
|
||||
/// <summary>
|
||||
/// ESK – Informationen zum Einsatz/Hausbesuch (SLLA: C Häusliche Krankenpflege).
|
||||
/// Das Segment ist je Abrechnungsfall 1-n mal zu übermitteln.
|
||||
/// Gilt als Beginn-Segment für einen Einsatz/Hausbesuch.
|
||||
/// </summary>
|
||||
internal class SegmentSLLAESK : Segment
|
||||
{
|
||||
/// <summary>Tag der Leistungserbringung (JJJJMMTT).</summary>
|
||||
public DatenelementDateTime DatumLeistungserbringung { get; private set; }
|
||||
|
||||
/// <summary>Beginn des Einsatzes (HHMM). Wertebereich HH 00–23, MM 00–59.</summary>
|
||||
public DatenelementDateTime UhrzeitBeginn { get; private set; }
|
||||
|
||||
/// <summary>Ende des Einsatzes (HHMM). Kann-Feld.</summary>
|
||||
public DatenelementDateTime UhrzeitEnde { get; private set; }
|
||||
|
||||
/// <summary>Zeitangabe in Minuten. Kann-Feld.</summary>
|
||||
public Datenelement Dauer { get; private set; }
|
||||
|
||||
public SegmentSLLAESK() : base(Feldart.Muss)
|
||||
{
|
||||
DatumLeistungserbringung = new DatenelementDateTime("DatumLeistungserbringung", 8, "yyyyMMdd", Feldart.Muss);
|
||||
UhrzeitBeginn = new DatenelementDateTime("UhrzeitBeginn", 4, "HHmm", Feldart.Muss);
|
||||
UhrzeitEnde = new DatenelementDateTime("UhrzeitEnde", 4, "HHmm", Feldart.Kann);
|
||||
Dauer = new Datenelement("Dauer", 0, 4, Feldart.Kann);
|
||||
}
|
||||
|
||||
public override string GetHead() => "ESK";
|
||||
public override List<Dateneinheit> GetBody()
|
||||
=> new List<Dateneinheit> { DatumLeistungserbringung, UhrzeitBeginn, UhrzeitEnde, Dauer };
|
||||
}
|
||||
}
|
||||
59
Dakota/Models/Segmente/SLLA/SegmentZHK.cs
Normal file
59
Dakota/Models/Segmente/SLLA/SegmentZHK.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using Dakota.Models.Daten;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Dakota.Models.Segmente.SLLA
|
||||
{
|
||||
/// <summary>
|
||||
/// ZHK – Zusatzinfo Verordnung für Häusliche Krankenpflege (SLLA: C).
|
||||
/// Das Segment ist für jede Verordnung zu übermitteln.
|
||||
/// </summary>
|
||||
internal class SegmentSLLAZHK : Segment
|
||||
{
|
||||
/// <summary>
|
||||
/// Betriebsstättennummer aus der Verordnung (zwingend).
|
||||
/// Falls nicht vorhanden: 999999999 angeben.
|
||||
/// </summary>
|
||||
public Datenelement Betriebsstättennummer { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Lebenslange Arztnummer aus der Verordnung (zwingend).
|
||||
/// Falls nicht vorhanden: 999999999 angeben.
|
||||
/// Auffüllen auf 9 Stellen ist unzulässig.
|
||||
/// </summary>
|
||||
public Datenelement LebenslangeArztnummer { get; private set; }
|
||||
|
||||
/// <summary>Verordnungsdatum (JJJJMMTT).</summary>
|
||||
public DatenelementDateTime Verordnungsdatum { get; private set; }
|
||||
|
||||
/// <summary>Siehe Schlüssel Unfall/Sonstiges Anlage 3 Abschnitt 8.1.2.</summary>
|
||||
public Datenelement Unfallkennzeichen { get; private set; }
|
||||
|
||||
/// <summary>Siehe Schlüssel BVG/SER Anlage 3 Abschnitt 8.1.2.1.</summary>
|
||||
public Datenelement KennzeichenBVGSonstiges { get; private set; }
|
||||
|
||||
/// <summary>Siehe Schlüssel Kennzeichen Verordnungsbesonderheiten Anlage 3 Abschnitt 8.1.11.</summary>
|
||||
public Datenelement KennzeichenVerordnungsbesonderheiten { get; private set; }
|
||||
|
||||
public SegmentSLLAZHK() : base(Feldart.Muss)
|
||||
{
|
||||
Betriebsstättennummer = new Datenelement("Betriebsstättennummer", 0, 9, Feldart.Muss);
|
||||
LebenslangeArztnummer = new Datenelement("LebenslangeArztnummer", 0, 9, Feldart.Muss);
|
||||
Verordnungsdatum = new DatenelementDateTime("Verordnungsdatum", 8, "yyyyMMdd", Feldart.Muss);
|
||||
Unfallkennzeichen = new Datenelement("Unfallkennzeichen", 1, Feldart.Kann);
|
||||
KennzeichenBVGSonstiges = new Datenelement("KennzeichenBVGSonstiges", 1, Feldart.Kann);
|
||||
KennzeichenVerordnungsbesonderheiten = new Datenelement("KennzeichenVerordnungsbesonderheiten", 1, Feldart.Kann);
|
||||
}
|
||||
|
||||
public override string GetHead() => "ZHK";
|
||||
public override List<Dateneinheit> GetBody()
|
||||
=> new List<Dateneinheit>
|
||||
{
|
||||
Betriebsstättennummer,
|
||||
LebenslangeArztnummer,
|
||||
Verordnungsdatum,
|
||||
Unfallkennzeichen,
|
||||
KennzeichenBVGSonstiges,
|
||||
KennzeichenVerordnungsbesonderheiten
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -234,6 +234,8 @@
|
||||
<Compile Include="Access\UserDAO.cs" />
|
||||
<Compile Include="ASPHibernateSessionManager.cs" />
|
||||
<Compile Include="DefaultHibernateSessionManager.cs" />
|
||||
<Compile Include="Entities\AiPromptbausteinRoutine.cs" />
|
||||
<Compile Include="Entities\AiPromptbausteinRoutineStep.cs" />
|
||||
<Compile Include="Entities\AiUserSetting.cs" />
|
||||
<Compile Include="Entities\AiVoiceData.cs" />
|
||||
<Compile Include="Entities\OvertimeHistory.cs" />
|
||||
|
||||
38
Data/Entities/AiPromptbausteinRoutine.cs
Normal file
38
Data/Entities/AiPromptbausteinRoutine.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.DataContracts.Feature.AI;
|
||||
|
||||
namespace BeWo.Data.Entities
|
||||
{
|
||||
public class AiPromptbausteinRoutine : BeWoEntityBase
|
||||
{
|
||||
public AiPromptbausteinRoutine()
|
||||
{
|
||||
_Tid = TableID.AiPromptbausteinRoutine;
|
||||
}
|
||||
|
||||
public virtual string Title { get; set; }
|
||||
|
||||
public virtual string Description { get; set; }
|
||||
|
||||
public virtual long? ParentFolderOid { get; set; }
|
||||
|
||||
public virtual long CreatorOid { get; set; }
|
||||
|
||||
public virtual bool IsPublic { get; set; }
|
||||
|
||||
public virtual int Position { get; set; }
|
||||
|
||||
public virtual bool IsFavorite { get; set; }
|
||||
|
||||
public virtual AiActionType ActionType { get; set; }
|
||||
|
||||
public virtual bool CanEdit { get; set; }
|
||||
|
||||
public virtual List<AiPromptbausteinRoutineStep> Steps { get; set; }
|
||||
}
|
||||
}
|
||||
22
Data/Entities/AiPromptbausteinRoutineStep.cs
Normal file
22
Data/Entities/AiPromptbausteinRoutineStep.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
|
||||
namespace BeWo.Data.Entities
|
||||
{
|
||||
public class AiPromptbausteinRoutineStep : BeWoEntityBase
|
||||
{
|
||||
public AiPromptbausteinRoutineStep()
|
||||
{
|
||||
_Tid = TableID.AiPromptbausteinRoutineStep;
|
||||
}
|
||||
|
||||
public virtual int Position { get; set; }
|
||||
|
||||
public virtual AiPromptbausteinPrompt PromptReference { get; set; }
|
||||
|
||||
public virtual long ReferenceVersion { get; set; }
|
||||
}
|
||||
}
|
||||
63018
Data/ICD10/icd10.xml
63018
Data/ICD10/icd10.xml
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -24,6 +24,7 @@ using BeWo.Service.DCEntityMapper;
|
||||
using BS.Shared.ReportRequests;
|
||||
|
||||
using SecurityUtils = BeWo.Service.Security.SecurityUtils;
|
||||
using DevExpress.DataProcessing;
|
||||
|
||||
namespace Host
|
||||
{
|
||||
@@ -784,8 +785,33 @@ namespace Host
|
||||
|
||||
private XtraReport CreateJahresbericht()
|
||||
{
|
||||
int year = int.Parse(Request.Params["y"]);
|
||||
long? cbOid = null;
|
||||
int year = DateTime.Now.Year - 1;
|
||||
if (Request.Params["y"] != null)
|
||||
{
|
||||
year = int.Parse(Request.Params["y"]);
|
||||
}
|
||||
DateTime start = new DateTime(year, 1, 1);
|
||||
DateTime end = new DateTime(year, 12, 31);
|
||||
bool showOnlyApprovedSupportConcepts = true;
|
||||
bool stichtagsbezogen = true;
|
||||
|
||||
if (Request.Params["start"] != null)
|
||||
{
|
||||
start = DateTime.Parse(Request.Params["start"]);
|
||||
}
|
||||
if (Request.Params["end"] != null)
|
||||
{
|
||||
end = DateTime.Parse(Request.Params["end"]);
|
||||
}
|
||||
if (Request.Params["appr"] != null)
|
||||
{
|
||||
showOnlyApprovedSupportConcepts = "0".Equals(Request.Params["appr"]) ? false : true;
|
||||
}
|
||||
if (Request.Params["stichtag"] != null)
|
||||
{
|
||||
stichtagsbezogen = "0".Equals(Request.Params["stichtag"]) ? false : true;
|
||||
}
|
||||
long? cbOid = null;
|
||||
if (Request.Params["cb"] != null)
|
||||
cbOid = long.Parse(Request.Params["cb"]);
|
||||
|
||||
@@ -797,7 +823,19 @@ namespace Host
|
||||
if (Request.Params["art"] != null)
|
||||
artOid = long.Parse(Request.Params["art"]);
|
||||
|
||||
return reportCreator.CreateJahresberichtReport(year, cbOid, teamOid, artOid);
|
||||
|
||||
var config = new AnnualReportConfigDC
|
||||
{
|
||||
CostbearerOid = cbOid,
|
||||
TeamOid = teamOid,
|
||||
CustomerCareTypeValueListEntryOid = artOid,
|
||||
StartDate = start,
|
||||
EndDate = end,
|
||||
ShowOnlyApprovedSupportConcepts = showOnlyApprovedSupportConcepts,
|
||||
StichtagsbezogenAuswerten = stichtagsbezogen
|
||||
};
|
||||
|
||||
return reportCreator.CreateJahresberichtReport(config);
|
||||
}
|
||||
|
||||
private XtraReport CreateEmployeeDataReport()
|
||||
|
||||
@@ -420,6 +420,7 @@
|
||||
|
||||
<add key="OllamaUrl" value="https://ai2.ownsoft.de" />
|
||||
<add key="Ollama2Url" value="https://ai3.ownsoft.de" />
|
||||
<add key="AiPromptsUrl" value="https://test2.evplaner.de" />
|
||||
|
||||
<add key="XRechnungApiUrl" value="https://test2.evplaner.de/xrg/"/>
|
||||
<add key="StoredTenantFilesFolderPath" value="C:\BeWoPlaner\StoredTenantFiles"/>
|
||||
|
||||
@@ -439,6 +439,7 @@
|
||||
|
||||
<add key="OllamaUrl" value="https://ai2.ownsoft.de" />
|
||||
<add key="Ollama2Url" value="https://ai3.ownsoft.de" />
|
||||
<add key="AiPromptsUrl" value="https://test2.evplaner.de" />
|
||||
|
||||
<add key="XRechnungApiUrl" value="https://test2.evplaner.de/xrg/" />
|
||||
<add key="StoredFilesFolderPath" value="C:\BeWoPlaner\StoredFiles" />
|
||||
|
||||
42
Model/Changes_2026-04-17 AiPromptroutine.txt
Normal file
42
Model/Changes_2026-04-17 AiPromptroutine.txt
Normal file
@@ -0,0 +1,42 @@
|
||||
INSERT INTO `.executedscripts`
|
||||
VALUES ('Changes_2026-04-17 AiPromptroutine', CURDATE());
|
||||
|
||||
CREATE TABLE `aipromptroutinestep` (
|
||||
`Oid` bigint NOT NULL AUTO_INCREMENT,
|
||||
`InsTs` datetime DEFAULT NULL,
|
||||
`InsUser` varchar(256) DEFAULT NULL,
|
||||
`Notice` varchar(1024) DEFAULT NULL,
|
||||
`Tid` int DEFAULT NULL,
|
||||
`UdpUser` varchar(256) DEFAULT NULL,
|
||||
`Version` bigint DEFAULT NULL,
|
||||
`IsActive` tinyint DEFAULT NULL,
|
||||
`SystemEntryID` int DEFAULT NULL,
|
||||
`Position` int,
|
||||
`PromptReferenceOid` bigint DEFAULT NULL,
|
||||
`PromptReferenceVersion` bigint,
|
||||
PRIMARY KEY (`Oid`),
|
||||
CONSTRAINT `FK_AIPROMPTROUTINESTEP_PROMPT` FOREIGN KEY (`PromptReferenceOid`) REFERENCES `aipromptbausteinprompt` (`Oid`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
|
||||
|
||||
CREATE TABLE `aipromptroutine` (
|
||||
`Oid` bigint NOT NULL AUTO_INCREMENT,
|
||||
`InsTs` datetime DEFAULT NULL,
|
||||
`InsUser` varchar(256) DEFAULT NULL,
|
||||
`Notice` varchar(1024) DEFAULT NULL,
|
||||
`Tid` int DEFAULT NULL,
|
||||
`UdpUser` varchar(256) DEFAULT NULL,
|
||||
`Version` bigint DEFAULT NULL,
|
||||
`IsActive` tinyint DEFAULT NULL,
|
||||
`SystemEntryID` int DEFAULT NULL,
|
||||
`Title` varchar(255),
|
||||
`Description` varchar(255),
|
||||
`ParentFolderOid` bigint DEFAULT NULL,
|
||||
`CreatorOid` bigint,
|
||||
`IsPublic` tinyint,
|
||||
`Position` int,
|
||||
`IsFavorite` tinyint,
|
||||
`ActionType` int,
|
||||
PRIMARY KEY (`Oid`),
|
||||
CONSTRAINT `FK_AIPROMPTROUTINE_EMPLOYEE` FOREIGN KEY (`CreatorOid`) REFERENCES `employee` (`Oid`),
|
||||
CONSTRAINT `FK_AIPROMPTROUTINE_PARENT` FOREIGN KEY (`ParentFolderOid`) REFERENCES `aipromptbausteinfolder` (`Oid`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
|
||||
8
Model/Changes_2026-04-20 AiPromptroutine 2.txt
Normal file
8
Model/Changes_2026-04-20 AiPromptroutine 2.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
INSERT INTO `.executedscripts`
|
||||
VALUES ('Changes_2026-04-20 AiPromptroutine 2', CURDATE());
|
||||
|
||||
ALTER TABLE `aipromptroutine`
|
||||
RENAME TO `aipromptbauteinroutine` ;
|
||||
|
||||
ALTER TABLE `aipromptroutinestep`
|
||||
RENAME TO `aipromptbausteinroutinestep` ;
|
||||
@@ -0,0 +1,51 @@
|
||||
-- Wie viel Prozent der Stunden wurden bei Leistungskategorie Qualifiziert durch Assistenzkraft erbracht und andersrum
|
||||
-- 3432911735 (APP4) Caritasverband GünzburgNeuUlm
|
||||
|
||||
-- *** Mapping (kundenspezifisch anpassen) ***
|
||||
-- Leistungskategorie 'Qualifiziert' -> passende Qualifikation: Q1, Q2
|
||||
-- Leistungskategorie 'Unterstützend' -> passende Qualifikation: Q3, Q4
|
||||
|
||||
SELECT
|
||||
p.LastName AS 'Nachname',
|
||||
p.Firstname AS 'Vorname',
|
||||
c2s.ApprovedStartDate AS 'Bewilligt von',
|
||||
c2s.ApprovedEndDate AS 'Bewilligt bis',
|
||||
ROUND(SUM(CASE WHEN scat.Name = 'Qualifiziert' AND q12.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Qualifiziert durch Q1/Q2',
|
||||
ROUND(SUM(CASE WHEN scat.Name = 'Qualifiziert' AND q34.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Qualifiziert durch Q3/Q4',
|
||||
ROUND(SUM(CASE WHEN scat.Name = 'Unterstützend' AND q12.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Unterstützend durch Q1/Q2',
|
||||
ROUND(SUM(CASE WHEN scat.Name = 'Unterstützend' AND q34.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Unterstützend durch Q3/Q4',
|
||||
ROUND(SUM(CASE WHEN q12.EmployeeOid IS NULL AND q34.EmployeeOid IS NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Ohne Qualifikation',
|
||||
ROUND(SUM(sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount)) / 60, 2) AS 'Gesamt (Std)',
|
||||
-- Unterqualifiziert: Qualifiziert durch Q3/Q4 in %
|
||||
ROUND(SUM(CASE WHEN scat.Name = 'Qualifiziert' AND q34.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END)
|
||||
/ NULLIF(SUM(CASE WHEN scat.Name = 'Qualifiziert' THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END), 0) * 100, 1) AS '% Unterqualifiziert',
|
||||
-- Überqualifiziert: Unterstützend durch Q1/Q2 in %
|
||||
ROUND(SUM(CASE WHEN scat.Name = 'Unterstützend' AND q12.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END)
|
||||
/ NULLIF(SUM(CASE WHEN scat.Name = 'Unterstützend' THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END), 0) * 100, 1) AS '% Überqualifiziert'
|
||||
FROM servicerecord sr
|
||||
JOIN costbearer2supportconcept c2s ON sr.CostBearer2SupportConceptOid = c2s.Oid
|
||||
JOIN supportconcept sc ON c2s.SupportConceptOid = sc.Oid
|
||||
JOIN customer c ON sc.CustomerOid = c.Oid
|
||||
JOIN person p ON c.PersonOid = p.Oid
|
||||
JOIN servicedescription sd ON sd.Oid = sr.ServiceDescriptionOid
|
||||
JOIN servicecategory scat ON scat.Oid = sd.ServiceCategoryOid
|
||||
|
||||
-- *** Mapping (kundenspezifisch anpassen) ***
|
||||
LEFT JOIN (
|
||||
SELECT DISTINCT v2o.ObjectOid AS EmployeeOid
|
||||
FROM valuelistentry2object v2o
|
||||
JOIN valuelistentry vle ON vle.Oid = v2o.ValuelistEntryOid
|
||||
WHERE v2o.ObjectTid = 2 AND v2o.IsActive = 1 AND vle.Type = 5 AND vle.IsActive = 1 AND vle.Value IN ('Q1', 'Q2') -- Qualifikationen für 'Qualifiziert'
|
||||
) q12 ON q12.EmployeeOid = sr.EmployeeOid
|
||||
|
||||
LEFT JOIN (
|
||||
SELECT DISTINCT v2o.ObjectOid AS EmployeeOid
|
||||
FROM valuelistentry2object v2o
|
||||
JOIN valuelistentry vle ON vle.Oid = v2o.ValuelistEntryOid
|
||||
WHERE v2o.ObjectTid = 2 AND v2o.IsActive = 1 AND vle.Type = 5 AND vle.IsActive = 1 AND vle.Value IN ('Q3', 'Q4') -- Qualifikationen für 'Unterstützend'
|
||||
) q34 ON q34.EmployeeOid = sr.EmployeeOid
|
||||
-- *** Ende Mapping ***
|
||||
WHERE scat.Billable = 1 AND c2s.ApprovedStartDate <= CURDATE() AND (c2s.ApprovedEndDate >= CURDATE() OR c2s.ApprovedEndDate IS NULL)
|
||||
-- AND sr.StartDate >= ':Von' AND sr.StartDate < ':Bis'
|
||||
GROUP BY p.LastName, p.Firstname, c2s.ApprovedStartDate, c2s.ApprovedEndDate
|
||||
ORDER BY p.LastName;
|
||||
@@ -0,0 +1,49 @@
|
||||
-- Query-Idee für Herrn Ferchland - 2385915144 (APP6)
|
||||
-- Hilfepläne mit aktuellen Bewilligungen (max 4 Bew mit Leistungskategorie u Stunden / Woche)
|
||||
|
||||
SELECT
|
||||
p.LastName AS Nachname,
|
||||
p.FirstName AS Vorname,
|
||||
o.`Name` AS Kostentraeger,
|
||||
cb2sc.RequestedStartDate AS 'Beantragt von',
|
||||
cb2sc.RequestedEndDate AS 'Beantragt bis',
|
||||
cb2sc.ApprovedStartDate AS 'Bewilligt von',
|
||||
cb2sc.ApprovedEndDate AS 'Bewilligt bis',
|
||||
MAX(CASE WHEN scap.rn = 1 THEN cat1.Name END) AS 'Bewilligung 1',
|
||||
MAX(CASE WHEN scap.rn = 1 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 1',
|
||||
MAX(CASE WHEN scap.rn = 1 THEN scap.Notice END) AS 'Bemerkungen 1',
|
||||
MAX(CASE WHEN scap.rn = 2 THEN cat2.Name END) AS 'Bewilligung 2',
|
||||
MAX(CASE WHEN scap.rn = 2 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 2',
|
||||
MAX(CASE WHEN scap.rn = 2 THEN scap.Notice END) AS 'Bemerkungen 2',
|
||||
MAX(CASE WHEN scap.rn = 3 THEN cat3.Name END) AS 'Bewilligung 3',
|
||||
MAX(CASE WHEN scap.rn = 3 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 3',
|
||||
MAX(CASE WHEN scap.rn = 3 THEN scap.Notice END) AS 'Bemerkungen 3'
|
||||
FROM `person` p
|
||||
INNER JOIN `customer` c ON p.Oid = c.PersonOid
|
||||
LEFT JOIN team2customer t2c ON c.Oid = t2c.CustomerOid
|
||||
LEFT JOIN team t ON t2c.TeamOid = t.Oid
|
||||
INNER JOIN `supportconcept` sc ON c.Oid = sc.CustomerOid
|
||||
INNER JOIN `costbearer2supportconcept` cb2sc ON sc.Oid = cb2sc.SupportConceptOid
|
||||
INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid`
|
||||
INNER JOIN `organisation` o ON cb.`Oid` = o.`CostBearerOid`
|
||||
INNER JOIN (
|
||||
SELECT s1.Oid, s1.CostBearer2SupportConceptOid, s1.ApprovedBEPerInterval,
|
||||
s1.Start, s1.EndDate, s1.Notice, s1.ServiceCategoryOid,
|
||||
COUNT(s2.Oid) + 1 AS rn
|
||||
FROM `supportconceptapprovalperiod` s1
|
||||
LEFT JOIN `supportconceptapprovalperiod` s2
|
||||
ON s1.CostBearer2SupportConceptOid = s2.CostBearer2SupportConceptOid
|
||||
AND s1.Start <= CURDATE()
|
||||
AND (s1.EndDate IS NULL OR s1.EndDate >= CURDATE())
|
||||
AND (s2.Start < s1.Start OR (s2.Start = s1.Start AND s2.Oid < s1.Oid))
|
||||
WHERE s1.Start <= CURDATE()
|
||||
AND (s1.EndDate IS NULL OR s1.EndDate >= CURDATE())
|
||||
GROUP BY s1.Oid, s1.CostBearer2SupportConceptOid, s1.ApprovedBEPerInterval,
|
||||
s1.Start, s1.EndDate, s1.ServiceCategoryOid
|
||||
) scap ON cb2sc.Oid = scap.CostBearer2SupportConceptOid
|
||||
LEFT JOIN servicecategory cat1 ON scap.ServiceCategoryOid = cat1.Oid AND scap.rn = 1
|
||||
LEFT JOIN servicecategory cat2 ON scap.ServiceCategoryOid = cat2.Oid AND scap.rn = 2
|
||||
LEFT JOIN servicecategory cat3 ON scap.ServiceCategoryOid = cat3.Oid AND scap.rn = 3
|
||||
WHERE c.IsActive = 1 AND sc.IsActive = 1
|
||||
GROUP BY p.Oid, p.LastName, p.FirstName, p.DateOfBirth, o.`Name`, cb2sc.ApprovedStartDate, cb2sc.ApprovedEndDate
|
||||
ORDER BY t.Name, p.LastName;
|
||||
@@ -0,0 +1,78 @@
|
||||
-- Query- für Herrn Ferchland - 2385915144 (APP6)
|
||||
-- Hilfepläne mit aktuellen Bewilligungen (max 3 Bew mit Leistungskategorie u Stunden / Woche + Betreuern)
|
||||
|
||||
SELECT
|
||||
base.Nachname, base.Vorname, base.Kostentraeger, base.`Bewilligt von`, base.`Bewilligt bis`, base.`Bewilligung 1`, base.`Stunden 1`,
|
||||
-- Betreuer für SCAP 1
|
||||
(SELECT GROUP_CONCAT(CONCAT(p2.`FirstName`, ' ', p2.`LastName`) ORDER BY scap2e.EmployeeOid SEPARATOR ', ')
|
||||
FROM supportconceptapprovalperiod2employee scap2e
|
||||
INNER JOIN `employee` e ON scap2e.`EmployeeOid` = e.`Oid`
|
||||
INNER JOIN `person` p2 ON e.`PersonOid` = p2.`Oid`
|
||||
WHERE scap2e.SupportConceptApprovalPeriodOid = base.scap1_oid
|
||||
) AS 'Betreuer 1',
|
||||
base.`Bewilligung 2`, base.`Stunden 2`,
|
||||
-- Betreuer für SCAP 2
|
||||
(SELECT GROUP_CONCAT(
|
||||
CONCAT(p2.`FirstName`, ' ', p2.`LastName`)
|
||||
ORDER BY scap2e.EmployeeOid SEPARATOR ', ')
|
||||
FROM supportconceptapprovalperiod2employee scap2e
|
||||
INNER JOIN `employee` e ON scap2e.`EmployeeOid` = e.`Oid`
|
||||
INNER JOIN `person` p2 ON e.`PersonOid` = p2.`Oid`
|
||||
WHERE scap2e.SupportConceptApprovalPeriodOid = base.scap2_oid
|
||||
) AS 'Betreuer 2',
|
||||
base.`Bewilligung 3`, base.`Stunden 3`,
|
||||
-- Betreuer für SCAP 3
|
||||
(SELECT GROUP_CONCAT(
|
||||
CONCAT(p2.`FirstName`, ' ', p2.`LastName`)
|
||||
ORDER BY scap2e.EmployeeOid SEPARATOR ', ')
|
||||
FROM supportconceptapprovalperiod2employee scap2e
|
||||
INNER JOIN `employee` e ON scap2e.`EmployeeOid` = e.`Oid`
|
||||
INNER JOIN `person` p2 ON e.`PersonOid` = p2.`Oid`
|
||||
WHERE scap2e.SupportConceptApprovalPeriodOid = base.scap3_oid
|
||||
) AS 'Betreuer 3'
|
||||
|
||||
FROM (
|
||||
-- Kernabfrage Bewilligungen ohne Betreuuer
|
||||
SELECT
|
||||
p.LastName AS Nachname,
|
||||
p.FirstName AS Vorname,
|
||||
o.`Name` AS Kostentraeger,
|
||||
cb2sc.ApprovedStartDate AS 'Bewilligt von',
|
||||
cb2sc.ApprovedEndDate AS 'Bewilligt bis',
|
||||
MAX(CASE WHEN scap.rn = 1 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 1',
|
||||
MAX(CASE WHEN scap.rn = 1 THEN CONCAT(DATE_FORMAT(scap.Start, '%d.%m.%Y'), ' - ', DATE_FORMAT(scap.EndDate, '%d.%m.%Y'), ' ', cat1.Name) END) AS 'Bewilligung 1',
|
||||
MAX(CASE WHEN scap.rn = 2 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 2',
|
||||
MAX(CASE WHEN scap.rn = 2 THEN CONCAT(DATE_FORMAT(scap.Start, '%d.%m.%Y'), ' - ', DATE_FORMAT(scap.EndDate, '%d.%m.%Y'), ' ', cat2.Name) END) AS 'Bewilligung 2',
|
||||
MAX(CASE WHEN scap.rn = 3 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 3',
|
||||
MAX(CASE WHEN scap.rn = 3 THEN CONCAT(DATE_FORMAT(scap.Start, '%d.%m.%Y'), ' - ', DATE_FORMAT(scap.EndDate, '%d.%m.%Y'), ' ', cat3.Name) END) AS 'Bewilligung 3',
|
||||
-- Hilfsspalten: OIDs der 4 SCRAPs für die Betreuer-Subqueries
|
||||
MAX(CASE WHEN scap.rn = 1 THEN scap.Oid END) AS scap1_oid,
|
||||
MAX(CASE WHEN scap.rn = 2 THEN scap.Oid END) AS scap2_oid,
|
||||
MAX(CASE WHEN scap.rn = 3 THEN scap.Oid END) AS scap3_oid
|
||||
FROM `person` p
|
||||
INNER JOIN `customer` c ON p.Oid = c.PersonOid
|
||||
LEFT JOIN team2customer t2c ON c.Oid = t2c.CustomerOid
|
||||
LEFT JOIN team t ON t2c.TeamOid = t.Oid
|
||||
INNER JOIN `supportconcept` sc ON c.Oid = sc.CustomerOid
|
||||
INNER JOIN `costbearer2supportconcept` cb2sc ON sc.Oid = cb2sc.SupportConceptOid
|
||||
INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid`
|
||||
INNER JOIN `organisation` o ON cb.`Oid` = o.`CostBearerOid`
|
||||
INNER JOIN (
|
||||
SELECT s1.Oid, s1.CostBearer2SupportConceptOid, s1.ApprovedBEPerInterval,
|
||||
s1.Start, s1.EndDate, s1.ServiceCategoryOid, s1.Notice,
|
||||
COUNT(s2.Oid) + 1 AS rn
|
||||
FROM `supportconceptapprovalperiod` s1
|
||||
LEFT JOIN `supportconceptapprovalperiod` s2
|
||||
ON s1.CostBearer2SupportConceptOid = s2.CostBearer2SupportConceptOid
|
||||
-- AND s1.Start <= CURDATE() AND (s1.EndDate IS NULL OR s1.EndDate >= CURDATE())
|
||||
AND (s2.Start < s1.Start OR (s2.Start = s1.Start AND s2.Oid < s1.Oid))
|
||||
-- WHERE s1.Start <= CURDATE() AND (s1.EndDate IS NULL OR s1.EndDate >= CURDATE())
|
||||
GROUP BY s1.Oid, s1.CostBearer2SupportConceptOid, s1.ApprovedBEPerInterval, s1.Start, s1.EndDate, s1.ServiceCategoryOid, s1.Notice
|
||||
) scap ON cb2sc.Oid = scap.CostBearer2SupportConceptOid
|
||||
LEFT JOIN servicecategory cat1 ON scap.ServiceCategoryOid = cat1.Oid AND scap.rn = 1
|
||||
LEFT JOIN servicecategory cat2 ON scap.ServiceCategoryOid = cat2.Oid AND scap.rn = 2
|
||||
LEFT JOIN servicecategory cat3 ON scap.ServiceCategoryOid = cat3.Oid AND scap.rn = 3
|
||||
WHERE c.IsActive = 1 AND sc.IsActive = 1
|
||||
GROUP BY p.Oid, p.LastName, p.FirstName, p.DateOfBirth, o.`Name`, cb2sc.ApprovedStartDate, cb2sc.ApprovedEndDate
|
||||
ORDER BY t.Name, p.LastName
|
||||
) base;
|
||||
@@ -73,7 +73,7 @@ namespace BeWo.Report
|
||||
|
||||
public abstract XtraReport CreateFinanceReport(DateTime? start, DateTime? end, bool splitByServiceCategory, bool onlyNotApproved);
|
||||
|
||||
public abstract XtraReport CreateJahresberichtReport(int year, long? cbOid, long? teamOid, long? betreuungsartOid);
|
||||
public abstract XtraReport CreateJahresberichtReport(AnnualReportConfigDC config);
|
||||
|
||||
public abstract XtraReport CreateKassenbelegReport(BargeldtransaktionDC transaktion, long objectOid, TableID objectTid);
|
||||
|
||||
|
||||
@@ -1156,11 +1156,11 @@ namespace BeWo.Report
|
||||
return report as XtraReport;
|
||||
}
|
||||
|
||||
public override XtraReport CreateJahresberichtReport(int year, long? cbOid, long? teamOid, long? betreuungsartOid)
|
||||
public override XtraReport CreateJahresberichtReport(AnnualReportConfigDC config)
|
||||
{
|
||||
var report = FindReportImp<JahresReportRO>();
|
||||
|
||||
report.SetReportDataSource(JahresReportRO.Create(year, cbOid, teamOid, betreuungsartOid));
|
||||
report.SetReportDataSource(JahresReportRO.Create(config));
|
||||
|
||||
return report as XtraReport;
|
||||
}
|
||||
@@ -1633,8 +1633,8 @@ namespace BeWo.Report
|
||||
table.Rows.Add(row);
|
||||
}
|
||||
|
||||
var queryReportObject = QueryRO.Create(new Query() { Title = "Mitarbeiter" }, table);
|
||||
queryReportObject.Name = "Mitarbeiter";
|
||||
var queryReportObject = QueryRO.Create(new Query() { Title = "Klienten" }, table);
|
||||
queryReportObject.Name = "Klienten";
|
||||
queryReport.SetReportDataSource(queryReportObject);
|
||||
|
||||
return queryReport as XtraReport;
|
||||
|
||||
1479
Report/DefaultReports/AssessmentSheetReport.Designer.cs
generated
1479
Report/DefaultReports/AssessmentSheetReport.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -117,7 +117,4 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<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>
|
||||
@@ -63,6 +63,7 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
|
||||
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
@@ -83,7 +84,6 @@ namespace BeWo.Report.DefaultReports
|
||||
this.fieldDifferenzWoche2 = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldDifferenzWoche3 = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldDifferenzWoche4 = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableData)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
|
||||
@@ -452,6 +452,10 @@ namespace BeWo.Report.DefaultReports
|
||||
this.GroupHeader1.Level = 1;
|
||||
this.GroupHeader1.Name = "GroupHeader1";
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.FLSSollIstReportRO);
|
||||
//
|
||||
// ReportHeader
|
||||
//
|
||||
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
@@ -520,7 +524,7 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(560F, 25F);
|
||||
this.xrLabel1.StyleName = "Title";
|
||||
this.xrLabel1.StylePriority.UseFont = false;
|
||||
this.xrLabel1.Text = "Auswertung über geleistete Fachleistungsstunden";
|
||||
this.xrLabel1.Text = "Auswertung über geleistete Stunden";
|
||||
//
|
||||
// pageFooterBand1
|
||||
//
|
||||
@@ -633,10 +637,6 @@ namespace BeWo.Report.DefaultReports
|
||||
this.fieldDifferenzWoche4.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
|
||||
this.fieldDifferenzWoche4.Name = "fieldDifferenzWoche4";
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.FLSSollIstReportRO);
|
||||
//
|
||||
// FLSSollIstWeeklyReport
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace BeWo.Report.DefaultReports
|
||||
|
||||
private String GetWochenKey(FLSSollIstReportRO.FLSSollIstWochenSummen woche)
|
||||
{
|
||||
return String.Format("KW {0}, {1:dd.MM.yy} - {2:dd.MM.yy}", woche.KalenderWoche, woche.WocheStart, woche.WocheEnde);
|
||||
return String.Format("{3}: KW {0}, {1:dd.MM.yy} - {2:dd.MM.yy}", woche.KalenderWoche, woche.WocheStart, woche.WocheEnde, woche.ObjectOid);
|
||||
}
|
||||
private void CreateTableCells(List<FLSSollIstReportRO.FLSSollIstWochenSummen> wochen)
|
||||
{
|
||||
|
||||
@@ -8,8 +8,6 @@ namespace BeWo.Report.DefaultReports
|
||||
[IDSpecificClass(Identifier = "Mitarbeiterauslastung")]
|
||||
public partial class Mitarbeiterauslastung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<MitarbeiterauslastungRO>
|
||||
{
|
||||
|
||||
|
||||
public Mitarbeiterauslastung()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -22,6 +20,5 @@ namespace BeWo.Report.DefaultReports
|
||||
|
||||
this.bindingSource1.DataSource = pRO;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
201
Report/DefaultReports/Mitarbeiterauslastung.designer.cs
generated
201
Report/DefaultReports/Mitarbeiterauslastung.designer.cs
generated
@@ -42,6 +42,7 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell28 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
this.DetailReport1 = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
this.Detail2 = new DevExpress.XtraReports.UI.DetailBand();
|
||||
@@ -52,13 +53,8 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
|
||||
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell38 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.cellSollGesamt = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
|
||||
this.lblMonat = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand();
|
||||
@@ -73,14 +69,18 @@ namespace BeWo.Report.DefaultReports
|
||||
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
|
||||
this.fieldTotalSC = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldTotalEmp = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
|
||||
//
|
||||
// Detail
|
||||
@@ -195,6 +195,15 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell28.Text = "xrTableCell28";
|
||||
this.xrTableCell28.Weight = 0.090171325518485085D;
|
||||
//
|
||||
// xrTableCell8
|
||||
//
|
||||
this.xrTableCell8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.FreiProWoche")});
|
||||
this.xrTableCell8.Multiline = true;
|
||||
this.xrTableCell8.Name = "xrTableCell8";
|
||||
this.xrTableCell8.TextFormatString = "{0:0.00}";
|
||||
this.xrTableCell8.Weight = 0.090171325518485085D;
|
||||
//
|
||||
// DetailReport
|
||||
//
|
||||
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
@@ -279,7 +288,7 @@ namespace BeWo.Report.DefaultReports
|
||||
// xrTableCell1
|
||||
//
|
||||
this.xrTableCell1.Name = "xrTableCell1";
|
||||
this.xrTableCell1.Text = "Kostenträger";
|
||||
this.xrTableCell1.Text = "Kostentr<EFBFBD>ger";
|
||||
this.xrTableCell1.Weight = 0.15329125478030678D;
|
||||
//
|
||||
// xrTableCell9
|
||||
@@ -289,70 +298,21 @@ namespace BeWo.Report.DefaultReports
|
||||
this.xrTableCell9.Text = "Bewilligt/Woche";
|
||||
this.xrTableCell9.Weight = 0.090171325937473845D;
|
||||
//
|
||||
// xrTableCell7
|
||||
//
|
||||
this.xrTableCell7.Multiline = true;
|
||||
this.xrTableCell7.Name = "xrTableCell7";
|
||||
this.xrTableCell7.Text = "Frei/Woche";
|
||||
this.xrTableCell7.Weight = 0.090171325937473845D;
|
||||
//
|
||||
// GroupFooter1
|
||||
//
|
||||
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrTable1});
|
||||
this.GroupFooter1.HeightF = 61.04164F;
|
||||
this.xrTable2});
|
||||
this.GroupFooter1.HeightF = 61.04167F;
|
||||
this.GroupFooter1.Level = 1;
|
||||
this.GroupFooter1.Name = "GroupFooter1";
|
||||
//
|
||||
// xrTable1
|
||||
//
|
||||
this.xrTable1.Font = new DevExpress.Drawing.DXFont("Arial", 8F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrTable1.Name = "xrTable1";
|
||||
this.xrTable1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow1});
|
||||
this.xrTable1.SizeF = new System.Drawing.SizeF(697F, 25F);
|
||||
this.xrTable1.StylePriority.UseBorders = false;
|
||||
this.xrTable1.StylePriority.UseFont = false;
|
||||
this.xrTable1.StylePriority.UsePadding = false;
|
||||
this.xrTable1.StylePriority.UseTextAlignment = false;
|
||||
this.xrTable1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// xrTableRow1
|
||||
//
|
||||
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell35,
|
||||
this.xrTableCell38,
|
||||
this.xrTableCell6,
|
||||
this.cellSollGesamt,
|
||||
this.xrTableCell10});
|
||||
this.xrTableRow1.Name = "xrTableRow1";
|
||||
this.xrTableRow1.Weight = 1D;
|
||||
//
|
||||
// xrTableCell35
|
||||
//
|
||||
this.xrTableCell35.Name = "xrTableCell35";
|
||||
this.xrTableCell35.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
|
||||
this.xrTableCell35.StylePriority.UseFont = false;
|
||||
this.xrTableCell35.StylePriority.UsePadding = false;
|
||||
this.xrTableCell35.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell35.Text = "Gesamt";
|
||||
this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell35.Weight = 0.18034254096455143D;
|
||||
//
|
||||
// xrTableCell38
|
||||
//
|
||||
this.xrTableCell38.Name = "xrTableCell38";
|
||||
this.xrTableCell38.Weight = 0.15329111579090118D;
|
||||
//
|
||||
// xrTableCell6
|
||||
//
|
||||
this.xrTableCell6.Name = "xrTableCell6";
|
||||
this.xrTableCell6.Weight = 0.1249972614437581D;
|
||||
//
|
||||
// cellSollGesamt
|
||||
//
|
||||
this.cellSollGesamt.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.ApprovedHoursPerWeek", "{0:0.00}")});
|
||||
this.cellSollGesamt.Name = "cellSollGesamt";
|
||||
this.cellSollGesamt.Text = "cellSollGesamt";
|
||||
this.cellSollGesamt.Weight = 0.0849316752773914D;
|
||||
//
|
||||
// ReportHeader
|
||||
//
|
||||
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
@@ -473,36 +433,75 @@ namespace BeWo.Report.DefaultReports
|
||||
this.fieldTotalEmp.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
|
||||
this.fieldTotalEmp.Name = "fieldTotalEmp";
|
||||
//
|
||||
// xrTableCell7
|
||||
//
|
||||
this.xrTableCell7.Multiline = true;
|
||||
this.xrTableCell7.Name = "xrTableCell7";
|
||||
this.xrTableCell7.Text = "Frei/Woche";
|
||||
this.xrTableCell7.Weight = 0.090171325937473845D;
|
||||
//
|
||||
// xrTableCell8
|
||||
//
|
||||
this.xrTableCell8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.FreiProWoche")});
|
||||
this.xrTableCell8.Multiline = true;
|
||||
this.xrTableCell8.Name = "xrTableCell8";
|
||||
this.xrTableCell8.TextFormatString = "{0:0.00}";
|
||||
this.xrTableCell8.Weight = 0.090171325518485085D;
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterauslastungRO);
|
||||
//
|
||||
// xrTableCell10
|
||||
// xrTableCell15
|
||||
//
|
||||
this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.SupportConceptDetailList.FreiProWoche")});
|
||||
this.xrTableCell10.Multiline = true;
|
||||
this.xrTableCell10.Name = "xrTableCell10";
|
||||
this.xrTableCell15.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.FreiProWoche")});
|
||||
this.xrTableCell15.Multiline = true;
|
||||
this.xrTableCell15.Name = "xrTableCell15";
|
||||
xrSummary1.FormatString = "{0:0.00}";
|
||||
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
|
||||
this.xrTableCell10.Summary = xrSummary1;
|
||||
this.xrTableCell10.Weight = 0.0849316752773914D;
|
||||
this.xrTableCell15.Summary = xrSummary1;
|
||||
this.xrTableCell15.Weight = 0.0849316752773914D;
|
||||
//
|
||||
// xrTableCell14
|
||||
//
|
||||
this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "EmployeeDetailList.ApprovedHoursPerWeek", "{0:0.00}")});
|
||||
this.xrTableCell14.Name = "xrTableCell14";
|
||||
this.xrTableCell14.Text = "cellSollGesamt";
|
||||
this.xrTableCell14.Weight = 0.0849316752773914D;
|
||||
//
|
||||
// xrTableCell13
|
||||
//
|
||||
this.xrTableCell13.Name = "xrTableCell13";
|
||||
this.xrTableCell13.Weight = 0.1249972614437581D;
|
||||
//
|
||||
// xrTableCell12
|
||||
//
|
||||
this.xrTableCell12.Name = "xrTableCell12";
|
||||
this.xrTableCell12.Weight = 0.15329111579090118D;
|
||||
//
|
||||
// xrTableCell11
|
||||
//
|
||||
this.xrTableCell11.Name = "xrTableCell11";
|
||||
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(5, 2, 0, 0, 100F);
|
||||
this.xrTableCell11.StylePriority.UseFont = false;
|
||||
this.xrTableCell11.StylePriority.UsePadding = false;
|
||||
this.xrTableCell11.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell11.Text = "Gesamt (zum Monatsende)";
|
||||
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell11.Weight = 0.18034254096455143D;
|
||||
//
|
||||
// xrTableRow2
|
||||
//
|
||||
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell11,
|
||||
this.xrTableCell12,
|
||||
this.xrTableCell13,
|
||||
this.xrTableCell14,
|
||||
this.xrTableCell15});
|
||||
this.xrTableRow2.Name = "xrTableRow2";
|
||||
this.xrTableRow2.Weight = 1D;
|
||||
//
|
||||
// xrTable2
|
||||
//
|
||||
this.xrTable2.Font = new DevExpress.Drawing.DXFont("Arial", 8F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrTable2.Name = "xrTable2";
|
||||
this.xrTable2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow2});
|
||||
this.xrTable2.SizeF = new System.Drawing.SizeF(697F, 25F);
|
||||
this.xrTable2.StylePriority.UseBorders = false;
|
||||
this.xrTable2.StylePriority.UseFont = false;
|
||||
this.xrTable2.StylePriority.UsePadding = false;
|
||||
this.xrTable2.StylePriority.UseTextAlignment = false;
|
||||
this.xrTable2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// Mitarbeiterauslastung
|
||||
//
|
||||
@@ -532,8 +531,8 @@ namespace BeWo.Report.DefaultReports
|
||||
this.Watermarks.Add(xrWatermark1);
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableDetail)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableHeader)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
|
||||
|
||||
}
|
||||
@@ -566,11 +565,6 @@ namespace BeWo.Report.DefaultReports
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell19;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell28;
|
||||
private DevExpress.XtraReports.UI.XRTable xrTable1;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell38;
|
||||
private DevExpress.XtraReports.UI.XRTableCell cellSollGesamt;
|
||||
private DevExpress.XtraReports.UI.DetailReportBand DetailReport1;
|
||||
private DevExpress.XtraReports.UI.DetailBand Detail2;
|
||||
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
|
||||
@@ -581,9 +575,14 @@ namespace BeWo.Report.DefaultReports
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
|
||||
private DevExpress.XtraReports.UI.XRTable xrTable2;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell15;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report;
|
||||
@@ -24,7 +25,6 @@ namespace BeWo.Report.DefaultReports.Alt
|
||||
{
|
||||
lblNotice.Visible = false;
|
||||
}
|
||||
|
||||
if (pRO.InvoiceItems != null && pRO.InvoiceItems.Count == 1)
|
||||
{
|
||||
var ii = pRO.InvoiceItems[0];
|
||||
@@ -35,7 +35,7 @@ namespace BeWo.Report.DefaultReports.Alt
|
||||
}
|
||||
if (!isDefaultSpitzabrechnung)
|
||||
{
|
||||
if (pRO.DifferentHourlyRateCount > 0 && pRO.HourlyRateNew.HasValue)
|
||||
if (pRO.DifferentHourlyRateCount > 0 && pRO.HourlyRateNew.HasValue && !pRO.InvoiceItems.Any(d => d.ItemDescription != null && d.ItemDescription.Contains("Storno")))
|
||||
{
|
||||
isDefaultSpitzabrechnung = true;
|
||||
}
|
||||
@@ -70,11 +70,19 @@ namespace BeWo.Report.DefaultReports.Alt
|
||||
{
|
||||
foreach (var ii in pRO.InvoiceItems)
|
||||
{
|
||||
ii.ItemDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.00##} FLS {3}x {4:c}",
|
||||
if (ii.ItemDescription != null && ii.ItemDescription.Contains("Storno"))
|
||||
{
|
||||
ii.ItemDescription = String.Format("Ausbuchung zur vorherigen Rechnung - {0:dd.MM.yyyy} bis {1:dd.MM.yyyy}",
|
||||
ii.ItemPeriodStart, ii.ItemPeriodEnd);
|
||||
}
|
||||
else
|
||||
{
|
||||
ii.ItemDescription = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.00##} FLS {3}x {4:c}",
|
||||
ii.ItemPeriodStart, ii.ItemPeriodEnd,
|
||||
ii.UnitCount, ii.RateFactor == 0 ? "" : "x " + pRO.RateFactorText2 + " ",
|
||||
ii.AmountPerUnit);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,8 @@ namespace BeWo.Report.ReportObjects
|
||||
scd.IstKw5 /= 60;
|
||||
scd.IstKw6 /= 60;
|
||||
|
||||
if (scd.EndDate.HasValue && scd.EndDate.Value.AddDays(1) >= ro.ReportEndDate)
|
||||
{
|
||||
empDetail.DirectIst += scd.DirectIst;
|
||||
empDetail.MittelbarIst += scd.MittelbarIst;
|
||||
empDetail.ApprovedHoursPerWeekTotal += scd.ApprovedHoursPerWeekTotal;
|
||||
@@ -55,6 +57,9 @@ namespace BeWo.Report.ReportObjects
|
||||
empDetail.ApprovedHoursPerMonth += scd.ApprovedHoursPerMonth;
|
||||
empDetail.ApprovedHoursPerMonthWithRateFactorTotal += scd.ApprovedHoursPerMonthWithRateFactorTotal;
|
||||
empDetail.ApprovedHoursPerMonthWithRateFactor += scd.ApprovedHoursPerMonthWithRateFactor;
|
||||
empDetail.FreiProWoche += scd.FreiProWoche;
|
||||
empDetail.FreiProMonat += scd.FreiProMonat;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace BeWo.Report.ReportObjects
|
||||
public class FLSSollIstReportRO
|
||||
{
|
||||
public DateTime? ReportEndDate { get; set; }
|
||||
|
||||
public FLSAnalysisConfigDC ReportConfig { get; set; }
|
||||
public DateTime? ReportStartDate { get; set; }
|
||||
|
||||
public List<FLSSollIstRootRO> RootObjectList { get; set; } = new List<FLSSollIstRootRO>();
|
||||
@@ -75,6 +75,7 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
public class FLSSollIstWochenSummen
|
||||
{
|
||||
public long ObjectOid { get; set; } // Entweder Employee oder CustomerOid, je nachdem wer ausgewertet wird
|
||||
public decimal? SollStunden { get; set; }
|
||||
|
||||
public decimal? IstStunden { get; set; }
|
||||
@@ -118,7 +119,7 @@ namespace BeWo.Report.ReportObjects
|
||||
public static FLSSollIstReportRO Create(List<FLSAnalysisRootDC> dcList, FLSAnalysisConfigDC config)
|
||||
{
|
||||
var ro = new FLSSollIstReportRO();
|
||||
|
||||
ro.ReportConfig = config;
|
||||
ro.ReportStartDate = config.StartDate;
|
||||
ro.ReportEndDate = config.EndDate;
|
||||
|
||||
@@ -141,7 +142,6 @@ namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
var grpRo = new FLSSollIstReportGroupRO();
|
||||
grpRo.Name = item.DisplayName;
|
||||
grpRo.WochenSummen = ErstelleWochensummen(config.StartDate, config.EndDate, null);
|
||||
if (item.Employee != null)
|
||||
{
|
||||
grpRo.ObjectOid = item.Employee.EmployeeOid;
|
||||
@@ -152,6 +152,17 @@ namespace BeWo.Report.ReportObjects
|
||||
grpRo.ObjectOid = item.Customer.CustomerOid;
|
||||
grpRo.ObjectTid = TableID.Customer;
|
||||
}
|
||||
long wochenObjectOid = 0;
|
||||
if (root.Employee != null)
|
||||
{
|
||||
wochenObjectOid = root.Employee.EmployeeOid;
|
||||
}
|
||||
else if (root.Customer != null)
|
||||
{
|
||||
wochenObjectOid = root.Customer.CustomerOid;
|
||||
}
|
||||
grpRo.WochenSummen = ErstelleWochensummen(config.StartDate, config.EndDate, null, wochenObjectOid);
|
||||
|
||||
foreach (var sc in item.SupportConcepts)
|
||||
{
|
||||
grpRo.CostBearer2SupportConceptList.Add(sc.SupportConcept2CostBearer);
|
||||
@@ -206,7 +217,7 @@ namespace BeWo.Report.ReportObjects
|
||||
return ro;
|
||||
}
|
||||
|
||||
private static List<FLSSollIstWochenSummen> ErstelleWochensummen(DateTime? startDate, DateTime? endDate, decimal? defaultSoll)
|
||||
private static List<FLSSollIstWochenSummen> ErstelleWochensummen(DateTime? startDate, DateTime? endDate, decimal? defaultSoll, long objectOid)
|
||||
{
|
||||
var liste = new List<FLSSollIstWochenSummen>();
|
||||
if (startDate.HasValue && endDate.HasValue)
|
||||
@@ -219,6 +230,7 @@ namespace BeWo.Report.ReportObjects
|
||||
var sonntag = dt.AddDays(days);
|
||||
|
||||
var ws = new FLSSollIstWochenSummen();
|
||||
ws.ObjectOid = objectOid;
|
||||
ws.WocheStart = dt;
|
||||
|
||||
//Ermittele den nächsten Sonntag
|
||||
|
||||
@@ -223,15 +223,20 @@ namespace BeWo.Report.ReportObjects
|
||||
{
|
||||
records = new List<ServiceRecordDC>();
|
||||
}
|
||||
|
||||
|
||||
// AB, 22.04.2026: Bugfix wenn Betreuung beendet und ein Zeitraum über Ende hinweg gewählt wird
|
||||
var terminationDate = ro.Costbearer2Supportconcept.SupportConcept.Customer.TerminationDate;
|
||||
DateTime? effectiveEnd = end;
|
||||
if (terminationDate.HasValue && (!effectiveEnd.HasValue || terminationDate.Value < effectiveEnd.Value))
|
||||
{
|
||||
effectiveEnd = terminationDate.Value;
|
||||
}
|
||||
|
||||
//1.
|
||||
if (ro.SupportConceptApprovalPeriod != null && ro.SupportConceptApprovalPeriod.ServiceCategory != null)
|
||||
{
|
||||
ro.Leistungskategorie = ro.SupportConceptApprovalPeriod.ServiceCategory.Name;
|
||||
ro.ServiceRecords = records.Where(sr =>
|
||||
sr.ServiceDescription.Category.ServiceCategoryOid == ro.SupportConceptApprovalPeriod.ServiceCategory.ServiceCategoryOid)
|
||||
.ToList();
|
||||
ro.ServiceRecords = records.Where(sr => sr.ServiceDescription.Category.ServiceCategoryOid == ro.SupportConceptApprovalPeriod.ServiceCategory.ServiceCategoryOid).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -272,7 +277,7 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
else
|
||||
{
|
||||
ro.ApprovedHours = calc.GetApprovedHoursTillNow(ro.Costbearer2Supportconcept, end.Value) ?? 0;
|
||||
ro.ApprovedHours = calc.GetApprovedHoursTillNow(ro.Costbearer2Supportconcept, effectiveEnd.Value) ?? 0;
|
||||
}
|
||||
ro.StundenNichtFehlkontakte = calc.GetBillableDurationInMinutes(flsRecords.Where(sr => sr.Start.Value.Date < end.Value.AddDays(1)).ToList()) / 60;
|
||||
ro.StundenFehlkontakte = calc.GetBillableDurationInMinutes(fkRecords.Where(sr => sr.Start.Value.Date < end.Value.AddDays(1)).ToList()) / 60;
|
||||
@@ -317,20 +322,20 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
if (ro.SupportConceptApprovalPeriod != null)
|
||||
{
|
||||
ro.ApprovedHoursInReportTimeSpan = calc.GetApprovedHoursForPeriod(ro.SupportConceptApprovalPeriod, costRateDcs, start, end) ?? 0;
|
||||
ro.ApprovedHoursInReportTimeSpan = calc.GetApprovedHoursForPeriod(ro.SupportConceptApprovalPeriod, costRateDcs, start, effectiveEnd) ?? 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ro.ApprovedHoursInReportTimeSpan = calc.GetApprovedHoursForPeriod(ro.Costbearer2Supportconcept, start.Value, end.Value);
|
||||
ro.ApprovedHoursInReportTimeSpan = calc.GetApprovedHoursForPeriod(ro.Costbearer2Supportconcept, start.Value, effectiveEnd.Value);
|
||||
}
|
||||
|
||||
if (splitByServiceCategory && ro.SupportConceptApprovalPeriod != null)
|
||||
{
|
||||
ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, end.Value, ro.SupportConceptApprovalPeriod.ServiceCategory);
|
||||
ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, effectiveEnd.Value, ro.SupportConceptApprovalPeriod.ServiceCategory);
|
||||
}
|
||||
else
|
||||
{
|
||||
ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, end.Value, null);
|
||||
ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, effectiveEnd.Value, null);
|
||||
}
|
||||
ro.AmountInReportTimeSpan = 0;
|
||||
ro.AmountNichtFehlkontakteInReportTimeSpan = 0;
|
||||
|
||||
@@ -64,23 +64,15 @@ namespace BeWo.Report.ReportObjects
|
||||
}
|
||||
|
||||
|
||||
public static JahresReportRO Create(int year, long? orgOid, long? teamOid, long? betreuungsartOid)
|
||||
{
|
||||
DateTime startDate = new DateTime(year, 1, 1);
|
||||
|
||||
return Create(startDate, startDate.AddYears(1), orgOid, teamOid, betreuungsartOid);
|
||||
|
||||
}
|
||||
|
||||
public static JahresReportRO Create(DateTime start, DateTime end, long? orgOid, long? teamOid, long? betreuungsartOid)
|
||||
public static JahresReportRO Create(AnnualReportConfigDC config)
|
||||
{
|
||||
AnalysisServiceImp service = new AnalysisServiceImp();
|
||||
|
||||
var list = service.CreateAnnualReport(orgOid, teamOid, betreuungsartOid, start, end);
|
||||
var list = service.CreateAnnualReport2(config);
|
||||
|
||||
var ro = Create(list);
|
||||
ro.ReportStartDate = start;
|
||||
ro.ReportEndDate = end;
|
||||
ro.ReportStartDate = config.StartDate;
|
||||
ro.ReportEndDate = config.EndDate;
|
||||
|
||||
return ro;
|
||||
}
|
||||
|
||||
@@ -249,6 +249,10 @@ namespace BeWo.Report.ReportObjects
|
||||
|
||||
public String AbsenceTimeString { get; set; }
|
||||
|
||||
public decimal FreiProWoche { get; set; }
|
||||
|
||||
public decimal FreiProMonat { get; set; }
|
||||
|
||||
public List<SupportConceptDetail> SupportConceptDetailList
|
||||
{
|
||||
get { return scDetailList; }
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace ABCBetreuungenReports
|
||||
if (pRO.Services != null)
|
||||
{
|
||||
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
|
||||
int summeWegepauschalen = 0;
|
||||
decimal summeWegepauschalen = 0;
|
||||
int summeAusfallstunden = 0;
|
||||
foreach (var sd in pRO.Services)
|
||||
{
|
||||
@@ -72,24 +72,16 @@ namespace ABCBetreuungenReports
|
||||
sd.Notice3 = "";
|
||||
}
|
||||
|
||||
// Felder für Wegepauschale setzen (Wenn FLS FaceToFace, dann ja)
|
||||
// Felder für Wegepauschale setzen
|
||||
if (sd.ServiceDescription.ToLower().Contains("behördengang") || sd.ServiceDescription.ToLower().Contains("außentermin") || sd.ServiceDescription.ToLower().Contains("wohnung"))
|
||||
{
|
||||
var emp = MapperFactory.EmployeeDC_Employee.MapToNewDC(DAOFactory.GenericDAO.GetByID<Employee>(sd.EmployeeOid));
|
||||
if (emp.IsQualified.HasValue)
|
||||
{
|
||||
if (emp.IsQualified.Value)
|
||||
{
|
||||
sd.Notice4 = "1";
|
||||
summeWegepauschalen++;
|
||||
}
|
||||
}
|
||||
|
||||
sd.Notice4 = "1";
|
||||
summeWegepauschalen++;
|
||||
}
|
||||
else
|
||||
sd.Notice4 = "";
|
||||
|
||||
// Felder für Ausfallstundnen setzen
|
||||
// Felder für Ausfallstunden setzen
|
||||
if (sd.ServiceDescription.ToLower().Contains("ausfall") || sd.ServiceDescription.ToLower().Contains("fehlkontakt"))
|
||||
{
|
||||
sd.Notice5 = "1";
|
||||
|
||||
@@ -26,6 +26,9 @@ namespace BeWo.ABCBetreuungenReports
|
||||
|
||||
foreach (var item in pRO.InvoiceItems)
|
||||
{
|
||||
item.AbrechnungsText = String.Format("{0:dd.MM.yyyy} bis {1:dd.MM.yyyy}: {2:0.##} FLS {3}x {4:c}",
|
||||
item.PeriodStartDate, item.PeriodEndDate, item.UnitCount, (!item.RateFactor.HasValue || item.RateFactor.Value == 0) ? "" : String.Format("x {0:0.00} ", (item.RateFactor + 100) / 100), item.AmountPerUnit);
|
||||
|
||||
if (item.ItemDescription == "Kontaktpauschale")
|
||||
item.AbrechnungsText = item.AbrechnungsText.Replace("FLS", "Fahrten");
|
||||
}
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="BueroTeamMitarbeiterstundenkontoBerechnungMonate.cs" />
|
||||
<Compile Include="BueroTeamMitarbeiterstundenkontoBerechnung.cs" />
|
||||
<Compile Include="Export\QueryListReport.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using AWOMuensterlandRecklinghausen.Service;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BeWo.Service.Configuration;
|
||||
using BeWo.Service.ServiceImplementations;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace AWOMuensterlandRecklinghausen
|
||||
{
|
||||
public class BueroTeamMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
|
||||
{
|
||||
public override bool ShouldCreateDayDetails()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
||||
{
|
||||
var dd = base.CreateDayDetail(date, ed);
|
||||
dd.MaxHoursUntilBreak = 6;
|
||||
dd.BreakMinutes = 30;
|
||||
dd.BreakMinutes2 = 15;
|
||||
dd.MaxHoursUntilBreak2 = 9;
|
||||
|
||||
return dd;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using AWOMuensterlandRecklinghausen.Service;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BeWo.Service.Configuration;
|
||||
using BeWo.Service.ServiceImplementations;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace AWOMuensterlandRecklinghausen
|
||||
{
|
||||
public class BueroTeamMitarbeiterstundenkontoBerechnungMonate : MitarbeiterstundenkontoBerechnungMonate
|
||||
{
|
||||
public override MitarbeiterstundenkontoBerechnung CreateMitarbeiterstundenkontoBerechnung()
|
||||
{
|
||||
return new CustomMitarbeiterstundenkontoBerechnung();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ namespace AWOMuensterlandRecklinghausen.Standard
|
||||
|
||||
public void SetReportDataSource(MitarbeiterstundenkontoRO pRO)
|
||||
{
|
||||
var msb = new MitarbeiterstundenkontoBerechnung();
|
||||
var msb = new BueroTeamMitarbeiterstundenkontoBerechnung();
|
||||
msb.CreateReport(pRO);
|
||||
|
||||
foreach (var ed in pRO.EmployeeDetailList)
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace AWOMuensterlandRecklinghausen.Standard
|
||||
|
||||
public void SetReportDataSource(MitarbeiterstundenkontoMonateRO pRO)
|
||||
{
|
||||
var msb = new MitarbeiterstundenkontoBerechnungMonate();
|
||||
var msb = new BueroTeamMitarbeiterstundenkontoBerechnungMonate();
|
||||
//var msb = new MitarbeiterstundenkontoBerechnungMonate();
|
||||
msb.CreateReport(pRO);
|
||||
|
||||
|
||||
@@ -19,11 +19,11 @@ namespace AWOMuensterlandRecklinghausen.Standard
|
||||
|
||||
public void SetReportDataSource(MitarbeiterstundenkontoRO pRO)
|
||||
{
|
||||
var msb = new MitarbeiterstundenkontoBerechnung();
|
||||
var msb = new BueroTeamMitarbeiterstundenkontoBerechnung();
|
||||
msb.CreateReport(pRO);
|
||||
|
||||
this.bindingSource1.DataSource = pRO;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
@@ -33,11 +34,11 @@ namespace AsSozialeDienstleistungenEV
|
||||
decimal minutes = 0;
|
||||
decimal betrag = 0;
|
||||
decimal stundensatz = 0;
|
||||
|
||||
if (pRO.Services != null && pRO.Services.Count > 0)
|
||||
{
|
||||
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
|
||||
stundensatz = GetStundensatz(pRO.Services[0], pRO.StartDate);
|
||||
var mainRecord = pRO.Services.GroupBy(e => e.ServiceCategory).OrderByDescending(g => g.Count()).First().First();
|
||||
stundensatz = GetStundensatz(mainRecord, pRO.StartDate);
|
||||
|
||||
foreach (var sd in pRO.Services)
|
||||
{
|
||||
@@ -103,5 +104,6 @@ namespace AsSozialeDienstleistungenEV
|
||||
|
||||
// return 0;
|
||||
//}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ namespace AsbRheinErftDueren
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark();
|
||||
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
|
||||
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
@@ -54,6 +55,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
|
||||
this.xrLabel19 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
@@ -73,17 +75,15 @@ namespace AsbRheinErftDueren
|
||||
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
|
||||
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
|
||||
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
|
||||
this.xrLabel17 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel18 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel21 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.TotalFLMBillableAlsStunden = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.MinutesAlsStunden = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource();
|
||||
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell18 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
@@ -125,12 +125,12 @@ namespace AsbRheinErftDueren
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTable3.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(49.3611F, 0F);
|
||||
this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrTable3.Name = "xrTable3";
|
||||
this.xrTable3.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow6});
|
||||
this.xrTable3.SizeF = new System.Drawing.SizeF(644.639F, 25F);
|
||||
this.xrTable3.SizeF = new System.Drawing.SizeF(747F, 25F);
|
||||
this.xrTable3.StylePriority.UseFont = false;
|
||||
this.xrTable3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
@@ -142,7 +142,8 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell10,
|
||||
this.xrTableCell2,
|
||||
this.xrTableCell15,
|
||||
this.xrTableCell12});
|
||||
this.xrTableCell12,
|
||||
this.xrTableCell18});
|
||||
this.xrTableRow6.Name = "xrTableRow6";
|
||||
this.xrTableRow6.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTableRow6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
@@ -176,7 +177,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell14.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell14.Text = "xrTableCell14";
|
||||
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell14.Weight = 0.094696981389528381D;
|
||||
this.xrTableCell14.Weight = 0.063384828937912779D;
|
||||
//
|
||||
// xrTableCell10
|
||||
//
|
||||
@@ -191,7 +192,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell10.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell10.Text = "xrTableCell10";
|
||||
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell10.Weight = 0.094696933224158855D;
|
||||
this.xrTableCell10.Weight = 0.063384845250950575D;
|
||||
//
|
||||
// xrTableCell2
|
||||
//
|
||||
@@ -204,7 +205,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell2.StylePriority.UsePadding = false;
|
||||
this.xrTableCell2.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell2.Weight = 0.05366162346946534D;
|
||||
this.xrTableCell2.Weight = 0.042256569949664952D;
|
||||
//
|
||||
// xrTableCell15
|
||||
//
|
||||
@@ -218,7 +219,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell15.StylePriority.UsePadding = false;
|
||||
this.xrTableCell15.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell15.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell15.Weight = 0.05366162346946534D;
|
||||
this.xrTableCell15.Weight = 0.042256515143018758D;
|
||||
//
|
||||
// xrTableCell12
|
||||
//
|
||||
@@ -232,7 +233,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell12.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell12.TextFormatString = "{0:0.00}";
|
||||
this.xrTableCell12.Weight = 0.10732323052948757D;
|
||||
this.xrTableCell12.Weight = 0.071269990461128627D;
|
||||
//
|
||||
// GroupHeader1
|
||||
//
|
||||
@@ -249,13 +250,13 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableServiceRecords1.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.xrTableServiceRecords1.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrTableServiceRecords1.LocationFloat = new DevExpress.Utils.PointFloat(49.3611F, 0F);
|
||||
this.xrTableServiceRecords1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrTableServiceRecords1.Name = "xrTableServiceRecords1";
|
||||
this.xrTableServiceRecords1.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTableServiceRecords1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow2,
|
||||
this.xrTableRow1});
|
||||
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(644.639F, 70F);
|
||||
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(747F, 70F);
|
||||
this.xrTableServiceRecords1.StylePriority.UseBackColor = false;
|
||||
this.xrTableServiceRecords1.StylePriority.UseBorders = false;
|
||||
this.xrTableServiceRecords1.StylePriority.UseFont = false;
|
||||
@@ -267,7 +268,8 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell3,
|
||||
this.xrTableCell4,
|
||||
this.xrTableCell11,
|
||||
this.xrTableCell9});
|
||||
this.xrTableCell9,
|
||||
this.xrTableCell16});
|
||||
this.xrTableRow2.Name = "xrTableRow2";
|
||||
this.xrTableRow2.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTableRow2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
@@ -304,7 +306,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell4.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell4.Text = "Uhrzeit";
|
||||
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
|
||||
this.xrTableCell4.Weight = 0.41899441340782145D;
|
||||
this.xrTableCell4.Weight = 0.28045147186033959D;
|
||||
//
|
||||
// xrTableCell11
|
||||
//
|
||||
@@ -320,7 +322,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell11.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell11.Text = "Angebot";
|
||||
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
|
||||
this.xrTableCell11.Weight = 0.23743016759776542D;
|
||||
this.xrTableCell11.Weight = 0.18696763609436626D;
|
||||
//
|
||||
// xrTableCell9
|
||||
//
|
||||
@@ -337,7 +339,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell9.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell9.Text = "FLS in";
|
||||
this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
|
||||
this.xrTableCell9.Weight = 0.23743025284239694D;
|
||||
this.xrTableCell9.Weight = 0.15766966850921618D;
|
||||
//
|
||||
// xrTableRow1
|
||||
//
|
||||
@@ -346,7 +348,8 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell8,
|
||||
this.xrTableCell5,
|
||||
this.xrTableCell6,
|
||||
this.xrTableCell7});
|
||||
this.xrTableCell7,
|
||||
this.xrTableCell17});
|
||||
this.xrTableRow1.Name = "xrTableRow1";
|
||||
this.xrTableRow1.Weight = 1.223644578313253D;
|
||||
//
|
||||
@@ -371,7 +374,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell8.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell8.Text = "von";
|
||||
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell8.Weight = 0.20949720670391073D;
|
||||
this.xrTableCell8.Weight = 0.14022572166567149D;
|
||||
//
|
||||
// xrTableCell5
|
||||
//
|
||||
@@ -386,7 +389,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell5.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell5.Text = "bis";
|
||||
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell5.Weight = 0.2094972067039107D;
|
||||
this.xrTableCell5.Weight = 0.14022572166567146D;
|
||||
//
|
||||
// xrTableCell6
|
||||
//
|
||||
@@ -402,7 +405,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell6.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell6.Text = "Art /\r\nAnzahl\r\nKlienten";
|
||||
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell6.Weight = 0.23743016759776545D;
|
||||
this.xrTableCell6.Weight = 0.1869675790363729D;
|
||||
//
|
||||
// xrTableCell7
|
||||
//
|
||||
@@ -417,9 +420,13 @@ namespace AsbRheinErftDueren
|
||||
this.xrTableCell7.StylePriority.UseBorders = false;
|
||||
this.xrTableCell7.StylePriority.UseFont = false;
|
||||
this.xrTableCell7.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell7.Text = "Stunden\r\n(ohne 1,2)";
|
||||
this.xrTableCell7.Text = "Stunden";
|
||||
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell7.Weight = 0.23743025284239694D;
|
||||
this.xrTableCell7.Weight = 0.15766989674118953D;
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
|
||||
//
|
||||
// formattingRuleStartDate
|
||||
//
|
||||
@@ -627,7 +634,7 @@ namespace AsbRheinErftDueren
|
||||
this.xrLabel2.Multiline = true;
|
||||
this.xrLabel2.Name = "xrLabel2";
|
||||
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel2.SizeF = new System.Drawing.SizeF(674.9998F, 25F);
|
||||
this.xrLabel2.SizeF = new System.Drawing.SizeF(747F, 25F);
|
||||
this.xrLabel2.StylePriority.UseFont = false;
|
||||
this.xrLabel2.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel2.Text = "Quittierungsbeleg [Mandator.Name]";
|
||||
@@ -666,10 +673,6 @@ namespace AsbRheinErftDueren
|
||||
// GroupFooter1
|
||||
//
|
||||
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrLabel17,
|
||||
this.xrLabel18,
|
||||
this.xrLabel21,
|
||||
this.xrLabel11,
|
||||
this.xrLabel10,
|
||||
this.xrLabel9,
|
||||
this.xrLabel1});
|
||||
@@ -677,79 +680,15 @@ namespace AsbRheinErftDueren
|
||||
this.GroupFooter1.KeepTogether = true;
|
||||
this.GroupFooter1.Name = "GroupFooter1";
|
||||
//
|
||||
// xrLabel17
|
||||
//
|
||||
this.xrLabel17.Borders = DevExpress.XtraPrinting.BorderSide.Right;
|
||||
this.xrLabel17.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
|
||||
this.xrLabel17.LocationFloat = new DevExpress.Utils.PointFloat(228.4301F, 19.99996F);
|
||||
this.xrLabel17.Name = "xrLabel17";
|
||||
this.xrLabel17.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel17.SizeF = new System.Drawing.SizeF(85F, 20F);
|
||||
this.xrLabel17.StylePriority.UseBackColor = false;
|
||||
this.xrLabel17.StylePriority.UseBorders = false;
|
||||
this.xrLabel17.StylePriority.UseFont = false;
|
||||
this.xrLabel17.StylePriority.UsePadding = false;
|
||||
this.xrLabel17.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
//
|
||||
// xrLabel18
|
||||
//
|
||||
this.xrLabel18.BackColor = System.Drawing.Color.Gainsboro;
|
||||
this.xrLabel18.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrLabel18.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMBillable", "{0:0.##}")});
|
||||
this.xrLabel18.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
|
||||
this.xrLabel18.LocationFloat = new DevExpress.Utils.PointFloat(561.9656F, 19.99995F);
|
||||
this.xrLabel18.Name = "xrLabel18";
|
||||
this.xrLabel18.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel18.SizeF = new System.Drawing.SizeF(132.0345F, 20F);
|
||||
this.xrLabel18.StylePriority.UseBackColor = false;
|
||||
this.xrLabel18.StylePriority.UseBorders = false;
|
||||
this.xrLabel18.StylePriority.UseFont = false;
|
||||
this.xrLabel18.StylePriority.UsePadding = false;
|
||||
this.xrLabel18.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel18.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// xrLabel21
|
||||
//
|
||||
this.xrLabel21.BackColor = System.Drawing.Color.Gainsboro;
|
||||
this.xrLabel21.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrLabel21.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
|
||||
this.xrLabel21.LocationFloat = new DevExpress.Utils.PointFloat(313.4301F, 19.99995F);
|
||||
this.xrLabel21.Name = "xrLabel21";
|
||||
this.xrLabel21.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel21.SizeF = new System.Drawing.SizeF(248.5354F, 20F);
|
||||
this.xrLabel21.StylePriority.UseBackColor = false;
|
||||
this.xrLabel21.StylePriority.UseBorders = false;
|
||||
this.xrLabel21.StylePriority.UseFont = false;
|
||||
this.xrLabel21.StylePriority.UsePadding = false;
|
||||
this.xrLabel21.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel21.Text = "Fachleistungen in Minuten";
|
||||
this.xrLabel21.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
//
|
||||
// xrLabel11
|
||||
//
|
||||
this.xrLabel11.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
|
||||
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(374.0001F, 39.99996F);
|
||||
this.xrLabel11.Name = "xrLabel11";
|
||||
this.xrLabel11.SizeF = new System.Drawing.SizeF(320F, 20F);
|
||||
this.xrLabel11.StylePriority.UseBackColor = false;
|
||||
this.xrLabel11.StylePriority.UseBorders = false;
|
||||
this.xrLabel11.StylePriority.UseFont = false;
|
||||
this.xrLabel11.StylePriority.UsePadding = false;
|
||||
this.xrLabel11.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel11.Text = "Ohne Faktor 1,2 (wird erst bei Abrechnung eingerechnet)";
|
||||
this.xrLabel11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// xrLabel10
|
||||
//
|
||||
this.xrLabel10.BackColor = System.Drawing.Color.Gainsboro;
|
||||
this.xrLabel10.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrLabel10.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
|
||||
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(313.4301F, 0F);
|
||||
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(141.93F, 0F);
|
||||
this.xrLabel10.Name = "xrLabel10";
|
||||
this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel10.SizeF = new System.Drawing.SizeF(248.5356F, 20F);
|
||||
this.xrLabel10.SizeF = new System.Drawing.SizeF(250F, 20F);
|
||||
this.xrLabel10.StylePriority.UseBackColor = false;
|
||||
this.xrLabel10.StylePriority.UseBorders = false;
|
||||
this.xrLabel10.StylePriority.UseFont = false;
|
||||
@@ -762,7 +701,7 @@ namespace AsbRheinErftDueren
|
||||
//
|
||||
this.xrLabel9.Borders = DevExpress.XtraPrinting.BorderSide.Right;
|
||||
this.xrLabel9.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(228.4301F, 0F);
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(56.93002F, 0F);
|
||||
this.xrLabel9.Name = "xrLabel9";
|
||||
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(85F, 20F);
|
||||
@@ -780,10 +719,10 @@ namespace AsbRheinErftDueren
|
||||
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMBillableAlsStunden")});
|
||||
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
|
||||
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(561.9656F, 0F);
|
||||
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(391.9301F, 0F);
|
||||
this.xrLabel1.Name = "xrLabel1";
|
||||
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(132.0345F, 20F);
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(84.3299F, 20F);
|
||||
this.xrLabel1.StylePriority.UseBackColor = false;
|
||||
this.xrLabel1.StylePriority.UseBorders = false;
|
||||
this.xrLabel1.StylePriority.UseFont = false;
|
||||
@@ -810,9 +749,50 @@ namespace AsbRheinErftDueren
|
||||
this.MinutesAlsStunden.Expression = "[Minutes] / 60";
|
||||
this.MinutesAlsStunden.Name = "MinutesAlsStunden";
|
||||
//
|
||||
// bindingSource1
|
||||
// xrTableCell16
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
|
||||
this.xrTableCell16.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)));
|
||||
this.xrTableCell16.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrTableCell16.Multiline = true;
|
||||
this.xrTableCell16.Name = "xrTableCell16";
|
||||
this.xrTableCell16.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrTableCell16.StylePriority.UseBorders = false;
|
||||
this.xrTableCell16.StylePriority.UseFont = false;
|
||||
this.xrTableCell16.StylePriority.UsePadding = false;
|
||||
this.xrTableCell16.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell16.Text = "Bemerkungen";
|
||||
this.xrTableCell16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
|
||||
this.xrTableCell16.Weight = 0.50619631022645872D;
|
||||
//
|
||||
// xrTableCell17
|
||||
//
|
||||
this.xrTableCell17.BackColor = System.Drawing.Color.Gainsboro;
|
||||
this.xrTableCell17.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell17.Font = new DevExpress.Drawing.DXFont("Arial", 10F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
|
||||
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
|
||||
this.xrTableCell17.Multiline = true;
|
||||
this.xrTableCell17.Name = "xrTableCell17";
|
||||
this.xrTableCell17.StylePriority.UseBackColor = false;
|
||||
this.xrTableCell17.StylePriority.UseBorders = false;
|
||||
this.xrTableCell17.StylePriority.UseFont = false;
|
||||
this.xrTableCell17.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell17.Weight = 0.50619616758147545D;
|
||||
//
|
||||
// xrTableCell18
|
||||
//
|
||||
this.xrTableCell18.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
|
||||
this.xrTableCell18.Multiline = true;
|
||||
this.xrTableCell18.Name = "xrTableCell18";
|
||||
this.xrTableCell18.StylePriority.UseBorders = false;
|
||||
this.xrTableCell18.StylePriority.UseFont = false;
|
||||
this.xrTableCell18.StylePriority.UsePadding = false;
|
||||
this.xrTableCell18.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell18.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell18.Weight = 0.22881087286891738D;
|
||||
//
|
||||
// QuittierungsbelegJugendamt
|
||||
//
|
||||
@@ -892,7 +872,6 @@ namespace AsbRheinErftDueren
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
|
||||
private DevExpress.XtraReports.UI.CalculatedField fieldKontaktArt;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel11;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel10;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
|
||||
@@ -900,10 +879,10 @@ namespace AsbRheinErftDueren
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel16;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel19;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel20;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel17;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel18;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel21;
|
||||
private DevExpress.XtraReports.UI.CalculatedField TotalFLMBillableAlsStunden;
|
||||
private DevExpress.XtraReports.UI.CalculatedField MinutesAlsStunden;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell18;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell17;
|
||||
}
|
||||
}
|
||||
|
||||
102
ReportImp/AspBegleitungNrw/AspBegleitungNrw.csproj
Normal file
102
ReportImp/AspBegleitungNrw/AspBegleitungNrw.csproj
Normal file
@@ -0,0 +1,102 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{4D48D376-DCAE-4E22-82E3-36692B0FAE29}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>AspBegleitungNrw</RootNamespace>
|
||||
<AssemblyName>2103272562_Reports</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\..\CustomerDlls\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\..\CustomerDlls\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevExpress.DataAccess.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Drawing.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Office.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.RichEdit.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.RichEdit.v23.2.Export, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Printing.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Data.Desktop.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraCharts.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
|
||||
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
|
||||
<Compile Include="Invoicing\CustomLWLDiggaBerechnung.cs" />
|
||||
<Compile Include="Invoicing\SettlementInvoiceCreation.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Reporting\CustomMitarbeiterstundenkontoBerechnung.cs" />
|
||||
<Compile Include="Reporting\CustomReportCreator.cs" />
|
||||
<Compile Include="Reporting\Quittierungsbeleg.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Reporting\Quittierungsbeleg.Designer.cs">
|
||||
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Data\Data.csproj">
|
||||
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
|
||||
<Name>Data</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Report\Report.csproj">
|
||||
<Project>{40d8b312-ea64-49e3-a31a-5e57ed4d5654}</Project>
|
||||
<Name>Report</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Service\Service.csproj">
|
||||
<Project>{094331c3-ecee-4c89-bbfd-4c9ded89f0ef}</Project>
|
||||
<Name>Service</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Shared\Shared.csproj">
|
||||
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
|
||||
<Name>Shared</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\licenses.licx" />
|
||||
<EmbeddedResource Include="Reporting\Quittierungsbeleg.resx">
|
||||
<DependentUpon>Quittierungsbeleg.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report.ReportObjects;
|
||||
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;
|
||||
using Service.Invoicing;
|
||||
|
||||
namespace TemplateNeuKunde.Invoicing
|
||||
{
|
||||
// public class CustomInvoiceCreation : InvoiceCreation
|
||||
//{
|
||||
// //public override void SetInvoiceId(ServiceInvoice invoice)
|
||||
// //{
|
||||
// // //invoice.InvoiceBase.InvoiceId = "SBD";
|
||||
// // //invoice.InvoiceBase.InvoiceTypeText = "";
|
||||
// //}
|
||||
|
||||
|
||||
// // //Setze für Selbstzahler die Adresse des Klienten
|
||||
// // public override void SetRecipientInformation(ServiceInvoice serviceInvoice, CostBearer costBearer)
|
||||
// // {
|
||||
// // if (costBearer.Organisation.Name == "Selbstzahler")
|
||||
// // {
|
||||
// // serviceInvoice.InvoiceBase.RecipientOrganisationOid = costBearer.Organisation.Oid;
|
||||
|
||||
// // if (serviceInvoice.InvoiceBase.CostBearer2SupportConcept != null)
|
||||
// // {
|
||||
// // var cust = serviceInvoice.InvoiceBase.CostBearer2SupportConcept.SupportConcept.Customer;
|
||||
|
||||
// // if (cust.Person.InvoiceAddress != null)
|
||||
// // {
|
||||
// // serviceInvoice.InvoiceBase.RecipientAddress = cust.Person.InvoiceAddress.CopyToNew();
|
||||
// // }
|
||||
// // else if (cust.Person.Address != null)
|
||||
// // {
|
||||
// // serviceInvoice.InvoiceBase.RecipientAddress = cust.Person.Address.CopyToNew();
|
||||
// // }
|
||||
|
||||
// // serviceInvoice.InvoiceBase.RecipientPersonFirstName = cust.Person.FirstName;
|
||||
// // serviceInvoice.InvoiceBase.RecipientPersonLastName = cust.Person.LastName;
|
||||
// // serviceInvoice.InvoiceBase.RecipientCustomerOid = cust.Oid;
|
||||
// // }
|
||||
// // }
|
||||
// // }
|
||||
// }
|
||||
}
|
||||
65
ReportImp/AspBegleitungNrw/Invoicing/CustomInvoiceFactory.cs
Normal file
65
ReportImp/AspBegleitungNrw/Invoicing/CustomInvoiceFactory.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.Invoicing;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
|
||||
namespace TemplateNeuKunde.Invoicing
|
||||
{
|
||||
public class CustomInvoiceFactory : InvoiceFactory
|
||||
{
|
||||
// public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
|
||||
// {
|
||||
////Hier einkommentieren, wenn die Rechnungserstellung von einer bestimmten Kategorie einer Bewilligung abhängt
|
||||
//foreach (var item in supportConcepts2ServiceRecords)
|
||||
//{
|
||||
// var csc = item.Key;
|
||||
// var cb2sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(csc.CostBearerRelOids[0]);
|
||||
|
||||
// foreach (var scap in cb2sc.ApprovalPeriodList)
|
||||
// {
|
||||
// if (scap.ServiceCategory != null)
|
||||
// {
|
||||
// var ic = GetInvoiceCreatorForCategory(scap.ServiceCategory.Name);
|
||||
// if (ic != null)
|
||||
// return ic;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
////Hier einkommentieren, wenn die Rechnungserstellung von einer bestimmten Kategorie oder Organisation eines ServiceRecords abhängt
|
||||
//foreach (var list in supportConcepts2ServiceRecords.Values)
|
||||
// {
|
||||
// foreach (var sr in list)
|
||||
// {
|
||||
// //Hier wird Kategorie geprüft
|
||||
// var ic = GetInvoiceCreatorForCategory(sr.ServiceDescription.Category.Name);
|
||||
// if (ic != null)
|
||||
// return ic;
|
||||
|
||||
// //Hier wird Organisation geprüft
|
||||
// if (sr.CostBearer.Name.ToLower().Contains("selbstzahler"))
|
||||
// {
|
||||
// return new CustomInvoiceCreation();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
|
||||
// }
|
||||
|
||||
// private InvoiceCreation GetInvoiceCreatorForCategory(String catName)
|
||||
// {
|
||||
// if (!String.IsNullOrEmpty(catName))
|
||||
// {
|
||||
// String cat = catName.ToLower().Trim();
|
||||
// if (cat.IndexOf("assistenz") >= 0)
|
||||
// return new CustomInvoiceCreation();
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BeWo.Service.Invoicing;
|
||||
using BeWo.Service.Plugins;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.Extensions;
|
||||
using BS.Shared.Services;
|
||||
|
||||
namespace TemplateNeuKunde.Invoicing
|
||||
{
|
||||
public class CustomLWLDiggaBerechnung : LWLDiggaBerechnung
|
||||
{
|
||||
public override void InitBerechnung()
|
||||
{
|
||||
//this.Umstellungsdatum = new DateTime(2025, 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
//using BeWo.Data.Entities;
|
||||
//using BeWo.Service.Invoicing;
|
||||
//using BS.Shared.DataContracts;
|
||||
//using BS.Shared.Services;
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
|
||||
//namespace TemplateNeuKunde.Invoicing
|
||||
//{
|
||||
// public class CustomSettlementInvoiceCreation : SettlementInvoiceCreation
|
||||
// {
|
||||
// public override bool CanCreateInvoiceTheOldWay(Settlement2DC si, CostBearer2SupportConcept c2s)
|
||||
// {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
//public override bool IsServiceRecordBillable(ServiceRecord iRecord)
|
||||
//{
|
||||
// if (iRecord.ServiceDescription.ServiceCategory.Name.Contains("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;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
//public override IList<ServiceRecord> GetBillableServiceRecords(CostBearer2SupportConcept c2s)
|
||||
//{
|
||||
// return c2s.ServiceRecords.OrderBy(s => s.Start).Where(s => !s.ServiceDescription.ServiceCategory.Name.ToLower().Contains("assistenz")).ToList();
|
||||
//}
|
||||
// }
|
||||
//}
|
||||
36
ReportImp/AspBegleitungNrw/Properties/AssemblyInfo.cs
Normal file
36
ReportImp/AspBegleitungNrw/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||
// die einer Assembly zugeordnet sind.
|
||||
[assembly: AssemblyTitle("KundeXyz")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("KundeXyz")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
|
||||
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
|
||||
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||
[assembly: Guid("c1fed668-adb9-47e0-b589-1389618e1b6e")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
// Hauptversion
|
||||
// Nebenversion
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
|
||||
// indem Sie "*" wie unten gezeigt eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user