Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo

This commit is contained in:
2025-05-27 11:40:35 +02:00
160 changed files with 7762 additions and 3591 deletions

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<Root Type="DevExpress.CodeAnalysis.CodeCleanUp.CodeCleanUpOptions">
<Options Language="C#">
<Providers>
<Item Id="{53ccb10f-f7af-40a6-9472-d05054672052}" />
<Item Id="{bb96a982-bed0-4d8f-93a7-1e1ce7493e96}" />
<Item Id="{12f6d456-d2ec-407e-aa44-2b74d7c56e9c}" />
<Item Id="{ffa114f4-9122-46e4-96c8-655d54c904e6}" />
<Item Id="{0e6b7b2c-84e6-4eee-83d1-6149282c8501}">
<ApplyOnSave>True</ApplyOnSave>
</Item>
<Item Id="{03781427-dea7-45b0-9eef-81abe2961a61}" />
<Item Id="{ab07124b-0893-4a2d-b6f5-39bfa9f10148}" />
<Item Id="{5d712912-91ed-4728-ba16-ac1821b702ca}">
<ApplyOnSave>True</ApplyOnSave>
</Item>
<Item Id="{c47b114f-eeae-46fc-9562-454e8f9196c0}" />
<Item Id="{4216ef39-52bd-4e7f-92a7-673406f92bc8}" />
<Item Id="{f410df1e-6e44-4854-a3f0-14bb756113f9}">
<ApplyOnSave>True</ApplyOnSave>
</Item>
<Item Id="{d2f76d4e-97a9-4031-a7a2-23f192201426}" />
<Item Id="{3824f6f0-fee1-4847-94ff-1efa133ba199}" />
<Item Id="{d24bd9c7-7686-4101-9ec1-f61c19af8d2e}" />
<Item Id="{f804e36e-414f-409c-9b90-63b7727745a7}">
<ApplyOnSave>True</ApplyOnSave>
</Item>
<Item Id="{163af547-186c-4fa1-9a3e-b9b0a1ceec32}" />
<Item Id="{00bb41b3-3de9-458a-93c1-1f126253eab0}" />
<Item Id="{8e24f031-d25c-4ddb-86a5-c28f8fc354eb}" />
<Item Id="{e950f01e-2b15-4da5-8176-cafe3cc883d9}" />
<Item Id="{37bde68f-a39d-4791-adba-8ad7b2952ab0}" />
<Item Id="{ef51c8cb-e48a-498f-98b2-eadda592c4c7}" />
<Item Id="{20943A7B-2B32-4727-8E9D-61CB5B5F2A0D}" />
<Item Id="{528bdd86-5882-4b4c-b717-e0ec33958bd7}" />
<Item Id="{40c971cf-ebeb-419d-a559-6183d8d0d6a4}" />
<Item Id="{4B42E272-EE39-4E83-924C-B2458D827DE3}" />
<Item Id="{73a73e0e-5575-4c34-a97b-a942c6da1f90}" />
<Item Id="{f7752b2b-7ba5-43ec-b0f7-7f45c21c1c23}" />
<Item Id="{9dab2827-57cc-40e9-a330-a0626261453e}" />
<Item Id="{6bf7cfc1-1332-4bec-982e-c2d0968237cd}" />
<Item Id="{7e640eab-b585-47a5-afdc-0f110357cebb}" />
<Item Id="{44ac74a7-dba7-45aa-b2ca-8094b85cb9c9}" />
<Item Id="{2cd1441b-9e0f-4e39-bd8c-8aaa6e2a1728}" />
<Item Id="{41388575-074b-49f2-b3bc-9d28b212bd1a}" />
<Item Id="{4fa0bfa3-0a7e-471b-9933-3a379bdd5bd7}" />
<Item Id="{1f88209e-45e2-40b9-a235-1df251df05dd}" />
<Item Id="{086b0e70-893d-4b97-a6cf-d366ddbae573}" />
<Item Id="{4771fd98-4357-4780-b479-a7a875fec011}" />
<Item Id="{174C98E6-48C4-42D0-BC30-35EDE6377C9B}" />
</Providers>
<IsNewVersion>True</IsNewVersion>
</Options>
</Root>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<Root Type="DevExpress.CodeRush.Formatting.UI.Options.OtherOptionsContainer">
<Options Language="C#">
<Options>
<Item Id="{7b13bb67-6fc9-44dd-87a1-ea1dc649d561}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.PlaceOnNewLineOtherOption">
<ElseOnNewLine>True</ElseOnNewLine>
<WhileOnNewLine>True</WhileOnNewLine>
<CatchOnNewLine>True</CatchOnNewLine>
<FinallyOnNewLine>True</FinallyOnNewLine>
</Item>
<Item Id="{84e7d791-613d-4018-bf31-9a9f43264480}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.XmlDocCommentsOtherOption" />
<Item Id="{8921dd1e-bb6c-4fa8-b4d5-58e6edcea04f}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.OtherIndentOption" />
</Options>
</Options>
</Root>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<Root Type="DevExpress.CodeRush.Formatting.UI.Options.WrappingOptionsContainer">
<Options Language="C#">
<Options>
<Item Id="{48f3f6c0-b3c2-4567-b071-33af7480c9a3}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.QueryExpressionFormattingOption" />
<Item Id="{a2c75ad7-ba6a-49ca-8070-6d9e3c52e3c6}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.BinaryExpressionFormattingOption" />
<Item Id="{0e2d0391-24ba-4ed8-aeb4-1b3e9f26be55}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.RelationalExpressionFormattingOption" />
<Item Id="{fea50ebc-99c9-4599-9b55-bf2961b9cc95}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.BitwiseExpressionFormattingOption" />
<Item Id="{4246b900-cbb3-44f4-b59e-b3055fb4f7bc}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.LogicalExpressionFormattingOption" />
<Item Id="{cd721fc1-23fb-4d88-a9f0-42d6b318a32b}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.TernaryExpressionFormattingOption" />
<Item Id="{10e904ea-f51d-4c32-9320-1b93fa557564}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.AssignmentExpressionFormattingOption">
<WrapAssignment>
<Kind>WrapBefore</Kind>
</WrapAssignment>
</Item>
<Item Id="{25746bdc-0a43-4741-a740-20784691314b}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.InvocationArgumentListFormattingOption" />
<Item Id="{D5EE2ECB-9FA6-47F7-A11F-007FC45E872D}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.AttributeArgumentsFormattingOption" />
<Item Id="{5A186AB9-03A5-4BFE-83B1-B99B3B8408BC}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.DeclarationParameterListFormattingOption" />
<Item Id="{8739877d-3674-40ae-90c4-38b2b160e92b}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.ArrayInitializerFormattingOption" />
<Item Id="{a940ae15-f98a-4b7d-8357-2214eb421250}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.CollectionInitializerFormattingOption" />
<Item Id="{0414181a-3915-4d0c-81d3-3bc7718da90f}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.ObjectInitializerFormattingOption" />
<Item Id="{ea60e2ab-d67a-45e8-ab42-36d747c494c}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.ChainedMethodCallsFormattingOption" />
<Item Id="{5f4ed422-88b9-4e95-8401-cef404d645d6}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.LambdaExpressionFormattingOption" />
<Item Id="{0531de5e-ff20-4043-a67c-eeef76a8f3c3}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.ArrowExpressionFormattingOption" />
<Item Id="{08fa5953-cc71-4ded-bd41-ef5d5b690585}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.TypeParameterListFormattingOption" />
<Item Id="{dc060d33-cfc0-411e-9508-8d27b84934e8}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.CoalesceExpressionFormattingOption" />
<Item Id="{b25d25a0-dd92-45ed-88ef-51953e28222c}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.BaseListWrappingFormattingOption" />
<Item Id="{4db5e14f-8f4c-416f-9b59-7e9239f2150e}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.CtorInitWrappingFormattingOption" />
<Item Id="{be0c2117-5732-40fd-9b4a-0fe749356e87}" Type="DevExpress.CodeRush.Formatting.UI.Options.Conversion.SwitchExpressionWrappingFormattingOption" />
</Options>
</Options>
</Root>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Root Type="DevExpress.CodeRush.CodeCompletion.NamingSuggestions.Options.NamingSuggestionsOptions">
<Options Language="C#">
<Enabled>True</Enabled>
</Options>
</Root>

View File

@@ -0,0 +1,165 @@
<?xml version="1.0" encoding="utf-8"?>
<Root Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersOptions">
<Options Language="Neutral">
<Schemes>
<Item Id="{537ce5d1-771a-4e99-9f4a-c409ebd5e213}">
<IsActive>False</IsActive>
<Rules>
<Item Id="{a1310165-0385-4fbf-92d3-71402b646318}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<GroupRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.AndRule">
<Rules>
<Item Id="{2ebbe39b-ad28-42e6-b6fe-58cbbe1366ea}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.GroupByParentTypeAttributesRule">
<AttributeName>InterfaceType</AttributeName>
</Item>
<Item Id="{e7428898-429e-46c7-84f8-a4eeffbf1bc7}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.GroupByKindRule" />
</Rules>
</GroupRule>
<RuleName>Members in type with InterfaceType</RuleName>
</Item>
<Item Id="{ebd30c1d-59b5-4a03-9f33-8813a996b952}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{02fdb982-e0dd-4b47-84c3-f44926013188}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{f5649b7d-32eb-4a64-88b4-5de14ed335e4}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{b72b1c09-252f-4d4f-881c-1a4832911d5f}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{eae9a2ed-5135-45c6-9cd1-e75ee9e9ac68}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{7e2e2ef2-8ef3-4f28-825d-ce10da1931e6}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{0430f49d-5690-49a2-b2ef-154bfbf64cd7}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{907fc4a7-efee-4337-af73-d71b996b3923}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{724ebc08-3b98-4c52-91c5-158b7a759d95}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{bcbd84af-ad2b-4353-a834-ece7b6e41d92}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{c49c00d2-9626-428d-8818-e71e68bf07f9}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{335094b6-641c-4832-bfdc-84087f8c7b24}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{1136a603-d516-4f42-a80b-c2bc7baf163b}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{89215376-ecad-435a-a6bf-137f09a41f0d}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{380049a0-9dbf-4d84-9612-20fc0c34dca2}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{36cc0c47-d29c-4e7a-a29b-d73ec1b3910b}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{c87a250e-ef05-4000-9e2c-e5c078ce51ae}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{0fcd1a59-0fc8-4bde-9db7-2d73508b918d}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{050f50d0-7ec6-4610-a820-08f54f1d4c3c}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{6b6953c9-dcb7-4d34-a123-7f390fd24e1e}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{b8f8c881-e919-48b1-8655-602c75ddbfec}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{f591aeca-b50c-47e2-ab24-84fb3a7327c2}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{c9b4252f-60a9-48d3-869e-2c3c23c20aae}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{d6d0a5a4-c770-47f3-8cda-c699e76101d1}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{9b31a53f-4bae-4b97-8356-39a48bd91e9c}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{45e128f7-55bf-4186-b09c-760d2a6477cb}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{1c54e8e0-33dd-4a95-8899-42ba94669156}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{b76710ac-780e-4cad-bd0c-02f7f676db0f}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{48b47296-0fd0-4056-bdc1-b09ae6266d06}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{9d6898f1-002e-4c71-a281-1ec6e78a3003}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{f1959e1c-1062-4a5f-a26d-b66a530b56dc}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{4651e354-b408-4df4-bb8c-0490daddccaa}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{6653a3b6-576e-4f5e-9c6a-a440ee257399}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{dc81be48-841a-48c0-bb6a-e70cb3c26341}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{b8475833-a96e-4e5a-825c-bf3266fcf330}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<DeletedItem Id="{1eb07ab2-16f0-4bf2-a2a6-33b899b861b8}" />
</Rules>
</Item>
<Item Id="{fb41924a-35f9-47ee-8f8c-74cc34c4bf63}">
<IsActive>True</IsActive>
<Rules>
<Item Id="{b98b9ab7-3a4c-4b50-8c32-771f758e4507}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{175afa49-1b02-4335-8697-426564eb966b}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{793c3efa-da34-4af7-9338-b079461a74c8}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{2a66d808-4878-480c-b9b8-8ae03700c1e8}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{3f3676c5-45dd-45df-888a-0f07b1b3707d}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{1b549ff5-3ce2-43ff-93bc-f4da46903b6a}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{761299d1-70d4-44bf-b06b-ccd7c409e448}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{b0120844-0819-42f0-a49b-62c4c7497a99}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{00b09b98-ac03-48d2-b2a0-9c6e1b7ba907}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{612527cd-1b3e-41be-8a3c-fce9731c5798}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{9766d442-e0fb-427f-99b0-405fc57f6d4f}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{f82b02cb-b317-44af-ab65-2a3c90761afe}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{f2379393-c0e5-4bee-a551-6383d0c1f843}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{7c815ce6-5ac8-4c71-a1a9-b7fc8adea37c}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{300ff320-0e96-446c-8de9-3f808dafce55}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{78216f10-5d1c-41eb-a048-bd50ff4224fd}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{f0d58f97-1bb4-4762-95e4-fb7f7b1e184f}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{c17095aa-afa2-4136-8771-c2a7ac591d15}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{b1d169c2-df12-4479-8c61-2af5bbee8a06}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule">
<SortingRule Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.MultipleSortingsRule">
<Sortings>
<Item Id="{c2c647e5-108d-4154-ad61-de7692259d35}" />
</Sortings>
</SortingRule>
</Item>
<Item Id="{b02e42bb-4a64-4196-8d23-aca15029a893}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{096ce198-34f5-4265-8a4a-4a4b00c711ac}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{eddf6fb8-a51b-4632-b8fd-20965a20efe2}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{0aa19952-807c-40eb-ab92-6c7a5f3f79b2}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
<Item Id="{e7160382-ae65-4f07-aaac-72e124360b1d}" Type="DevExpress.CodeAnalysis.CodeCleanUp.OrganizeMembers.OrganizeMembersGroupAndSortRule" />
</Rules>
</Item>
</Schemes>
<UseMemberSections>False</UseMemberSections>
</Options>
</Root>

View File

@@ -39,16 +39,16 @@
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>true</UpdateRequired>
<MapFileExtensions>false</MapFileExtensions>
<InstallUrl>https://app.ownsoft.de/</InstallUrl>
<InstallUrl>https://app.ownsoft.de/test/</InstallUrl>
<TargetCulture>de-DE</TargetCulture>
<ProductName>BeWoPlaner</ProductName>
<PublisherName>ownSoft GmbH</PublisherName>
<MinimumRequiredVersion>2.0.1.263</MinimumRequiredVersion>
<MinimumRequiredVersion>2.0.1.265</MinimumRequiredVersion>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>publish.htm</WebPage>
<OpenBrowserOnPublish>false</OpenBrowserOnPublish>
<TrustUrlParameters>true</TrustUrlParameters>
<ApplicationRevision>264</ApplicationRevision>
<ApplicationRevision>266</ApplicationRevision>
<ApplicationVersion>2.0.1.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut>
@@ -67,6 +67,7 @@
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<UseVSHostingProcess>true</UseVSHostingProcess>
<Prefer32Bit>false</Prefer32Bit>
<NoWarn>CS0659, CS0162, CS0168, CS0649, CS0219, CS0169, CS0414, CS0067, CS0618</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -94,6 +95,7 @@
</StartupObject>
</PropertyGroup>
<ItemGroup>
<Compile Include="Converter\AddressToStringConverter.cs" />
<Compile Include="Converter\Features\AiConversationMessageSystemConverter.cs" />
<Compile Include="Converter\NewlineConverter.cs" />
<Compile Include="ServiceProxy\GeneratedAiEnhancedService.cs" />
@@ -103,6 +105,7 @@
<Compile Include="Services\IControlFactory.cs" />
<Compile Include="Services\IWindowFactory.cs" />
<Compile Include="Services\IWindowService.cs" />
<Compile Include="ViewModel\AddressVM.cs" />
<Compile Include="ViewModel\AiConfigVM.cs" />
<Compile Include="View\Detail\AI\AiConfigView.xaml.cs">
<DependentUpon>AiConfigView.xaml</DependentUpon>
@@ -1183,6 +1186,7 @@
<Compile Include="SchulbegleitenderDienst\WochenansichtVM.cs" />
<Compile Include="SchulbegleitenderDienst\WochenVertretung.cs" />
<Compile Include="Security\EncryptionUtils.cs" />
<Compile Include="ServiceProxy\ServiceFacadeExtension.cs" />
<Compile Include="ServiceProxy\GeneratedOperationsEnhancedService.cs" />
<Compile Include="UploadDialog.xaml.cs">
<DependentUpon>UploadDialog.xaml</DependentUpon>
@@ -1262,10 +1266,13 @@
<Compile Include="ViewModel\AiConversationVM.cs" />
<Compile Include="ViewModel\BaseVM.cs" />
<Compile Include="ViewModel\CustomerVermittlungArbeitVM.cs" />
<Compile Include="ViewModel\Light\GkvAbrechnungLightVM.cs" />
<Compile Include="ViewModel\Light\InvoiceBaseLightVM.cs" />
<Compile Include="ViewModel\ListViewModel\AbstractListVM.cs" />
<Compile Include="ViewModel\ListViewModel\AiConversationMessageListVM.cs" />
<Compile Include="ViewModel\ListViewModel\AiConversationListVM.cs" />
<Compile Include="ViewModel\ListViewModel\CustomerVermittlungArbeitListVM.cs" />
<Compile Include="ViewModel\ListViewModel\Light\GkvAbrechnungLightListVM.cs" />
<Compile Include="ViewModel\Wohnhilfe\CustomerWohnhilfeBereichBundVM.cs" />
<Compile Include="ViewModel\Wohnhilfe\CustomerWohnhilfeBereichEinkommenUndArbeitVM.cs" />
<Compile Include="ViewModel\Wohnhilfe\CustomerWohnhilfeBereichSozialeKontakteVM.cs" />
@@ -1283,7 +1290,6 @@
<Compile Include="ViewModel\DocumentTreeItemVM.cs" />
<Compile Include="ViewModel\DokumentvorlageVM.cs" />
<Compile Include="ViewModel\GeschenkterUrlaubstagVM.cs" />
<Compile Include="ViewModel\ListViewModel\GkvAbrechnungListVM.cs" />
<Compile Include="ViewModel\ListViewModel\PreisListVM.cs" />
<Compile Include="ViewModel\GkvAbrechnungVM.cs" />
<Compile Include="ViewModel\PlatzhalterVM.cs" />

View File

@@ -2,7 +2,7 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>D:\Projects\beyondsoft\BeWoPlaner\Publish\|publish\|D:\Projects\beyondsoft\BeWoPlaner\PublishTest\|D:\Projects\beyondsoft\BeWoPlaner\PublishDev\|D:\Projects\beyondsoft\BeWoPlaner\Publish45\</PublishUrlHistory>
<InstallUrlHistory>https://app.ownsoft.de/|https://app.ownsoft.de/test/|https://app.ownsoft.de/dev/|http://app.ownsoft.de/dev/|http://app.beyondsoft.de/dev/</InstallUrlHistory>
<InstallUrlHistory>https://app.ownsoft.de/test/|https://app.ownsoft.de/|https://app.ownsoft.de/dev/|http://app.ownsoft.de/dev/|http://app.beyondsoft.de/dev/</InstallUrlHistory>
<SupportUrlHistory />
<UpdateUrlHistory>https://app.ownsoft.de/|https://app.ownsoft.de/bewoplaner.application/</UpdateUrlHistory>
<BootstrapperUrlHistory />

View File

@@ -83,6 +83,7 @@
<conv:EnumTranslationConverter x:Key="EnumTranslationConverter" />
<conv:TooltipTextConverter x:Key="TooltipTextConverter" />
<conv:NewlineConverter x:Key="NewlineConverter" />
<conv:AddressToStringConverter x:Key="AddressToStringConverter" />
<conv:ValidationConverter x:Key="ValidationConverter" />
<conv:ValueConverterGroup x:Key="Validation2BrushConverter">

View File

@@ -56,9 +56,9 @@ namespace BeWo
public static LoginControl LoginControl;
public static MainControl MainControl;
public static string ShortVersion = "3.25";
public static string ShortVersion = "3.26";
public static string Version = "Version 3.25";
public static string Version = "Version 3.26 Test";
public static int RenderTier = 0;
public static bool IsInDesignMode = DesignerProperties.GetIsInDesignMode(new DependencyObject());
@@ -631,7 +631,7 @@ namespace BeWo
//AppSettings.AllowGkvAbrechnung = true;
//AppSettings.AllowGkvAbrechnung = false;
//showInfoButtonInCalender = true;
IsInDeveloperMode = true;
//IsInDeveloperMode = true;
//IsInDeveloperMode = false;
AppSettings.ModuleAiEnabled = true;
AppSettings.ModuleAiSettingsEnabled = false;

View File

@@ -0,0 +1,29 @@
using BeWo.ViewModel;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace BeWo.Converter
{
public class AddressToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var vm = value as AddressVM;
if (vm is null)
return null;
return vm.ToSingleLine();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -6,7 +6,8 @@ using System.Diagnostics;
namespace BeWo.Core
{
[DebuggerDisplay("{GoalEntryVM.Abbreviation}: {GoalEntryVM.Description}")]
#pragma warning disable CS0108 // Rethrow to preserve stack details
[DebuggerDisplay("{GoalEntryVM.Abbreviation}: {GoalEntryVM.Description}")]
public class SupportConceptGoalTreeItem : SupportConceptGoalDC
{
private ValueListEntryVM _GoalEntryVM;
@@ -97,5 +98,6 @@ namespace BeWo.Core
}
public ValueListEntryType GoalType => GoalEntryDC?.Type ?? GoalEntryVM.Type;
}
}
#pragma warning restore CS0108 // Rethrow to preserve stack details
}

View File

@@ -720,7 +720,6 @@
<localView:ImageButton
x:Name="button_Dokumente"
Width="90"
r:DemandUserRight.VisibleDemands="ViewAll, TeamView_ViewAll, TeamView_ViewMyTeams"
Background="{StaticResource DokumenteContentBrush}"
Click="button_Dokumente_Click"
Content="{t:Translate DokumenteMenuItem}"

View File

@@ -176,7 +176,16 @@ namespace BeWo
{
this.button_SchulbegleitenderDienst.Visibility = Visibility.Collapsed;
}
this.button_Dokumente.Visibility = Visibility.Collapsed;
if (BeWoApp.LoggedOnUser != null && BeWoApp.LoggedOnUser.HasRight(UserRightType.DocumentsAllowViewAll))
{
this.button_Dokumente.Visibility = Visibility.Visible;
}
else
{
this.button_Dokumente.Visibility = Visibility.Collapsed;
}
#endif
#if DEBUG

File diff suppressed because it is too large Load Diff

View File

@@ -301,47 +301,14 @@ namespace BeWo.ServiceProxy
#endregion
#region GkvAccounting
public static void DoGkvAccountingServiceAsync<T>(Func<IGkvAccountingService, T> pFunc, Action<T> pCallBack, bool showWaitDialog)
{
DoAsync<GkvAccountingServiceClient, IGkvAccountingService, T>(pFunc, pCallBack, showWaitDialog);
}
public static void DoGkvAccountingServiceAsync<T>(Func<IGkvAccountingService, T> pFunc, Action<T> pCallBack)
{
DoAsync<GkvAccountingServiceClient, IGkvAccountingService, T>(pFunc, pCallBack, true);
}
public static void DoGkvAccountingServiceAsyncGUI<T>(Func<IGkvAccountingService, T> pFunc, Action<T> pCallBack, Dispatcher dispatcher)
{
DoAsync<GkvAccountingServiceClient, IGkvAccountingService, T>(pFunc, pCallBack, null, true, dispatcher);
}
public static void DoGkvAccountingServiceAsync(Action<IGkvAccountingService> pAction)
{
DoAsync<GkvAccountingServiceClient, IGkvAccountingService>(pAction, true);
}
public static void DoGkvAccountingServiceSync(Action<IGkvAccountingService> pAction)
{
try
{
pAction.Invoke(GetInstance<GkvAccountingServiceClient, IGkvAccountingService>());
}
catch (Exception e)
{
ShowErrorMessage(e);
}
}
=> DoSync<GkvAccountingServiceClient, IGkvAccountingService>(pAction);
public static T DoGkvAccountingServiceSync<T>(Func<IGkvAccountingService, T> pFunc)
{
try
{
return pFunc.Invoke(GetInstance<GkvAccountingServiceClient, IGkvAccountingService>());
}
catch (Exception e)
{
ShowErrorMessage(e);
}
return default(T);
}
=> DoSync<GkvAccountingServiceClient, IGkvAccountingService, T>(pFunc);
public static void DoGkvAccountingServiceAsync(Action<IGkvAccountingService> pAction, Action pCallback = null, Action<Exception> pErrorCallback = null, bool showWaitDialog = true, UserControl caller = null)
=> DoAsync<GkvAccountingServiceClient, IGkvAccountingService>(pAction, pCallback, pErrorCallback, showWaitDialog, caller?.Dispatcher);
public static void DoGkvAccountingServiceAsync<T>(Func<IGkvAccountingService, T> pFunc, Action<T> pCallback = null, Action<Exception> pErrorCallback = null, bool showWaitDialog = true, UserControl caller = null)
=> DoAsync<GkvAccountingServiceClient, IGkvAccountingService, T>(pFunc, pCallback, pErrorCallback, showWaitDialog, caller?.Dispatcher);
#endregion

View File

@@ -0,0 +1,48 @@
using DevExpress.Export.Xl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Threading;
namespace BeWo.ServiceProxy
{
internal static class ServiceFacadeExtension
{
public static void DoGkvAccountingServiceAsync<T>(this UserControl uc, Func<IGkvAccountingService, T> pFunc, Action<T> pCallBack = null, bool showWaitDialog = true)
{
Action<T> lCallBack = null;
if (pCallBack != null)
{
lCallBack = (t) => uc.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
pCallBack(t);
});
}
ServiceFacade.DoGkvAccountingServiceAsync<T>(pFunc, lCallBack);
}
public static void DoGkvAccountingServiceAsync(this UserControl uc, Action<IGkvAccountingService> pAction, Action pCallBack = null, bool showWaitDialog = true)
{
Action lCallBack = null;
if (pCallBack != null)
{
lCallBack = () => uc.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
pCallBack();
});
}
ServiceFacade.DoGkvAccountingServiceAsync(pAction, lCallBack);
}
}
}

View File

@@ -63,24 +63,22 @@ namespace BeWo.View.Controls
{
var protokoll = datagrid_transfer.GetCurrentValue<GkvTransferProtokollDC>();
var oid = protokoll.GkvTransferProtokollOid.Value;
var oid = protokoll.Oid.Value;
ServiceFacade.DoGkvAccountingServiceAsyncGUI(
this.DoGkvAccountingServiceAsync(
service => service.GetProtokollRawDataString(oid, BS.Shared.GkvRawDataType.Auftragsdatei),
callback => ShowTextViewer("Auftragsdatei", callback),
Dispatcher);
callback => ShowTextViewer("Auftragsdatei", callback));
}
private void btn_nutzdatendatei_Click(object sender, RoutedEventArgs e)
{
var protokoll = datagrid_transfer.GetCurrentValue<GkvTransferProtokollDC>();
var oid = protokoll.GkvTransferProtokollOid.Value;
var oid = protokoll.Oid.Value;
ServiceFacade.DoGkvAccountingServiceAsyncGUI(
this.DoGkvAccountingServiceAsync(
service => service.GetProtokollRawDataString(oid, BS.Shared.GkvRawDataType.Nutzdatendatei),
callback => ShowTextViewer("Nutzdatendatei", callback),
Dispatcher);
callback => ShowTextViewer("Nutzdatendatei", callback));
}
private void ShowTextViewer(string title, string text)

View File

@@ -3,6 +3,7 @@ using System.Activities.Statements;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Windows;
using System.Windows.Controls;
@@ -15,170 +16,173 @@ using BeWo.ServiceProxy;
using BeWo.View.Controls;
using BeWo.View.Windows;
using BeWo.ViewModel;
using BeWo.ViewModel.Light;
using BeWo.ViewModel.ListViewModel;
using BeWo.ViewModel.ListViewModel.Light;
using BS.Shared;
using BS.Shared.AppSender;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.DataContracts.Light;
using BS.Shared.Extensions;
using DevExpress.Data.Filtering;
using DevExpress.Mvvm;
using DevExpress.Utils.Extensions;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using Microsoft.Win32;
namespace BeWo.View.Detail.Accounting
{
public partial class GkvAbrechnungOverview : BeWoView
{
private bool _IsRequesting = false;
public partial class GkvAbrechnungOverview : BeWoView
{
private bool _IsRequesting = false;
private readonly NewGkvAbrechnungPopUpView _NewGkvAbrechnungPopUpView;
private readonly GkvAbrechnungListVM _Viewmodel;
private readonly NewGkvAbrechnungPopUpView _NewGkvAbrechnungPopUpView;
private readonly GkvAbrechnungLightListVM _Viewmodel;
public GkvAbrechnungOverview()
{
UpdateDataGridFilterCommand = new DelegateCommand(UpdateDataGridFilter);
public GkvAbrechnungOverview()
{
UpdateDataGridFilterCommand = new DelegateCommand(UpdateDataGridFilter);
InitializeComponent();
InitializeComponent();
DownloadLinkEngine = new DownloadLinkEngine();
DownloadLinkEngine = new DownloadLinkEngine();
_Viewmodel = new GkvAbrechnungListVM();
_Viewmodel.VMList.ListChanged += (s, e) => gridView.BestFitColumns();
_Viewmodel = new GkvAbrechnungLightListVM();
_Viewmodel.VMList.ListChanged += (s, e) => gridView.BestFitColumns();
DataContext = _Viewmodel;
DataContext = _Viewmodel;
//datagrid_gkvAbrechnungen.FixedFilter = new BinaryOperator("Datenaustauschreferenz", 1);
//datagrid_gkvAbrechnungen.FixedFilter = new BinaryOperator("Datenaustauschreferenz", 1);
_NewGkvAbrechnungPopUpView = new NewGkvAbrechnungPopUpView();
_NewGkvAbrechnungPopUpView.CancelButtonClicked += NewGkvAbrechnungPopUpViewCancelButtonClicked;
_NewGkvAbrechnungPopUpView.CreateButtonClicked += NewGkvAbrechnungPopUpViewCreateButtonClicked;
_NewGkvAbrechnungPopUpView = new NewGkvAbrechnungPopUpView();
_NewGkvAbrechnungPopUpView.CancelButtonClicked += NewGkvAbrechnungPopUpViewCancelButtonClicked;
_NewGkvAbrechnungPopUpView.CreateButtonClicked += NewGkvAbrechnungPopUpViewCreateButtonClicked;
_Viewmodel.DateTimeSpanFilter = yearMonthFilter.FilterSpan;
}
_Viewmodel.DateTimeSpanFilter = yearMonthFilter.FilterSpan;
}
public DownloadLinkEngine DownloadLinkEngine { get; set; }
public DelegateCommand UpdateDataGridFilterCommand { get; set; }
public DownloadLinkEngine DownloadLinkEngine { get; set; }
public DelegateCommand UpdateDataGridFilterCommand { get; set; }
private bool ShowAllInvoices => _Viewmodel.DateTimeSpanFilter is null;
private bool ShowAllInvoices => _Viewmodel.DateTimeSpanFilter is null;
private void RefreshGkvAbrechnungenList()
{
if (_IsRequesting && ServiceFacade.IsWaiting())
return;
private void RefreshGkvAbrechnungenList()
{
if (_IsRequesting && ServiceFacade.IsWaiting())
return;
try
{
_IsRequesting = true;
_IsRequesting = true;
ServiceFacade.DoGkvAccountingServiceAsync(s => s.GetFilteredGkvAbrechnungen(null), UpdateGkvAbrechnungList);
}
catch(Exception e)
ServiceFacade.DoGkvAccountingServiceAsync(s => s.GetFilteredGkvAbrechnungen(null), UpdateGkvAbrechnungList);
}
catch (Exception e)
{
_IsRequesting = false;
_IsRequesting = false;
throw e;
throw e;
}
_IsRequesting = false;
}
private void UpdateGkvAbrechnungList(IList<GkvAbrechnungDC> dcList)
{
this.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
_Viewmodel.UpdateList(dcList);
_IsRequesting = false;
}
if (datagrid_gkvAbrechnungen.Visibility != Visibility.Visible)
datagrid_gkvAbrechnungen.Visibility = Visibility.Visible;
private void UpdateGkvAbrechnungList(IList<GkvAbrechnungLightDC> dcList)
{
this.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
_Viewmodel.UpdateList(dcList);
UpdateDataGridFilter();
});
}
if (datagrid_gkvAbrechnungen.Visibility != Visibility.Visible)
datagrid_gkvAbrechnungen.Visibility = Visibility.Visible;
private void UpdateDataGridFilter()
{
datagrid_gkvAbrechnungen.FixedFilter = null;
UpdateDataGridFilter();
});
}
if (ShowAllInvoices)
{
datagrid_gkvAbrechnungen.FixedFilter = null;
}
else
{
var filterByInvoiceDate = radioFilterByInvoiceDate.IsChecked.Value;
private void UpdateDataGridFilter()
{
datagrid_gkvAbrechnungen.FixedFilter = null;
var filter_start = _Viewmodel.DateTimeSpanFilter.StartDate;
var filter_ende = _Viewmodel.DateTimeSpanFilter.EndDate.AddDays(1).AddMilliseconds(-1);
if (filterByInvoiceDate)
{
datagrid_gkvAbrechnungen.FixedFilter = CriteriaOperator.And(
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => gkv.ErstelltAm >= filter_start),
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => gkv.ErstelltAm <= filter_ende));
}
else
{
datagrid_gkvAbrechnungen.FixedFilter = CriteriaOperator.Or(
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => filter_start <= gkv.AbrechnungsZeitraumStart && gkv.AbrechnungsZeitraumStart <= filter_ende),
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => filter_start <= gkv.AbrechnungsZeitraumEnde && gkv.AbrechnungsZeitraumEnde <= filter_ende),
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => gkv.AbrechnungsZeitraumStart <= filter_start && filter_ende <= gkv.AbrechnungsZeitraumEnde));
}
}
gridView.BestFitColumns();
gridView.BestFitColumn(ColumnButtons);
}
private void NewGkvAbrechnungPopUpViewCancelButtonClicked(object sender, EventArgs e)
{
MainControl.CloseCurrentPopUp();
}
private void NewGkvAbrechnungPopUpViewCreateButtonClicked(object sender, EventArgs<GkvAbrechnungDC> e)
{
var gkv_abrechnung = e.Data;
var checked_invoice_bases = _NewGkvAbrechnungPopUpView.ViewModel.InvoiceBases.Where(x => x.IsChecked);
if (!checked_invoice_bases.Any())
return;
var success = ValidatorExtended.TryValidateGkvAbrechnung(gkv_abrechnung, checked_invoice_bases, false);
if (!success)
{
var txt = "Sie haben Rechnungen mit verschiedenen Rechnungsadressen ausgewählt.";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OK);
return;
}
var already_used_invoices = checked_invoice_bases.Where(x => x.IsAlreadyInActiveGkvAbrechnung.Value);
if (already_used_invoices.Any())
if (ShowAllInvoices)
{
var txt = "Sie haben eine oder mehrere Rechnungen ausgewählt, welche bereits in einer " +
"anderen aktiven GKV-Abrechnung enthalten sind. Möchten Sie fortfahren?";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
datagrid_gkvAbrechnungen.FixedFilter = null;
}
else
{
var filterByInvoiceDate = radioFilterByInvoiceDate.IsChecked.Value;
if (result != MessageBoxResult.OK)
return;
var filter_start = _Viewmodel.DateTimeSpanFilter.StartDate;
var filter_ende = _Viewmodel.DateTimeSpanFilter.EndDate.AddDays(1).AddMilliseconds(-1);
if (filterByInvoiceDate)
{
datagrid_gkvAbrechnungen.FixedFilter = CriteriaOperator.And(
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => gkv.ErstelltAm >= filter_start),
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => gkv.ErstelltAm <= filter_ende));
}
else
{
datagrid_gkvAbrechnungen.FixedFilter = CriteriaOperator.Or(
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => filter_start <= gkv.AbrechnungsZeitraumStart && gkv.AbrechnungsZeitraumStart <= filter_ende),
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => filter_start <= gkv.AbrechnungsZeitraumEnde && gkv.AbrechnungsZeitraumEnde <= filter_ende),
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => gkv.AbrechnungsZeitraumStart <= filter_start && filter_ende <= gkv.AbrechnungsZeitraumEnde));
}
}
var bereits_bezahlt = checked_invoice_bases.Where(x => x.IsPaid);
if (bereits_bezahlt.Any())
{
var txt = "Sie haben eine oder mehrere Rechnungen ausgewählt, welche bereits als 'Bezahlt' " +
"markiert sind. Möchten Sie fortfahren?";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
gridView.BestFitColumns();
gridView.BestFitColumn(ColumnButtons);
}
if (result != MessageBoxResult.OK)
return;
}
private void NewGkvAbrechnungPopUpViewCancelButtonClicked(object sender, EventArgs e)
{
MainControl.CloseCurrentPopUp();
}
private void NewGkvAbrechnungPopUpViewCreateButtonClicked(object sender, EventArgs<GkvAbrechnungDC> e)
{
var gkv_abrechnung = e.Data;
MainControl.CloseCurrentPopUp();
var checked_invoice_bases = _NewGkvAbrechnungPopUpView.ViewModel.InvoiceBases.Where(x => x.IsChecked);
if (!checked_invoice_bases.Any())
return;
var success = ValidatorExtended.TryValidateGkvAbrechnung(gkv_abrechnung, checked_invoice_bases, false);
if (!success)
{
var txt = "Sie haben Rechnungen mit verschiedenen Rechnungsadressen ausgewählt.";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OK);
return;
}
var already_used_invoices = checked_invoice_bases.Where(x => x.IsAlreadyInActiveGkvAbrechnung.Value);
if (already_used_invoices.Any())
{
var txt = "Sie haben eine oder mehrere Rechnungen ausgewählt, welche bereits in einer " +
"anderen aktiven GKV-Abrechnung enthalten sind. Möchten Sie fortfahren?";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
if (result != MessageBoxResult.OK)
return;
}
var bereits_bezahlt = checked_invoice_bases.Where(x => x.IsPaid);
if (bereits_bezahlt.Any())
{
var txt = "Sie haben eine oder mehrere Rechnungen ausgewählt, welche bereits als 'Bezahlt' " +
"markiert sind. Möchten Sie fortfahren?";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
if (result != MessageBoxResult.OK)
return;
}
MainControl.CloseCurrentPopUp();
var gkv_filter = new GkvAbrechnungCreateRequestDC
{
@@ -187,264 +191,245 @@ namespace BeWo.View.Detail.Accounting
};
ServiceFacade.DoGkvAccountingServiceAsync(x => x.CreateNewGkvAbrechnung(gkv_filter),
cb => Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(Action)delegate
{
if (cb.Success)
{
RefreshGkvAbrechnungenList();
}
else
{
BeWoWindowBuilder.ShowTitleErrorMessageBox(cb.Message, cb.TitleMessage);
}
}));
}
cb => Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(Action)delegate
{
if (cb.Success)
{
RefreshGkvAbrechnungenList();
}
else
{
BeWoWindowBuilder.ShowTitleErrorMessageBox(cb.Message, cb.TitleMessage);
}
}));
}
private void YearMonthFilter_FilterSpanChanged(object sender, EventArgs<DateTimeSpan> e)
{
_Viewmodel.DateTimeSpanFilter = e.Data;
UpdateDataGridFilter();
}
private void YearMonthFilter_FilterSpanChanged(object sender, EventArgs<DateTimeSpan> e)
{
_Viewmodel.DateTimeSpanFilter = e.Data;
UpdateDataGridFilter();
}
private void btn_details_Click(object sender, RoutedEventArgs e)
{
var vm = this.datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
private void btn_details_Click(object sender, RoutedEventArgs e)
{
var vm = this.datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
var window = BeWoWindowBuilder.GetGkvAbrechnungDetailWindow(vm);
var window = BeWoWindowBuilder.GetGkvAbrechnungDetailWindow(vm);
window.Closing += Detail_Window_Closing;
window.Closing += Detail_Window_Closing;
window.ShowDialog();
}
window.ShowDialog();
}
private void Detail_Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
var bewo_window = sender as BeWoWindow;
var detail_control = bewo_window.GroupBoxContent as GkvAbrechnungDetailControl;
private void Detail_Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
var bewo_window = sender as BeWoWindow;
var detail_control = bewo_window.GroupBoxContent as GkvAbrechnungDetailControl;
var vm = detail_control.DataContext as GkvAbrechnungVM;
var vm = detail_control.DataContext as GkvAbrechnungLightVM;
vm.CheckAllInvoiceBases();
vm.CheckAllInvoiceBases();
var checkbox_checked = detail_control.Checkbox_Bezahlt.IsChecked;
var textbox_text = detail_control.txt_Notice.Text;
var checkbox_checked = detail_control.Checkbox_Bezahlt.IsChecked;
var textbox_text = detail_control.txt_Notice.Text;
vm.Notice = textbox_text;
vm.Notice = textbox_text;
if (vm.IsDirty)
{
var dc_in = vm.CommitToDataContract();
if (vm.IsDirty)
{
var dc_in = vm.CommitToDataContract();
ServiceFacade.DoGkvAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), dc_out =>
{
Dispatcher.Invoke(() => {
vm.UpdateByDataContract(dc_out);
});
}, false);
}
}
this.DoGkvAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), vm.UpdateByDataContract, false);
}
}
private void btn_send_Click(object sender, RoutedEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
private void btn_send_Click(object sender, RoutedEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungLightVM>();
var state = vm.GetState();
var state = vm.GetState();
string text = "Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung senden möchten?";
string text = "Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung senden möchten?";
if (state == GkvState.ErrorSoft)
text = "Die gewählte GKV-Abrechnung wurde nicht erfolgreich an die Krankenkasse übertragen. Möchten Sie sie erneut senden?";
if (MessageBox.Show(text, "GKV-Abrechnung senden", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
vm.SendGkvAbrechnung();
}
}
private void btn_delete_Click(object sender, RoutedEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
if (state == GkvState.ErrorSoft)
text = "Die gewählte GKV-Abrechnung wurde nicht erfolgreich an die Krankenkasse übertragen. Möchten Sie sie erneut senden?";
if (MessageBox.Show("Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung löschen möchten?", "GKV-Abrechnung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
_Viewmodel.VMList.Remove(vm);
if (MessageBox.Show(text, "GKV-Abrechnung senden", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes)
return;
ServiceFacade.DoGkvAccountingServiceAsync(s => s.DeleteGkvAbrechnung(vm.CommitToDataContract()));
}
}
private void NewButton_OnClick(object sender, RoutedEventArgs e)
{
GkvAbrechnungDC gkvAbrechnungDC = new GkvAbrechnungDC();
var req = new GkvAbrechnungSendRequestDC();
req.GkvAbrechnungOid = vm.Oid;
var start = DateTime.Today.AddMonths(-1);
var first = new DateTime(start.Year, start.Month, 1);
var last = first.AddMonths(1).AddDays(-1);
this.DoGkvAccountingServiceAsync(s => s.SendNewGkvAbrechnung(req), vm.UpdateBySendResponse);
}
private void btn_delete_Click(object sender, RoutedEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungLightVM>();
gkvAbrechnungDC.AbrechnungsZeitraumStart = first;
gkvAbrechnungDC.AbrechnungsZeitraumEnde = last;
if (MessageBox.Show("Sind Sie sicher, dass Sie die gewählte GKV-Abrechnung löschen möchten?", "GKV-Abrechnung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
this.DoGkvAccountingServiceAsync(s => s.DeleteGkvAbrechnung(vm.Oid, vm.Version), () => _Viewmodel.VMList.Remove(vm));
}
}
private void NewButton_OnClick(object sender, RoutedEventArgs e)
{
GkvAbrechnungDC gkvAbrechnungDC = new GkvAbrechnungDC();
GkvAbrechnungVM gkvAbrechnungVM = new GkvAbrechnungVM(gkvAbrechnungDC);
_NewGkvAbrechnungPopUpView.Clear();
_NewGkvAbrechnungPopUpView.ViewModel = gkvAbrechnungVM;
this.MainControl.ShowControlAsModalPopup(this._NewGkvAbrechnungPopUpView);
}
private void ReloadButton_OnClick(object sender, RoutedEventArgs e)
{
RefreshGkvAbrechnungenList();
}
var start = DateTime.Today.AddMonths(-1);
var first = new DateTime(start.Year, start.Month, 1);
var last = first.AddMonths(1).AddDays(-1);
private void gridView_Loaded(object sender, RoutedEventArgs e)
{
this.gridView.BestFitColumns();
}
private void gridView_ShownEditor(object sender, EditorEventArgs e)
{
if (e.Editor is CheckEdit)
{
var ed = (CheckEdit)e.Editor;
ed.Tag = e.Row;
}
else if (int.TryParse(datagrid_gkvAbrechnungen.CurrentColumn.Tag?.ToString(), out int tag) && gridView.ActiveEditor is TextEdit)
{
((TextEdit)gridView.ActiveEditor).SetPropertyValue("MaxLength", tag);
}
}
private void gridView_CellValueChanging(object sender, CellValueChangedEventArgs e)
{
if (e.Column is null)
return;
gkvAbrechnungDC.AbrechnungsZeitraumStart = first;
gkvAbrechnungDC.AbrechnungsZeitraumEnde = last;
if (e.Column.FieldName == nameof(GkvAbrechnungVM.Bezahlt))
{
if (e.Value is bool b && e.Row is GkvAbrechnungVM vm)
{
SaveBezahltChange(vm, b);
}
}
else if (e.Column.FieldName == nameof(GkvAbrechnungVM.UrbelegeGesendet))
{
if (e.Value is bool b && e.Row is GkvAbrechnungVM vm)
{
SaveUrbelegeGesendetChange(vm, b);
}
}
}
private void TableView_OnCustomRowAppearance(object sender, CustomRowAppearanceEventArgs e)
{
if (e.Property != null && e.Property.Name == "Background")
{
var gkvAbrechnungVM = datagrid_gkvAbrechnungen.GetRow(e.RowHandle) as GkvAbrechnungVM;
GkvAbrechnungVM gkvAbrechnungVM = new GkvAbrechnungVM(gkvAbrechnungDC);
_NewGkvAbrechnungPopUpView.Clear();
_NewGkvAbrechnungPopUpView.ViewModel = gkvAbrechnungVM;
this.MainControl.ShowControlAsModalPopup(this._NewGkvAbrechnungPopUpView);
}
private void ReloadButton_OnClick(object sender, RoutedEventArgs e)
{
RefreshGkvAbrechnungenList();
}
if (gkvAbrechnungVM is null)
return;
private void gridView_Loaded(object sender, RoutedEventArgs e)
{
this.gridView.BestFitColumns();
}
private void gridView_ShownEditor(object sender, EditorEventArgs e)
{
if (e.Editor is CheckEdit)
{
var ed = (CheckEdit)e.Editor;
ed.Tag = e.Row;
}
else if (int.TryParse(datagrid_gkvAbrechnungen.CurrentColumn.Tag?.ToString(), out int tag) && gridView.ActiveEditor is TextEdit)
{
((TextEdit)gridView.ActiveEditor).SetPropertyValue("MaxLength", tag);
}
}
private void gridView_CellValueChanging(object sender, CellValueChangedEventArgs e)
{
if (e.Column is null)
return;
if (gkvAbrechnungVM.GkvState == GkvState.WaitingForKrankenkasseTooLong && BeWoApp.Mandator.ColorWaitTooLong is string colorWaiting)
{
e.Result = ColorExtensions.ParseSolidColorBrush(colorWaiting);
e.Handled = true;
}
else if (gkvAbrechnungVM.GkvState == GkvState.WaitingForUrbelege && BeWoApp.Mandator.ColorSendUrbelege is string colorSend)
{
e.Result = ColorExtensions.ParseSolidColorBrush(colorSend);
e.Handled = true;
}
}
}
if (e.Column.FieldName == nameof(GkvAbrechnungLightVM.Bezahlt))
{
if (e.Value is bool b && e.Row is GkvAbrechnungLightVM vm)
{
SaveBezahltChange(vm, b);
}
}
else if (e.Column.FieldName == nameof(GkvAbrechnungLightVM.UrbelegeGesendet))
{
if (e.Value is bool b && e.Row is GkvAbrechnungLightVM vm)
{
SaveUrbelegeGesendetChange(vm, b);
}
}
}
private void TableView_OnCustomRowAppearance(object sender, CustomRowAppearanceEventArgs e)
{
if (e.Property != null && e.Property.Name == "Background")
{
var gkvAbrechnungVM = datagrid_gkvAbrechnungen.GetRow(e.RowHandle) as GkvAbrechnungLightVM;
private void radioFilterByInvoiceDate_Click(object sender, RoutedEventArgs e)
{
UpdateDataGridFilter();
}
if (gkvAbrechnungVM is null)
return;
private void SaveBezahltChange(GkvAbrechnungVM vm, bool b)
{
var dc_in = vm.CommitToDataContract();
if (gkvAbrechnungVM.GkvState == GkvState.WaitingForKrankenkasseTooLong && BeWoApp.Mandator.ColorWaitTooLong is string colorWaiting)
{
e.Result = ColorExtensions.ParseSolidColorBrush(colorWaiting);
e.Handled = true;
}
else if (gkvAbrechnungVM.GkvState == GkvState.WaitingForUrbelege && BeWoApp.Mandator.ColorSendUrbelege is string colorSend)
{
e.Result = ColorExtensions.ParseSolidColorBrush(colorSend);
e.Handled = true;
}
}
}
dc_in.Bezahlt = b;
private void radioFilterByInvoiceDate_Click(object sender, RoutedEventArgs e)
{
UpdateDataGridFilter();
}
ServiceFacade.DoGkvAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), dc_out =>
{
Dispatcher.Invoke(() => {
vm.UpdateByDataContract(dc_out);
});
}, false);
}
private void SaveBezahltChange(GkvAbrechnungLightVM vm, bool b)
{
var dc_in = vm.CommitToDataContract();
private void SaveUrbelegeGesendetChange(GkvAbrechnungVM vm, bool b)
{
var dc_in = vm.CommitToDataContract();
dc_in.Bezahlt = b;
dc_in.UrbelegeGesendet = b;
this.DoGkvAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), vm.UpdateByDataContract, false);
}
ServiceFacade.DoGkvAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), dc_out =>
{
Dispatcher.Invoke(() => {
vm.UpdateByDataContract(dc_out);
});
}, false);
}
private void SaveUrbelegeGesendetChange(GkvAbrechnungLightVM vm, bool b)
{
var dc_in = vm.CommitToDataContract();
private void SaveNoticeChange(GkvAbrechnungVM vm, string notice)
{
var dc_in = vm.CommitToDataContract();
dc_in.UrbelegeGesendet = b;
ServiceFacade.DoGkvAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), dc_out =>
{
Dispatcher.Invoke(() => {
vm.UpdateByDataContract(dc_out);
});
}, false);
}
this.DoGkvAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), vm.UpdateByDataContract, false);
}
private void gridView_CellValueChanged_1(object sender, CellValueChangedEventArgs e)
{
if (e.Column != null && e.Column.FieldName == "Notice")
{
if (e.Value is string s && e.Row is GkvAbrechnungVM vm)
{
SaveNoticeChange(vm, s);
}
}
}
private void SaveNoticeChange(GkvAbrechnungLightVM vm, string notice)
{
var dc_in = vm.CommitToDataContract();
this.DoGkvAccountingServiceAsync(x => x.UpdateGkvAbrechnung(dc_in), vm.UpdateByDataContract, false);
}
private void gridView_CellValueChanged_1(object sender, CellValueChangedEventArgs e)
{
if (e.Column != null && e.Column.FieldName == "Notice")
{
if (e.Value is string s && e.Row is GkvAbrechnungLightVM vm)
{
SaveNoticeChange(vm, s);
}
}
}
private void BeWoView_Loaded(object sender, RoutedEventArgs e)
{
_Viewmodel.FirePropertyChangedItself();
_Viewmodel.FirePropertyChangedItself();
if (_NewGkvAbrechnungPopUpView.PopupObjectList is object)
_NewGkvAbrechnungPopUpView.PopupObjectList = null;
if (_NewGkvAbrechnungPopUpView.PopupObjectList is object)
_NewGkvAbrechnungPopUpView.PopupObjectList = null;
RefreshGkvAbrechnungenList();
}
RefreshGkvAbrechnungenList();
}
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungLightVM>();
string what2send = "unterschriebene Leistungsnachweise";
string what2send = "unterschriebene Leistungsnachweise";
if (vm.Verfahrensstufe != GkvVerfahrensstufe.Echt)
what2send += " und Rechnungen";
if (vm.Verfahrensstufe != GkvVerfahrensstufe.Echt)
what2send += " und Rechnungen";
BeWoApp.ShowInfoMessage($"Begleitzettel bitte inklusive der enthaltenen Urbelege ({what2send}) ausdrucken, " +
$"Anzahl der Urbelege noch eintragen und alles zusammen versenden.");
BeWoApp.ShowInfoMessage($"Begleitzettel bitte inklusive der enthaltenen Urbelege ({what2send}) ausdrucken, " +
$"Anzahl der Urbelege noch eintragen und alles zusammen versenden.");
BeWoUtils.NavigateToReportUri(vm.ReportLink, "Druckvorschau");
}
BeWoUtils.NavigateToReportUri(vm.ReportLink, "Druckvorschau");
}
private void Hyperlink_OnRequestNavigate2(object sender, RequestNavigateEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungLightVM>();
string what2send = "Leistungsnachweise";
string what2send = "Leistungsnachweise";
if (vm.Verfahrensstufe != GkvVerfahrensstufe.Echt)
what2send += " und Rechnungen";
if (vm.Verfahrensstufe != GkvVerfahrensstufe.Echt)
what2send += " und Rechnungen";
BeWoApp.ShowInfoMessage($"Begleitzettel bitte inklusive der enthaltenen Urbelege ({what2send}) ausdrucken, " +
$"Anzahl der Urbelege noch eintragen und alles zusammen versenden.");
BeWoApp.ShowInfoMessage($"Begleitzettel bitte inklusive der enthaltenen Urbelege ({what2send}) ausdrucken, " +
$"Anzahl der Urbelege noch eintragen und alles zusammen versenden.");
BeWoUtils.NavigateToReportUri(vm.ReportLink2, "Druckvorschau");
}
BeWoUtils.NavigateToReportUri(vm.ReportLink2, "Druckvorschau");
}
}
}

View File

@@ -3,6 +3,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
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"
@@ -11,6 +12,7 @@
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:val="clr-namespace:BeWo.Validation"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
@@ -560,9 +562,7 @@
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="3"
Width="360"
Margin="0,8,0,0"
HorizontalAlignment="Left"
Header="GKV-Abrechnung"
Style="{StaticResource ObjectEditGroupBox}">
<GroupBox.Resources>
@@ -587,9 +587,16 @@
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="*"
Width="10*"
MinWidth="50"
MaxWidth="200" />
<ColumnDefinition Width="*" MinWidth="100" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="10*"
MinWidth="50"
MaxWidth="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
@@ -608,6 +615,7 @@
ToolTip="{Binding Path=IKKrankenkasse, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
</DockPanel>
<Label
Grid.Row="1"
Grid.Column="0"
@@ -622,79 +630,42 @@
Text="{Binding Path=Leistungserbringergruppe, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=Leistungserbringergruppe, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationLeistungserbringergruppe}}"
ToolTipService.ShowOnDisabled="True" />
<Button
x:Name="btn_ik"
Grid.Row="2"
Grid.Column="1"
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="2"
Height="auto"
Margin="10,3,10,3"
VerticalAlignment="Center"
Click="button_ik_ermitteln_click"
IsEnabled="{Binding IsIKNumberValid}"
Style="{StaticResource PrimaryButtonSmall}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Weitere IK's ermitteln
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}"
ToolTip="Daten aus Kostenträgerdatei ermitteln">
<TextBlock Margin="3" TextAlignment="Center">
GKV-Daten<LineBreak/>ermitteln
</TextBlock>
</Button>
<Label
Grid.Row="3"
Grid.Column="0"
VerticalAlignment="Center">
IK Kostenträger
</Label>
<TextBox
x:Name="txt_ikkostentrager"
Grid.Row="3"
Grid.Column="1"
Foreground="{Binding Path=IKKostentrager, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
IsEnabled="False"
Text="{Binding Path=IKKostentrager, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKKostentrager, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="4"
Grid.Column="0"
VerticalAlignment="Center">
IK Datenannahmestelle
</Label>
<TextBox
x:Name="txt_ikdatenannahmestelle"
Grid.Row="4"
Grid.Column="1"
Foreground="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
IsEnabled="False"
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="5"
Grid.Column="0"
VerticalAlignment="Center"
ToolTip="Bezeichnung Datenannahmestelle"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Bez. Datenannahmeste...
</Label>
<TextBox
x:Name="txt_bezdatenannahmestelle"
Grid.Row="5"
Grid.Column="1"
Foreground="{Binding Path=BezDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
IsEnabled="False"
Text="{Binding Path=BezDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=BezDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
ToolTipService.ShowOnDisabled="True"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<!--<Label
Grid.Row="6"
Grid.Row="2"
Grid.Column="0"
VerticalAlignment="Center"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Echtverfahren
Ausblenden
</Label>
<CheckBox
Grid.Row="6"
Grid.Row="2"
Grid.Column="1"
IsChecked="{Binding Echtverfahren}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />-->
IsChecked="{Binding GkvAusblenden, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<Label
x:Name="label_verfahrensstufe"
Grid.Row="7"
Grid.Row="3"
Grid.Column="0"
VerticalAlignment="Center"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
@@ -702,10 +673,18 @@
</Label>
<StackPanel
x:Name="radiobuttons_verfahrensstufe"
Grid.Row="7"
Grid.Row="3"
Grid.RowSpan="3"
Grid.Column="1"
Orientation="Horizontal"
Margin="0,4,0,0"
Orientation="Vertical"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
<StackPanel.Resources>
<Style TargetType="RadioButton">
<Setter Property="Padding" Value="2" />
<Setter Property="Margin" Value="2" />
</Style>
</StackPanel.Resources>
<RadioButton
x:Name="rb_test"
GroupName="a"
@@ -725,18 +704,106 @@
Echt
</RadioButton>
</StackPanel>
<Label
Grid.Row="8"
Grid.Column="0"
Grid.Row="0"
Grid.Column="3"
VerticalAlignment="Center"
ToolTip="Bezeichnung Datenannahmestelle"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Ausblenden
Datenannahmestelle
</Label>
<CheckBox
Grid.Row="8"
Grid.Column="1"
IsChecked="{Binding GkvAusblenden, UpdateSourceTrigger=PropertyChanged}"
<TextBox
x:Name="txt_bezdatenannahmestelle"
Grid.Row="0"
Grid.Column="4"
Foreground="{Binding Path=BezDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
IsEnabled="False"
Text="{Binding Path=BezDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=BezDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
ToolTipService.ShowOnDisabled="True"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<Label
Grid.Row="1"
Grid.Column="3"
VerticalAlignment="Center"
ToolTip="Hausanschrift der Datenannahmestelle"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Hausanschrift
</Label>
<TextBox
x:Name="txt_hausanschrift"
Grid.Row="1"
Grid.Column="4"
IsEnabled="False"
Text="{Binding Path=HausanschriftDatenannahmestelle, Converter={StaticResource AddressToStringConverter}, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<Label
Grid.Row="2"
Grid.Column="3"
VerticalAlignment="Center"
ToolTip="Postfachanschrift der Datenannahmestelle"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Postfachanschrift
</Label>
<TextBox
x:Name="txt_postfachanschrift"
Grid.Row="2"
Grid.Column="4"
IsEnabled="False"
Text="{Binding Path=PostfachanschriftDatenannahmestelle, Converter={StaticResource AddressToStringConverter}, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<Label
Grid.Row="3"
Grid.Column="3"
VerticalAlignment="Center"
ToolTip="Großkundenanschrift der Datenannahmestelle"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Großkundenanschrift
</Label>
<TextBox
x:Name="txt_großkundenanschrift"
Grid.Row="3"
Grid.Column="4"
IsEnabled="False"
Text="{Binding Path=GroßkundenanschriftDatenannahmestelle, Converter={StaticResource AddressToStringConverter}, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<Label
Grid.Row="4"
Grid.Column="3"
VerticalAlignment="Center">
IK Datenannahmestelle
</Label>
<TextBox
x:Name="txt_ikdatenannahmestelle"
Grid.Row="4"
Grid.Column="4"
Foreground="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
IsEnabled="False"
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="5"
Grid.Column="3"
VerticalAlignment="Center">
IK Kostenträger
</Label>
<TextBox
x:Name="txt_ikkostentrager"
Grid.Row="5"
Grid.Column="4"
Foreground="{Binding Path=IKKostentrager, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
IsEnabled="False"
Text="{Binding Path=IKKostentrager, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKKostentrager, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
</Grid>
</GroupBox>
<GroupBox

View File

@@ -63,11 +63,12 @@ namespace BeWo.View.Detail
tabitem_documents.Visibility = Visibility.Collapsed;
}
#if DEBUG
txt_bezdatenannahmestelle.IsEnabled = true;
txt_ikdatenannahmestelle.IsEnabled = true;
txt_ikkostentrager.IsEnabled = true;
#endif
if (BeWoApp.IsInDeveloperMode)
{
txt_bezdatenannahmestelle.IsEnabled = true;
txt_ikdatenannahmestelle.IsEnabled = true;
txt_ikkostentrager.IsEnabled = true;
}
}
public event EventHandler<EventArgs<OrganisationVM>> OrganisationSavedOrUpdated;
@@ -360,9 +361,7 @@ namespace BeWo.View.Detail
return;
}
ViewModel.BezDatenannahmestelle = response.BezDatenannahmestelle;
ViewModel.IKKostentrager = response.IKKostentrager;
ViewModel.IKDatenannahmestelle = response.IKDatenannahmestelle;
ViewModel.UpdateByGetIKResponse(response);
CommandManager.InvalidateRequerySuggested();
}

View File

@@ -57,7 +57,8 @@ using BeWo.View.Windows;
namespace BeWo.View.Detail.Zeiterfassung
{
public partial class ServiceRecordView2
#pragma warning disable CS0618
public partial class ServiceRecordView2
{
public static Visibility InsertedOnAndByVisibility
{
@@ -5134,33 +5135,34 @@ namespace BeWo.View.Detail.Zeiterfassung
}
}
//public class RowBackgroundHelper
//{
// public static Brush GetBackground(DependencyObject obj)
// {
// return (Brush)obj.GetValue(BackgroundProperty);
// }
// public static void SetBackground(DependencyObject obj, Brush value)
// {
// obj.SetValue(BackgroundProperty, value);
// }
// public static readonly DependencyProperty BackgroundProperty =
// DependencyProperty.RegisterAttached("Background", typeof(Brush), typeof(RowBackgroundHelper), null);
//public class RowBackgroundHelper
//{
// public static Brush GetBackground(DependencyObject obj)
// {
// return (Brush)obj.GetValue(BackgroundProperty);
// }
// public static void SetBackground(DependencyObject obj, Brush value)
// {
// obj.SetValue(BackgroundProperty, value);
// }
// public static readonly DependencyProperty BackgroundProperty =
// DependencyProperty.RegisterAttached("Background", typeof(Brush), typeof(RowBackgroundHelper), null);
// public static bool GetIsEnabled(DependencyObject obj)
// {
// return (bool)obj.GetValue(IsEnabledProperty);
// }
// public static bool GetIsEnabled(DependencyObject obj)
// {
// return (bool)obj.GetValue(IsEnabledProperty);
// }
// public static void SetIsEnabled(DependencyObject obj, bool value)
// {
// obj.SetValue(IsEnabledProperty, value);
// }
// public static void SetIsEnabled(DependencyObject obj, bool value)
// {
// obj.SetValue(IsEnabledProperty, value);
// }
// public static readonly DependencyProperty IsEnabledProperty =
// DependencyProperty.RegisterAttached("IsEnabled", typeof(bool), typeof(RowBackgroundHelper), new PropertyMetadata(false));
// public static readonly DependencyProperty IsEnabledProperty =
// DependencyProperty.RegisterAttached("IsEnabled", typeof(bool), typeof(RowBackgroundHelper), new PropertyMetadata(false));
//}
//}
#pragma warning restore CS0618
}

View File

@@ -3,6 +3,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:BeWo.View.Controls"
xmlns:doc="clr-namespace:BeWo.View.Document"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxa="http://schemas.devexpress.com/winfx/2008/xaml/accordion"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
@@ -12,7 +13,6 @@
xmlns:localView="clr-namespace:BeWo.View"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:master="clr-namespace:BeWo.View.Master"
xmlns:doc="clr-namespace:BeWo.View.Document"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
Width="Auto"
Height="Auto"
@@ -516,11 +516,22 @@
dx:ThemeManager.ThemeName="Office2010Black"
DefaultSorting="Name">
<dxg:TreeListControl.Columns>
<dxg:TreeListColumn AllowSorting="True" FieldName="Name" AllowEditing="False">
<dxg:TreeListColumn
AllowEditing="False"
AllowSorting="True"
FieldName="Name">
<dxg:TreeListColumn.CellTemplate>
<DataTemplate>
<dxe:TextEdit x:Name="PART_Editor" EditMode="InplaceActive" Text="{Binding Path=DataContext.RowData.Row.Name, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}, UpdateSourceTrigger=PropertyChanged}"
AcceptsReturn="False" AcceptsTab="False" TextTrimming="WordEllipsis" TextWrapping="NoWrap" SelectAllOnGotFocus="True" SelectAllOnMouseUp="True" />
<dxe:TextEdit
x:Name="PART_Editor"
AcceptsReturn="False"
AcceptsTab="False"
EditMode="InplaceActive"
SelectAllOnGotFocus="True"
SelectAllOnMouseUp="True"
Text="{Binding Path=DataContext.RowData.Row.Name, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}, UpdateSourceTrigger=PropertyChanged}"
TextTrimming="WordEllipsis"
TextWrapping="NoWrap" />
</DataTemplate>
</dxg:TreeListColumn.CellTemplate>
</dxg:TreeListColumn>
@@ -529,12 +540,14 @@
<dxg:TreeListView
x:Name="TemplateTreeView"
AllowEditing="True"
AutoExpandOnDrag="True"
AutoWidth="True"
ContextMenu="{StaticResource templatecm}"
FocusedRowChanged="TemplateTreeView_FocusedRowChanged"
HorizontalScrollbarVisibility="Auto"
KeyFieldName="{Binding DocumentTreeItemVM.DocTreeItemOid}"
LostFocus="TemplateTreeView_LostFocus"
NavigationStyle="Cell"
NodeExpanding="templateTreeListView_NodeExpanding"
ParentFieldName="Binding DocumentTreeItemVM.ParentOid"
PreviewMouseLeftButtonDown="TemplateTreeView_PreviewMouseButtonDown"
@@ -545,10 +558,8 @@
ShowIndicator="False"
ShowNodeImages="True"
ShowVerticalLines="False"
VerticalScrollbarVisibility="Auto"
AutoExpandOnDrag="True"
NavigationStyle="Cell"
ShownEditor="TemplateTreeView_ShownEditor" />
VerticalScrollbarVisibility="Auto"
/>
</dxg:TreeListControl.View>
</dxg:TreeListControl>
<!--
@@ -619,11 +630,11 @@
</dxlc:LayoutGroup>
<dxlc:LayoutGroup dxlc:LayoutControl.AllowHorizontalSizing="True">
<GroupBox
x:Name="GroupBoxTemplateList"
Grid.ColumnSpan="2"
Padding="5"
Header=""
Style="{StaticResource ObjectEditGroupBox}">
x:Name="GroupBoxTemplateList"
Grid.ColumnSpan="2"
Padding="5"
Header=""
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
@@ -634,54 +645,54 @@
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<dxg:GridControl
x:Name="datagrid_templates"
Grid.Row="0"
Grid.Column="1"
Margin="2,3,5,5">
x:Name="datagrid_templates"
Grid.Row="0"
Grid.Column="1"
Margin="2,3,5,5">
<dxg:GridControl.Columns>
<dxg:GridColumn
Width="24"
FieldName="FileName"
FixedWidth="True"
Header=""
ReadOnly="True">
Width="24"
FieldName="FileName"
FixedWidth="True"
Header=""
ReadOnly="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<Button
Width="20"
Height="20"
Margin="1"
VerticalAlignment="Center"
Click="TemplateDeleteButton_Click"
Content="r"
FontFamily="Webdings" />
Width="20"
Height="20"
Margin="1"
VerticalAlignment="Center"
Click="TemplateDeleteButton_Click"
Content="r"
FontFamily="Webdings" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn
Width="*"
AllowEditing="False"
FieldName="Name"
Header="Name" />
Width="*"
AllowEditing="False"
FieldName="Name"
Header="Name" />
<dxg:GridColumn
Width="*"
AllowEditing="False"
FieldName="Beschreibung"
Header="Beschreibung" />
Width="*"
AllowEditing="False"
FieldName="Beschreibung"
Header="Beschreibung" />
<dxg:GridColumn
Width="80"
FieldName="FileEdit"
FixedWidth="True"
Header=""
ReadOnly="True">
Width="80"
FieldName="FileEdit"
FixedWidth="True"
Header=""
ReadOnly="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<Button
Width="75"
Height="23"
VerticalAlignment="Center"
Click="EditTemplate_Click"
Content="Bearbeiten" />
Width="75"
Height="23"
VerticalAlignment="Center"
Click="EditTemplate_Click"
Content="Bearbeiten" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
@@ -705,13 +716,13 @@
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView
x:Name="TemplateTableView"
AutoWidth="false"
NavigationStyle="Row"
ShowGroupPanel="False"
ShowGroupedColumns="false"
ShowTotalSummary="False"
RowDoubleClick="TemplateTableView_RowDoubleClick"/>
x:Name="TemplateTableView"
AutoWidth="false"
NavigationStyle="Row"
RowDoubleClick="TemplateTableView_RowDoubleClick"
ShowGroupPanel="False"
ShowGroupedColumns="false"
ShowTotalSummary="False" />
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>

View File

@@ -45,7 +45,9 @@ using System.ComponentModel;
namespace BeWo.View.Document
{
public partial class DokumenteView
#pragma warning disable CS0618
public partial class DokumenteView
{
private string _UploadFileName;
private string _NormalFileName = null;
@@ -1439,6 +1441,8 @@ namespace BeWo.View.Document
row.DataContract.Node.Nodes.Add(dc.Node);
row.DataContract.Node.IsExpanded = true;
row.DataContract.Node.IsExpandButtonVisible = DefaultBoolean.True;
EditTemplateFolder(node);
}
else if (twi.Header.Equals("Umbenennen"))
{
@@ -1464,6 +1468,15 @@ namespace BeWo.View.Document
}
}
private void EditTemplateFolder(TreeListNode node)
{
//var vm = node.Content as DocumentTreeItemVM;
//template_treeview_control.SelectItem(node);
//var test = template_treeview_control.SelectedItems;
template_treeview_control.View.FocusedNode = node;
EditSelectedTemplateFolder();
}
private DokumentvorlageVM EditTemplate(DokumentvorlageVM vm)
{
@@ -2044,20 +2057,12 @@ namespace BeWo.View.Document
popup_UploadFiles.IsOpen = false;
}
private void DocumentsTreeView_ShownEditor(object sender, TreeListEditorEventArgs e)
{
}
private void TemplateTreeView_ShownEditor(object sender, TreeListEditorEventArgs e)
{
//e.Editor.SelectAll();
}
private void TemplateTableView_RowDoubleClick(object sender, RowDoubleClickEventArgs e)
{
EditSelectedTemplate();
}
}
internal class DocumentRootNodeConfig
@@ -2105,3 +2110,4 @@ namespace BeWo.View.Document
}
}
}
#pragma warning restore CS0618

View File

@@ -68,7 +68,7 @@ namespace BeWo.ViewModel
protected abstract DCType MapToDataContract(DCType pDataContract, bool doCommit);
internal virtual void UpdateByDataContract(DCType pDataContract)
public virtual void UpdateByDataContract(DCType pDataContract)
{
throw new NotImplementedException();
}
@@ -84,5 +84,22 @@ namespace BeWo.ViewModel
_DirtyProps.Add(pPropName);
}
}
protected bool SetProperty<T>(ref T field, T value, string propertyName, Func<T> originalValueProvider = null)
{
if (EqualityComparer<T>.Default.Equals(field, value))
return false;
field = value;
if (originalValueProvider != null)
{
bool isDirty = !EqualityComparer<T>.Default.Equals(originalValueProvider(), value);
StoreDirtyInformation(isDirty, propertyName);
}
FirePropertyChanged(propertyName);
return true;
}
}
}

149
BeWo/ViewModel/AddressVM.cs Normal file
View File

@@ -0,0 +1,149 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BS.Shared.DataContracts;
namespace BeWo.ViewModel
{
public class AddressVM : AbstractDCMapperVM<AddressDC>
{
private string _AddressLine1;
private string _AddressLine2;
private string _Country;
private long? _L_Version;
private decimal? _Latitude;
private decimal? _Longitude;
private string _PostalCode;
private string _State;
private string _Street;
private string _Town;
public AddressVM() : this(new AddressDC()) { }
public AddressVM(AddressDC dc) : base(dc, dc.Oid)
{
}
public string AddressLine1
{
get => _AddressLine1;
set => SetProperty(ref _AddressLine1, value, nameof(AddressLine1), () => DataContract.AddressLine1);
}
public string AddressLine2
{
get => _AddressLine2;
set => SetProperty(ref _AddressLine2, value, nameof(AddressLine2), () => DataContract.AddressLine2);
}
public string Country
{
get => _Country;
set => SetProperty(ref _Country, value, nameof(Country), () => DataContract.Country);
}
public long? L_Version
{
get => _L_Version;
set => SetProperty(ref _L_Version, value, nameof(L_Version), () => DataContract.L_Version);
}
public decimal? Latitude
{
get => _Latitude;
set => SetProperty(ref _Latitude, value, nameof(Latitude), () => DataContract.Latitude);
}
public decimal? Longitude
{
get => _Longitude;
set => SetProperty(ref _Longitude, value, nameof(Longitude), () => DataContract.Longitude);
}
public string PostalCode
{
get => _PostalCode;
set => SetProperty(ref _PostalCode, value, nameof(PostalCode), () => DataContract.PostalCode);
}
public string State
{
get => _State;
set => SetProperty(ref _State, value, nameof(State), () => DataContract.State);
}
public string Street
{
get => _Street;
set => SetProperty(ref _Street, value, nameof(Street), () => DataContract.Street);
}
public string Town
{
get => _Town;
set => SetProperty(ref _Town, value, nameof(Town), () => DataContract.Town);
}
protected override void InitByDataContract(AddressDC pDataContract)
{
_AddressLine1 = pDataContract.AddressLine1;
_AddressLine2 = pDataContract.AddressLine2;
_Country = pDataContract.Country;
_L_Version = pDataContract.L_Version;
_Latitude = pDataContract.Latitude;
_Longitude = pDataContract.Longitude;
_PostalCode = pDataContract.PostalCode;
_State = pDataContract.State;
_Street = pDataContract.Street;
_Town = pDataContract.Town;
}
protected override AddressDC MapToDataContract(AddressDC pDataContract, bool doCommit)
{
pDataContract.AddressLine1 = _AddressLine1;
pDataContract.AddressLine2 = _AddressLine2;
pDataContract.Country = _Country;
pDataContract.L_Version = _L_Version;
pDataContract.Latitude = _Latitude;
pDataContract.Longitude = _Longitude;
pDataContract.PostalCode = _PostalCode;
pDataContract.State = _State;
pDataContract.Street = _Street;
pDataContract.Town = _Town;
return pDataContract;
}
public string ToSingleLine()
{
var parts = new List<string>
{
AddressLine1,
AddressLine2,
Street,
PostalCode,
Town,
State,
Country
};
return string.Join(", ", parts.Where(p => !string.IsNullOrWhiteSpace(p)));
}
public override void UpdateByDataContract(AddressDC pDataContract)
{
AddressLine1 = pDataContract.AddressLine1;
AddressLine2 = pDataContract.AddressLine2;
Country = pDataContract.Country;
L_Version = pDataContract.L_Version;
Latitude = pDataContract.Latitude;
Longitude = pDataContract.Longitude;
PostalCode = pDataContract.PostalCode;
State = pDataContract.State;
Street = pDataContract.Street;
Town = pDataContract.Town;
FirePropertyChangedItself();
}
}
}

View File

@@ -99,7 +99,7 @@ namespace BeWo.ViewModel
return pDataContract;
}
internal override void UpdateByDataContract(AiConversationDC pDataContract)
public override void UpdateByDataContract(AiConversationDC pDataContract)
{
DataContract = pDataContract;

View File

@@ -50,21 +50,12 @@ namespace BeWo.ViewModel
private BindingList<InvoiceBaseVM> _InvoiceBases;
private OrganisationDC _Organisation;
private List<GkvTransferProtokollDC> _TransferProtokolle;
private List<GkvTransferProtokollDC> _Protokolle;
public GkvAbrechnungVM(GkvAbrechnungDC pDC) : base(pDC, !pDC.GkvAbrechnungOid.HasValue)
public GkvAbrechnungVM(GkvAbrechnungDC pDC) : base(pDC, !pDC.Oid.HasValue)
{
_InvoiceBases = new BindingList<InvoiceBaseVM>();
CheckAllInvoiceBasesCommand = new DelegateCommand(CheckAllInvoiceBases, HasAnyInvoiceBases);
UncheckAllInvoiceBasesCommand = new DelegateCommand(UncheckAllInvoicesBases, HasAnyInvoiceBases);
PrintSelectedInvoiceBasesCommand = new DelegateCommand(PrintSelectedInvoiceBases, HasAnySelectedInvoiceBases);
}
public DelegateCommand CheckAllInvoiceBasesCommand { get; set; }
public DelegateCommand UncheckAllInvoiceBasesCommand { get; set; }
public DelegateCommand PrintSelectedInvoiceBasesCommand { get; set; }
#region
public string AbrechnungsZeitraum => $"{AbrechnungsZeitraumStart.Value.ToShortDateString()} - {AbrechnungsZeitraumEnde.Value.ToShortDateString()}";
@@ -126,7 +117,7 @@ namespace BeWo.ViewModel
if (this.AreDifferent(this._GkvAbrechnungOid, value))
{
this._GkvAbrechnungOid = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.GkvAbrechnungOid, value), nameof(GkvAbrechnungOid));
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Oid, value), nameof(GkvAbrechnungOid));
this.FirePropertyChanged(nameof(GkvAbrechnungOid));
}
}
@@ -140,7 +131,7 @@ namespace BeWo.ViewModel
if (this.AreDifferent(this._GkvAbrechnungVersion, value))
{
this._GkvAbrechnungVersion = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.GkvAbrechnungVersion, value), nameof(GkvAbrechnungVersion));
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Version, value), nameof(GkvAbrechnungVersion));
this.FirePropertyChanged(nameof(GkvAbrechnungVersion));
}
}
@@ -233,13 +224,13 @@ namespace BeWo.ViewModel
get { return _InvoiceBases; }
set { _InvoiceBases = value; }
}
public List<GkvTransferProtokollDC> TransferProtokolle
public List<GkvTransferProtokollDC> Protokolle
{
get { return _TransferProtokolle; }
get { return _Protokolle; }
set
{
_TransferProtokolle = value;
FirePropertyChanged(nameof(TransferProtokolle));
_Protokolle = value;
FirePropertyChanged(nameof(Protokolle));
FirePropertyChanged(nameof(GkvState));
FirePropertyChanged(nameof(Fehlermeldung));
FirePropertyChanged(nameof(LastTransferDateTime));
@@ -287,7 +278,6 @@ namespace BeWo.ViewModel
}
}
#endregion
public IGkvTransferProtokoll LastTransferProtokoll => TransferProtokolle?.LastOrDefault();
public string RecipientString
{
@@ -352,17 +342,20 @@ namespace BeWo.ViewModel
}
}
public IEnumerable<IGkvTransferProtokoll> TransferProtokolle => Protokolle;
public IGkvTransferProtokoll LastTransferProtokoll => Protokolle?.LastOrDefault();
public bool IsFormularEnabled => LastTransferProtokoll is object ;
public bool IsUrbelegeEditEnabled => LastTransferProtokoll is object;
public bool IsBezahltEditEnabled => UrbelegeGesendet;
public GkvAbrechnungReportRequest ReportRequest
=> new GkvAbrechnungReportRequest(DataContract.GkvAbrechnungOid.Value, false);
=> new GkvAbrechnungReportRequest(DataContract.Oid.Value, false);
public string ReportLink
=> BeWoApp.SiteOfOrigin + "/ReportView.aspx" + ReportRequest.GetUrlPathString();
public GkvAbrechnungReportRequest ReportRequest2
=> new GkvAbrechnungReportRequest(DataContract.GkvAbrechnungOid.Value, true);
=> new GkvAbrechnungReportRequest(DataContract.Oid.Value, true);
public string ReportLink2
=> BeWoApp.SiteOfOrigin + "/ReportView.aspx" + ReportRequest2.GetUrlPathString();
@@ -371,9 +364,9 @@ namespace BeWo.ViewModel
public bool IsReady2Create
=> InvoiceBases?.Where(x => x.IsChecked).Any() ?? false;
public void UpdateByDataContract(GkvAbrechnungDC pDataContract)
public override void UpdateByDataContract(GkvAbrechnungDC pDataContract)
{
GkvAbrechnungVersion = pDataContract.GkvAbrechnungVersion;
GkvAbrechnungVersion = pDataContract.Version;
Notice = pDataContract.Notice;
@@ -393,8 +386,8 @@ namespace BeWo.ViewModel
_ErstelltAm = pDataContract.ErstelltAm;
_GkvAbrechnungOid = pDataContract.GkvAbrechnungOid;
_GkvAbrechnungVersion = pDataContract.GkvAbrechnungVersion;
_GkvAbrechnungOid = pDataContract.Oid;
_GkvAbrechnungVersion = pDataContract.Version;
_Notice = pDataContract.Notice;
@@ -411,7 +404,7 @@ namespace BeWo.ViewModel
if (pDataContract.TransferProtokolle != null)
{
_TransferProtokolle = new List<GkvTransferProtokollDC>(pDataContract.TransferProtokolle);
_Protokolle = new List<GkvTransferProtokollDC>(pDataContract.Protokolle);
}
_Organisation = pDataContract.Organisation;
@@ -426,8 +419,8 @@ namespace BeWo.ViewModel
pDataContract.ErstelltAm = _ErstelltAm;
pDataContract.GkvAbrechnungOid = _GkvAbrechnungOid;
pDataContract.GkvAbrechnungVersion = _GkvAbrechnungVersion;
pDataContract.Oid = _GkvAbrechnungOid;
pDataContract.Version = _GkvAbrechnungVersion;
pDataContract.Notice = _Notice;
pDataContract.Betrag = _Betrag;
@@ -441,97 +434,9 @@ namespace BeWo.ViewModel
pDataContract.InvoiceBases = _InvoiceBases2.Where(x => x.IsChecked).Select(vm => vm.CommitToDataContract()).ToList();
pDataContract.Organisation = _Organisation;
pDataContract.TransferProtokolle = _TransferProtokolle?.ToList();
pDataContract.Protokolle = _Protokolle?.ToList();
return pDataContract;
}
public void SendGkvAbrechnung()
{
var req = new GkvAbrechnungSendRequestDC();
req.GkvAbrechnungOid = GkvAbrechnungOid.Value;
ServiceFacade.DoGkvAccountingServiceAsync(s => s.SendNewGkvAbrechnung(req),
cb => Application.Current.Dispatch(() => UpdateBySendResponse(cb)), true);
}
public void UpdateBySendResponse(GkvAbrechnungSendResponseDC cb)
{
var dc = cb.GkvAbrechnungDC;
if (dc is null)
{
MessageBox.Show(Application.Current.MainWindow, cb.Message);
return;
}
GkvAbrechnungVersion = dc.GkvAbrechnungVersion;
TransferProtokolle = dc.TransferProtokolle.ToList();
IsReady2Send = dc.IsReady2Send;
SendTooltip = dc.SendTooltip;
var protokoll = cb.TransferProtokoll;
if (protokoll.ResultType == GkvTransferResultType.FailSoft)
{
MessageBox.Show(Application.Current.MainWindow, protokoll.Fehlernachricht, protokoll.Fehlertitel);
}
else if (protokoll.ResultType == GkvTransferResultType.FailFatal)
{
BeWoApp.ShowError(protokoll.Fehlertitel + ": " + protokoll.Fehlernachricht, null, false, false);
}
else
{
MessageBox.Show(Application.Current.MainWindow, "Ihre Sendung wurde korrekt übertragen");
}
}
public bool HasAnyInvoiceBases()
{
return InvoiceBases2 is object && InvoiceBases2.Any();
}
public void CheckAllInvoiceBases()
{
if (!HasAnyInvoiceBases())
return;
foreach (var invoice_base in InvoiceBases2)
{
invoice_base.IsChecked = true;
}
}
internal void UncheckAllInvoicesBases()
{
if (!HasAnyInvoiceBases())
return;
foreach (var invoice_base in InvoiceBases2)
{
invoice_base.IsChecked = false;
}
}
public bool HasAnySelectedInvoiceBases()
{
return HasAnyInvoiceBases() && getSelectedInvoiceBases().Any();
}
internal void PrintSelectedInvoiceBases()
{
var selected = new List<long>(getSelectedInvoiceBases());
if (!selected.Any())
return;
ServiceFacade.DoReportServiceAsync(s => s.CreateInvoiceListReport(selected), ms => BeWoApp.MainControl.Dispatch(() => BeWoUtils.ShowReportWindow(ms, "Rechnungen")));
}
private IEnumerable<long> getSelectedInvoiceBases()
{
return InvoiceBases2.Where(x => x.IsChecked).Select(x => x.DataContract.InvoiceBaseOid.Value);
}
}
}

View File

@@ -0,0 +1,521 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using System.Windows.Threading;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.DataContracts.Light;
using BS.Shared.Extensions;
using BS.Shared.Interface;
using BS.Shared.ReportRequests;
using DevExpress.Mvvm;
using DevExpress.Xpf.Core;
namespace BeWo.ViewModel.Light
{
public class GkvAbrechnungLightVM : AbstractDCMapperVM<GkvAbrechnungLightDC>, IGkvAbrechnung
{
public static string PropertyName_AbrechnungsZeitraumStart = "AbrechnungsZeitraumStart";
public static string PropertyName_AbrechnungsZeitraumEnde = "AbrechnungsZeitraumEnde";
public static string PropertyName_ErstelltAm = "ErstelltAm";
private long _Oid;
private long _Version;
private string _Notice;
private long _OrganisationOid;
private string _OrganisationName;
private DateTime? _AbrechnungsZeitraumStart;
private DateTime? _AbrechnungsZeitraumEnde;
private DateTime _ErstelltAm;
private decimal _Betrag;
private bool _Bezahlt;
private bool _UrbelegeGesendet;
private GkvVerfahrensstufe _Verfahrensstufe;
internal bool _IsChecked;
private bool _IsReady2Send;
private string _SendTooltip;
private List<GkvTransferProtokollLightDC> _Protokolle;
public GkvAbrechnungLightVM(GkvAbrechnungLightDC pDC) : base(pDC, false)
{
InvoiceBases = new BindingList<InvoiceBaseLightVM>();
CheckAllInvoiceBasesCommand = new DelegateCommand(CheckAllInvoiceBases, HasAnyInvoiceBases);
UncheckAllInvoiceBasesCommand = new DelegateCommand(UncheckAllInvoicesBases, HasAnyInvoiceBases);
PrintSelectedInvoiceBasesCommand = new DelegateCommand(PrintSelectedInvoiceBases, HasAnySelectedInvoiceBases);
}
public DelegateCommand CheckAllInvoiceBasesCommand { get; set; }
public DelegateCommand UncheckAllInvoiceBasesCommand { get; set; }
public DelegateCommand PrintSelectedInvoiceBasesCommand { get; set; }
#region
public string AbrechnungsZeitraum => $"{AbrechnungsZeitraumStart.Value.ToShortDateString()} - {AbrechnungsZeitraumEnde.Value.ToShortDateString()}";
public DateTime? AbrechnungsZeitraumStart
{
get { return this._AbrechnungsZeitraumStart; }
set
{
if (this.AreDifferent(this._AbrechnungsZeitraumStart, value))
{
this._AbrechnungsZeitraumStart = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.AbrechnungsZeitraumStart, value), PropertyName_AbrechnungsZeitraumStart);
this.FirePropertyChanged(PropertyName_AbrechnungsZeitraumStart);
// RE893748923
// var day = value.Value.Day;
// AbrechnungsZeitraumEnde = value.Value.AddDays(1 - day).AddMonths(1).AddDays(-1);
}
}
}
public DateTime? AbrechnungsZeitraumEnde
{
get { return this._AbrechnungsZeitraumEnde; }
set
{
if (this.AreDifferent(this._AbrechnungsZeitraumEnde, value))
{
this._AbrechnungsZeitraumEnde = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.AbrechnungsZeitraumEnde, value), PropertyName_AbrechnungsZeitraumEnde);
this.FirePropertyChanged(PropertyName_AbrechnungsZeitraumEnde);
}
}
}
public DateTime ErstelltAm
{
get { return this._ErstelltAm; }
set
{
if (AreDifferent(_ErstelltAm, value))
{
_ErstelltAm = value;
StoreDirtyInformation(AreDifferent(DataContract.ErstelltAm, value), nameof(ErstelltAm));
FirePropertyChanged(nameof(ErstelltAm));
FirePropertyChanged(nameof(ErstelltAmDate));
}
}
}
public DateTime ErstelltAmDate => ErstelltAm.Date;
public long Oid
{
get { return this._Oid; }
set
{
if (this.AreDifferent(this._Oid, value))
{
this._Oid = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Oid, value), nameof(Oid));
this.FirePropertyChanged(nameof(Oid));
}
}
}
public long Version
{
get { return this._Oid; }
set
{
if (this.AreDifferent(this._Version, value))
{
this._Version = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Version, value), nameof(Version));
this.FirePropertyChanged(nameof(Version));
}
}
}
public string Notice
{
get { return this._Notice; }
set
{
if (this.AreDifferent(this._Notice, value))
{
this._Notice = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Notice, value), nameof(Notice));
this.FirePropertyChanged(nameof(Notice));
}
}
}
public decimal Betrag
{
get { return this._Betrag; }
set
{
if (this.AreDifferent(this._Betrag, value))
{
this._Betrag = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Betrag, value), nameof(Betrag));
this.FirePropertyChanged(nameof(Betrag));
}
}
}
public bool Bezahlt
{
get { return _Bezahlt; }
set
{
if (AreDifferent(this._Bezahlt, value))
{
_Bezahlt = value;
StoreDirtyInformation(AreDifferent(DataContract.Bezahlt, value), nameof(Bezahlt));
FirePropertyChanged(nameof(Bezahlt));
FirePropertyChanged(nameof(GkvState));
FirePropertyChanged(nameof(Fehlermeldung));
}
}
}
public bool UrbelegeGesendet
{
get { return _UrbelegeGesendet; }
set
{
if (!AreDifferent(_UrbelegeGesendet, value))
return;
_UrbelegeGesendet = value;
StoreDirtyInformation(AreDifferent(DataContract.UrbelegeGesendet, value), nameof(UrbelegeGesendet));
FirePropertyChanged(nameof(UrbelegeGesendet));
FirePropertyChanged(nameof(GkvState));
FirePropertyChanged(nameof(IsBezahltEditEnabled));
}
}
public GkvState GkvState
{
get { return this.GetState(); }
}
public bool IsChecked
{
get { return _IsChecked; }
set
{
if (AreDifferent(_IsChecked, value))
{
_IsChecked = value;
FirePropertyChanged(nameof(IsChecked));
}
}
}
public BindingList<InvoiceBaseLightVM> InvoiceBases { get; set; }
public List<GkvTransferProtokollLightDC> Protokolle
{
get { return _Protokolle; }
set
{
_Protokolle = value;
FirePropertyChanged(nameof(Protokolle));
FirePropertyChanged(nameof(GkvState));
FirePropertyChanged(nameof(Fehlermeldung));
FirePropertyChanged(nameof(LastTransferDateTime));
}
}
public long OrganisationOid
{
get { return _OrganisationOid; }
set
{
if (!AreDifferent(_OrganisationOid, value))
return;
_OrganisationOid = value;
StoreDirtyInformation(this.AreDifferent(this.DataContract.OrganisationOid, value), nameof(OrganisationOid));
FirePropertyChanged(nameof(OrganisationOid));
}
}
public string OrganisationName
{
get { return _OrganisationName; }
set
{
if (!AreDifferent(_OrganisationName, value))
return;
_OrganisationName = value;
StoreDirtyInformation(this.AreDifferent(this.DataContract.OrganisationName, value), nameof(OrganisationName));
FirePropertyChanged(nameof(OrganisationName));
}
}
public GkvVerfahrensstufe Verfahrensstufe
{
get { return this._Verfahrensstufe; }
set
{
if (this.AreDifferent(this._Verfahrensstufe, value))
{
this._Verfahrensstufe = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Verfahrensstufe, value), nameof(Verfahrensstufe));
this.FirePropertyChanged(nameof(Verfahrensstufe));
}
}
}
public int VerfahrensstufeInt
{
get { return (int)Verfahrensstufe; }
set
{
if (!AreDifferent(this.VerfahrensstufeInt, value))
return;
Verfahrensstufe = (GkvVerfahrensstufe)value;
//FirePropertyChanged(nameof(VerfahrensstufeInt));
}
}
#endregion
public string RecipientString
{
get
{
if (InvoiceBases != null && InvoiceBases.Any())
{
return InvoiceBases.First().RecipientOrganisation;
}
return string.Empty;
}
}
public string Fehlermeldung
{
get
{
if (!(LastTransferProtokoll is GkvTransferProtokollDC last))
return null;
if (string.IsNullOrWhiteSpace(last.Fehlernachricht))
return null;
if (string.IsNullOrWhiteSpace(last.Fehlertitel))
return last.Fehlernachricht;
return $"{last.Fehlertitel}: {last.Fehlernachricht}";
}
}
public DateTime? LastTransferDateTime
{
get
{
if (LastTransferProtokoll is GkvTransferProtokollDC last)
return last.ErstelltAm?.Date;
return null;
}
}
public bool IsReady2Send
{
get { return _IsReady2Send; }
set
{
if (!AreDifferent(IsReady2Send, value))
return;
_IsReady2Send = value;
FirePropertyChanged(nameof(IsReady2Send));
}
}
public string SendTooltip
{
get { return _SendTooltip; }
set
{
if (!AreDifferent(SendTooltip, value))
return;
_SendTooltip = value;
FirePropertyChanged(nameof(SendTooltip));
}
}
public IEnumerable<IGkvTransferProtokoll> TransferProtokolle => Protokolle;
public IGkvTransferProtokoll LastTransferProtokoll => Protokolle?.LastOrDefault();
public bool IsFormularEnabled => LastTransferProtokoll is object ;
public bool IsUrbelegeEditEnabled => LastTransferProtokoll is object;
public bool IsBezahltEditEnabled => UrbelegeGesendet;
public GkvAbrechnungReportRequest ReportRequest
=> new GkvAbrechnungReportRequest(DataContract.Oid, false);
public string ReportLink
=> BeWoApp.SiteOfOrigin + "/ReportView.aspx" + ReportRequest.GetUrlPathString();
public GkvAbrechnungReportRequest ReportRequest2
=> new GkvAbrechnungReportRequest(DataContract.Oid, true);
public string ReportLink2
=> BeWoApp.SiteOfOrigin + "/ReportView.aspx" + ReportRequest2.GetUrlPathString();
public void FirePropertyIsReady2CreateChanged()
=> FirePropertyChanged(nameof(IsReady2Create));
public bool IsReady2Create
=> InvoiceBases?.Where(x => x.IsChecked).Any() ?? false;
public override void UpdateByDataContract(GkvAbrechnungLightDC pDataContract)
{
Version = pDataContract.Version;
Notice = pDataContract.Notice;
Betrag = pDataContract.Betrag;
Bezahlt = pDataContract.Bezahlt;
if (pDataContract.InvoiceBases != null)
{
var l = pDataContract.InvoiceBases.Select(x => new InvoiceBaseLightVM(x, true)).ToList();
InvoiceBases = new BindingList<InvoiceBaseLightVM>(l);
}
}
protected override void InitByDataContract(GkvAbrechnungLightDC pDataContract)
{
_AbrechnungsZeitraumStart = pDataContract.AbrechnungsZeitraumStart;
_AbrechnungsZeitraumEnde = pDataContract.AbrechnungsZeitraumEnde;
_ErstelltAm = pDataContract.ErstelltAm;
_Oid = pDataContract.Oid;
_Version = pDataContract.Version;
_Notice = pDataContract.Notice;
_Betrag = pDataContract.Betrag;
_Bezahlt = pDataContract.Bezahlt;
_UrbelegeGesendet = pDataContract.UrbelegeGesendet;
_Verfahrensstufe = pDataContract.Verfahrensstufe;
if (pDataContract.InvoiceBases != null)
{
var l = pDataContract.InvoiceBases.Select(x => new InvoiceBaseLightVM(x, true)).ToList();
InvoiceBases = new BindingList<InvoiceBaseLightVM>(l);
}
if (pDataContract.Protokolle != null)
{
_Protokolle = new List<GkvTransferProtokollLightDC>(pDataContract.Protokolle);
}
_OrganisationOid = pDataContract.OrganisationOid;
_OrganisationName = pDataContract.OrganisationName;
_IsReady2Send = pDataContract.IsReady2Send;
_SendTooltip = pDataContract.SendTooltip;
}
protected override GkvAbrechnungLightDC MapToDataContract(GkvAbrechnungLightDC pDataContract, bool doCommit)
{
pDataContract.Version = _Version;
pDataContract.Notice = _Notice;
pDataContract.Betrag = _Betrag;
pDataContract.Bezahlt = _Bezahlt;
return pDataContract;
}
public void UpdateBySendResponse(GkvAbrechnungSendResponseDC cb)
{
var dc = cb.GkvAbrechnungDC;
if (dc is null)
{
MessageBox.Show(Application.Current.MainWindow, cb.Message);
return;
}
Version = dc.Version;
Protokolle = dc.Protokolle.ToList();
IsReady2Send = dc.IsReady2Send;
SendTooltip = dc.SendTooltip;
var protokoll = cb.TransferProtokoll;
if (protokoll.ResultType == GkvTransferResultType.FailSoft)
{
MessageBox.Show(Application.Current.MainWindow, protokoll.Fehlernachricht, protokoll.Fehlertitel);
}
else if (protokoll.ResultType == GkvTransferResultType.FailFatal)
{
BeWoApp.ShowError(protokoll.Fehlertitel + ": " + protokoll.Fehlernachricht, null, false, false);
}
else
{
MessageBox.Show(Application.Current.MainWindow, "Ihre Sendung wurde korrekt übertragen");
}
}
public bool HasAnyInvoiceBases()
{
return InvoiceBases is object && InvoiceBases.Any();
}
public void CheckAllInvoiceBases()
{
if (!HasAnyInvoiceBases())
return;
foreach (var invoice_base in InvoiceBases)
{
invoice_base.IsChecked = true;
}
}
internal void UncheckAllInvoicesBases()
{
if (!HasAnyInvoiceBases())
return;
foreach (var invoice_base in InvoiceBases)
{
invoice_base.IsChecked = false;
}
}
public bool HasAnySelectedInvoiceBases()
{
return HasAnyInvoiceBases() && getSelectedInvoiceBases().Any();
}
internal void PrintSelectedInvoiceBases()
{
var selected = new List<long>(getSelectedInvoiceBases());
if (!selected.Any())
return;
ServiceFacade.DoReportServiceAsync(s => s.CreateInvoiceListReport(selected), ms => BeWoApp.MainControl.Dispatch(() => BeWoUtils.ShowReportWindow(ms, "Rechnungen")));
}
private IEnumerable<long> getSelectedInvoiceBases()
{
return InvoiceBases.Where(x => x.IsChecked).Select(x => x.DataContract.Oid.Value);
}
}
}

View File

@@ -0,0 +1,312 @@
using BeWo.Validation;
using BeWo.ViewModel.ListViewModel;
using BS.Shared.DataContracts;
using BS.Shared;
using BS.Shared.DataContracts.Light;
using BS.Shared.Interface;
using BS.Shared.Translation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BS.Shared.Core;
namespace BeWo.ViewModel.Light
{
public class InvoiceBaseLightVM : AbstractDCMapperVM<InvoiceBaseLightDC>
{
private readonly Dictionary<InvoiceType, string> _TypeTranslation = new Dictionary<InvoiceType, string>
{
{
InvoiceType.CustomerEquity, Translator.Translate("Eigenanteil")
},
{
InvoiceType.General, Translator.Translate("Allgemein")
},
{
InvoiceType.Settlement, Translator.Translate("Spitzabrechnung")
},
{
InvoiceType.Service, Translator.Translate("Rechnung")
}
};
private DateTime? _AccountingPeriodEnd;
private DateTime? _AccountingPeriodStart;
private string _CustomerName = string.Empty;
private string _RecipientOrganisation = string.Empty;
private DateTime? _InvoiceDate;
private string _InvoiceNumber = string.Empty;
private string _InvoiceTypeText = string.Empty;
private decimal? _TotalAmount;
internal bool _IsPaid;
internal bool _IsChecked;
private string _Notice = string.Empty;
public InvoiceBaseLightVM(InvoiceBaseLightDC pDC, bool isChecked = false)
: base(pDC, false)
{
_IsChecked = isChecked;
}
public bool IsGkvValid { get; private set; }
public string IsGkvValidError { get; private set; }
public bool? IsAlreadyInActiveGkvAbrechnung { get; private set; }
public bool IsChecked
{
get { return _IsChecked; }
set
{
if (AreDifferent(_IsChecked, value))
{
_IsChecked = value;
FirePropertyChanged("IsChecked");
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public DateTime? AccountingPeriodEnd
{
get { return _AccountingPeriodEnd; }
set
{
if (AreDifferent(_AccountingPeriodEnd, value))
{
_AccountingPeriodEnd = value;
StoreDirtyInformation(AreDifferent(DataContract.AccountingPeriodEnd, value), nameof(AccountingPeriodEnd));
FirePropertyChanged(nameof(AccountingPeriodEnd));
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public DateTime? AccountingPeriodStart
{
get { return _AccountingPeriodStart; }
set
{
if (AreDifferent(_AccountingPeriodStart, value))
{
_AccountingPeriodStart = value;
StoreDirtyInformation(AreDifferent(DataContract.AccountingPeriodStart, value), nameof(AccountingPeriodStart));
FirePropertyChanged(nameof(AccountingPeriodStart));
}
}
}
public string AccountingPeriodString
{
get
{
return _AccountingPeriodEnd.HasValue && _AccountingPeriodStart.HasValue
? _AccountingPeriodStart.Value.ToShortDateString() + " - " + _AccountingPeriodEnd.Value.ToShortDateString()
: string.Empty;
}
set { }
}
public string CustomerName
{
get { return _CustomerName; }
set
{
if (AreDifferent(_CustomerName, value))
{
_CustomerName = value;
StoreDirtyInformation(AreDifferent(DataContract.CustomerName, value), nameof(CustomerName));
FirePropertyChanged(nameof(CustomerName));
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public DateTime? InvoiceDate
{
get { return _InvoiceDate; }
set
{
if (AreDifferent(_InvoiceDate, value))
{
_InvoiceDate = value;
StoreDirtyInformation(AreDifferent(DataContract.InvoiceDate, value), nameof(InvoiceDate));
FirePropertyChanged(nameof(InvoiceDate));
}
}
}
public string InvoiceNumber
{
get { return _InvoiceNumber; }
set
{
if (AreDifferent(_InvoiceNumber, value))
{
_InvoiceNumber = value;
StoreDirtyInformation(AreDifferent(DataContract.InvoiceNumber, value), nameof(InvoiceNumber));
FirePropertyChanged(nameof(InvoiceNumber));
}
}
}
public string InvoiceTypeText
{
get { return _InvoiceTypeText; }
set
{
if (AreDifferent(InvoiceTypeText, value))
{
_InvoiceTypeText = value;
StoreDirtyInformation(AreDifferent(DataContract.InvoiceTypeText, value), nameof(InvoiceTypeText));
FirePropertyChanged(nameof(InvoiceTypeText));
}
}
}
public bool IsPaid
{
get { return _IsPaid; }
set
{
if (AreDifferent(_IsPaid, value))
{
_IsPaid = value;
StoreDirtyInformation(AreDifferent(DataContract.IsPaid, value), nameof(IsPaid));
FirePropertyChanged(nameof(IsPaid));
}
}
}
public string Notice
{
get { return _Notice; }
set
{
if (AreDifferent(_Notice, value))
{
_Notice = value;
StoreDirtyInformation(AreDifferent(DataContract.Notice, value), nameof(Notice));
FirePropertyChanged(nameof(Notice));
}
}
}
public string RecipientOrganisation
{
get { return _RecipientOrganisation; }
set
{
if (AreDifferent(_RecipientOrganisation, value))
{
_RecipientOrganisation = value;
StoreDirtyInformation(AreDifferent(DataContract.RecipientOrganisation, value), nameof(RecipientOrganisation));
FirePropertyChanged(nameof(RecipientOrganisation));
}
}
}
public string ReportLink
{
get
{
string url = string.Empty;
switch (DataContract.Type)
{
case InvoiceType.CustomerEquity:
url = BeWoApp.SiteOfOrigin + "/ReportView.aspx?ioid=" + DataContract.Oid + "&type=CustomerInvoice";
break;
case InvoiceType.General:
url = BeWoApp.SiteOfOrigin + "/ReportView.aspx?ioid=" + DataContract.Oid + "&type=CustomerInvoice";
break;
case InvoiceType.Settlement:
url = BeWoApp.SiteOfOrigin + "/ReportView.aspx?ibid=" + DataContract.Oid + "&type=" + Utils.EnumName(ReportTypes.Settlement);
break;
case InvoiceType.Service:
url = BeWoApp.SiteOfOrigin + "/ReportView.aspx?ibid=" + DataContract.Oid + "&type=" + Utils.EnumName(ReportTypes.ServiceInvoice);
break;
default:
url = string.Empty;
break;
}
return url;
}
}
public decimal? TotalAmount
{
get { return _TotalAmount; }
set
{
if (AreDifferent(_TotalAmount, value))
{
_TotalAmount = value;
StoreDirtyInformation(AreDifferent(DataContract.TotalAmount, value), nameof(TotalAmount));
FirePropertyChanged(nameof(TotalAmount));
}
}
}
public string TypeString
{
get
{
if (!String.IsNullOrEmpty(DataContract.InvoiceTypeText))
{
return DataContract.InvoiceTypeText;
}
return _TypeTranslation[DataContract.Type];
}
}
public String BackgroundColor
{
get; set;
}
protected override void InitByDataContract(InvoiceBaseLightDC pDataContract)
{
// private DateTime? _AccountingPeriodEnd;
//private DateTime? _AccountingPeriodStart;
//private string _CustomerName = string.Empty;
//private string _RecipientOrganisation = string.Empty;
//private string InvoiceTypeText = string.Empty;
//private DateTime _InvoiceDate;
_AccountingPeriodStart = pDataContract.AccountingPeriodStart;
_AccountingPeriodEnd = pDataContract.AccountingPeriodEnd;
_CustomerName = pDataContract.CustomerName;
_RecipientOrganisation = pDataContract.RecipientOrganisation;
_IsPaid = pDataContract.IsPaid;
_InvoiceTypeText = pDataContract.InvoiceTypeText;
_InvoiceNumber = pDataContract.InvoiceNumber;
_InvoiceDate = pDataContract.InvoiceDate;
_AccountingPeriodEnd = pDataContract.AccountingPeriodEnd;
_AccountingPeriodStart = pDataContract.AccountingPeriodStart;
_Notice = pDataContract.Notice;
_TotalAmount = pDataContract.TotalAmount;
}
protected override InvoiceBaseLightDC MapToDataContract(InvoiceBaseLightDC pDataContract, bool doCommit)
{
pDataContract.IsPaid = _IsPaid;
pDataContract.Notice = _Notice;
return pDataContract;
}
}
}

View File

@@ -1,60 +1,62 @@
using System.Collections.Generic;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
namespace BeWo.ViewModel.ListViewModel
{
public class GkvAbrechnungListVM : AbstractDCListMapperVM<GkvAbrechnungDC, GkvAbrechnungVM>
{
public static string PropertyName_DateTimeSpanFilter = "DateTimeSpanFilter";
public static string PropertyName_FilterResultAmountSum = "FilterResultAmountSum";
public static string PropertyName_FilterResultAmountNotPaidSum = "FilterResultAmountNotPaidSum";
private DateTimeSpan _DateTimeSpanFilter;
public GkvAbrechnungListVM(List<GkvAbrechnungDC> pDCList) : base(pDCList)
{
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountSum);
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
}
public GkvAbrechnungListVM() : this(null)
{
}
public DateTimeSpan DateTimeSpanFilter
{
get
{
return this._DateTimeSpanFilter;
}
set
{
if (this.AreDifferent(this._DateTimeSpanFilter, value))
{
this._DateTimeSpanFilter = value;
this.FirePropertyChanged(PropertyName_DateTimeSpanFilter);
}
}
}
internal void UpdateList(IList<GkvAbrechnungDC> dcList)
{
VMList.Clear();
if (dcList is object)
foreach (var dc in dcList)
{
VMList.Add(CreateVM(dc));
}
FirePropertyChanged(PropertyName_FilterResultAmountSum);
FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
}
internal void ClearList() => UpdateList(null);
}
using System.Collections.Generic;
using BeWo.ViewModel.Light;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.DataContracts.Light;
namespace BeWo.ViewModel.ListViewModel.Light
{
public class GkvAbrechnungLightListVM : AbstractDCListMapperVM<GkvAbrechnungLightDC, GkvAbrechnungLightVM>
{
public static string PropertyName_DateTimeSpanFilter = "DateTimeSpanFilter";
public static string PropertyName_FilterResultAmountSum = "FilterResultAmountSum";
public static string PropertyName_FilterResultAmountNotPaidSum = "FilterResultAmountNotPaidSum";
private DateTimeSpan _DateTimeSpanFilter;
public GkvAbrechnungLightListVM(List<GkvAbrechnungLightDC> pDCList) : base(pDCList)
{
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountSum);
this.VMList.ListChanged += (s, e) => this.FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
}
public GkvAbrechnungLightListVM() : this(null)
{
}
public DateTimeSpan DateTimeSpanFilter
{
get
{
return this._DateTimeSpanFilter;
}
set
{
if (this.AreDifferent(this._DateTimeSpanFilter, value))
{
this._DateTimeSpanFilter = value;
this.FirePropertyChanged(PropertyName_DateTimeSpanFilter);
}
}
}
internal void UpdateList(IList<GkvAbrechnungLightDC> dcList)
{
VMList.Clear();
if (dcList is object)
foreach (var dc in dcList)
{
VMList.Add(CreateVM(dc));
}
FirePropertyChanged(PropertyName_FilterResultAmountSum);
FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
}
internal void ClearList() => UpdateList(null);
}
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows;
@@ -10,6 +11,7 @@ using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
namespace BeWo.ViewModel
{
@@ -96,6 +98,17 @@ namespace BeWo.ViewModel
private GkvVerfahrensstufe? _Verfahrensstufe;
private bool _GkvAusblenden;
private AddressVM _HausanschriftDatenannahmestelle;
private AddressVM _PostfachanschriftDatenannahmestelle;
private AddressVM _GroßkundenanschriftDatenannahmestelle;
public OrganisationVM()
{
if (!BeWoApp.IsInDesignMode)
throw new NotImplementedException();
Name = "Designername";
}
public OrganisationVM(OrganisationDC pDataContract, List<ValueListEntryDC> pAllQualifications, List<ValueListEntryDC> pPossibleFunctions, List<ValueListEntryDC> pPossibleRoleInOrganisations)
: base(pDataContract, pDataContract.OrganisationOid == null)
{
@@ -403,10 +416,15 @@ namespace BeWo.ViewModel
return false;
}
return base.IsDirty || this._CostRatePeriods.IsDirty || this._VarFields.IsDirty || (_ArbeitszeitListe != null && _ArbeitszeitListe.IsDirty) || (_Feiertage != null && _Feiertage.IsDirty);
return base.IsDirty
|| this._CostRatePeriods.IsDirty
|| this._VarFields.IsDirty
|| (_ArbeitszeitListe != null && _ArbeitszeitListe.IsDirty)
|| (_Feiertage != null && _Feiertage.IsDirty)
|| (HausanschriftDatenannahmestelle?.IsDirty ?? false)
|| (PostfachanschriftDatenannahmestelle?.IsDirty ?? false)
|| (GroßkundenanschriftDatenannahmestelle?.IsDirty ?? false);
}
}
public bool IsSingleInvoicePerCustomer
@@ -677,8 +695,6 @@ namespace BeWo.ViewModel
}
}
public ValueListEntryDC Function
{
get { return this._Function; }
@@ -836,6 +852,34 @@ namespace BeWo.ViewModel
}
}
public AddressVM HausanschriftDatenannahmestelle
{
get => _HausanschriftDatenannahmestelle;
set
{
_HausanschriftDatenannahmestelle = value;
FirePropertyChanged(nameof(HausanschriftDatenannahmestelle));
}
}
public AddressVM PostfachanschriftDatenannahmestelle
{
get => _PostfachanschriftDatenannahmestelle;
set
{
_PostfachanschriftDatenannahmestelle = value;
FirePropertyChanged(nameof(PostfachanschriftDatenannahmestelle));
}
}
public AddressVM GroßkundenanschriftDatenannahmestelle
{
get => _GroßkundenanschriftDatenannahmestelle;
set
{
_GroßkundenanschriftDatenannahmestelle = value;
FirePropertyChanged(nameof(GroßkundenanschriftDatenannahmestelle));
}
}
protected void CommitContact(string pValue, ContactType pContactType)
{
List<ContactDC> lOldContactDCs;
@@ -875,7 +919,7 @@ namespace BeWo.ViewModel
{
this._VarFields = new VarFieldListVM(pDataContract.VarFields);
if (!this.IsNew)
if (!IsNew)
{
_AccountNumber = pDataContract.AccountNumber;
_BankCode = pDataContract.BankCode;
@@ -952,6 +996,18 @@ namespace BeWo.ViewModel
}
}
HausanschriftDatenannahmestelle = pDataContract.HausanschriftDatenannahmestelle is AddressDC dc
? new AddressVM(dc)
: new AddressVM();
PostfachanschriftDatenannahmestelle = pDataContract.PostfachanschriftDatenannahmestelle is AddressDC dc2
? new AddressVM(dc2)
: new AddressVM();
GroßkundenanschriftDatenannahmestelle = pDataContract.GroßkundenanschriftDatenannahmestelle is AddressDC dc3
? new AddressVM(dc3)
: new AddressVM();
VMFactory.CreateOrganisationPersonRelationListVMAsync(
pDataContract.RelatedPersons ?? (pDataContract.RelatedPersons = new List<OrganisationPersonRelationDC>()), cb => PersonRelations = cb);
@@ -1025,7 +1081,6 @@ namespace BeWo.ViewModel
CommitContact(_POBox, ContactType.business_POBox);
CommitContact(_InvoiceAddressPOBox, ContactType.private_POBox);
pDataContract.CostRatePeriods = this._CostRatePeriods.CopyToDCList(doCommit);
if (this._VarFields != null)
@@ -1043,7 +1098,39 @@ namespace BeWo.ViewModel
pDataContract.Feiertage = _Feiertage.CopyToDCList(doCommit);
}
if (HausanschriftDatenannahmestelle is object)
pDataContract.HausanschriftDatenannahmestelle = HausanschriftDatenannahmestelle.CommitToDataContract();
else
pDataContract.HausanschriftDatenannahmestelle = null;
if (PostfachanschriftDatenannahmestelle is object)
pDataContract.PostfachanschriftDatenannahmestelle = PostfachanschriftDatenannahmestelle.CommitToDataContract();
else
pDataContract.PostfachanschriftDatenannahmestelle = null;
if (GroßkundenanschriftDatenannahmestelle is object)
pDataContract.GroßkundenanschriftDatenannahmestelle = GroßkundenanschriftDatenannahmestelle.CommitToDataContract();
else
pDataContract.GroßkundenanschriftDatenannahmestelle = null;
return pDataContract;
}
public override void UpdateByDataContract(OrganisationDC pDataContract)
{
base.UpdateByDataContract(pDataContract);
}
public void UpdateByGetIKResponse(GkvAbrechnungGetIKResponseDC response)
{
BezDatenannahmestelle = response.BezDatenannahmestelle;
IKKostentrager = response.IKKostentrager;
IKDatenannahmestelle = response.IKDatenannahmestelle;
HausanschriftDatenannahmestelle.UpdateByDataContract(response.Hausanschrift);
FirePropertyChanged(nameof(HausanschriftDatenannahmestelle));
PostfachanschriftDatenannahmestelle.UpdateByDataContract(response.Postfachanschrift);
GroßkundenanschriftDatenannahmestelle.UpdateByDataContract(response.Großkundenanschrift);
}
}
}

View File

@@ -246,8 +246,6 @@ namespace BeWo.ViewModel
_Category2Services = pCategory2Services;
ChangeGoalTree(pAllGoalCategories, pAllGoals);
if (_Duration == null)
_Duration = 0;
}
#endregion
@@ -284,12 +282,12 @@ namespace BeWo.ViewModel
return RoundedDuration;
}
if (_Duration != null)
{
//if (_Duration != null)
//{
return Duration;
}
//}
return 0;
//return 0;
}
}

View File

@@ -746,7 +746,7 @@
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<UseIIS>False</UseIIS>
<AutoAssignPort>False</AutoAssignPort>
<DevelopmentServerPort>8808</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>

View File

@@ -8,7 +8,7 @@
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<UseGlobalApplicationHostFile />
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
<ProjectView>ShowAllFiles</ProjectView>
<WebStackScaffolding_ViewDialogWidth>600</WebStackScaffolding_ViewDialogWidth>
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>

View File

@@ -124,9 +124,9 @@ namespace BeWoPlanerMobil.Controllers
Log.Info($"LoginController.Index(): Login failed! Tenant = {MobileSessionFacade.Tenant}");
ViewData[LoginErrorIndex] = Request.Browser.Browser.Equals("InternetExplorer") ?
"Dieser Browser ist nicht mit dem mobilen BeWoPlaner kompatibel. Bitte benutzen Sie einen anderen Browser als den Internet Explorer." :
"Die Anmeldung ist fehlgeschlagen. Bitte überprüfen Sie Benutzername und Passwort.";
//ViewData[LoginErrorIndex] = Request.Browser.Browser.Equals("InternetExplorer") ?
// "Dieser Browser ist nicht mit dem mobilen BeWoPlaner kompatibel. Bitte benutzen Sie einen anderen Browser als den Internet Explorer." :
// "Die Anmeldung ist fehlgeschlagen. Bitte überprüfen Sie Benutzername und Passwort.";
return View("Index");
}

View File

@@ -21,6 +21,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>CS0168</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -81,12 +82,14 @@
<Compile Include="Models\Daten\Datenelementgruppe.cs" />
<Compile Include="Models\Infos\InfoParameterInvoiceItem.cs" />
<Compile Include="Models\IRowable.cs" />
<Compile Include="Models\KTDSummary.cs" />
<Compile Include="Models\Nachrichten\Nachricht.cs" />
<Compile Include="Models\Nachrichten\NachrichtKTD.cs" />
<Compile Include="Models\Nachrichten\NachrichtSLGA.cs" />
<Compile Include="Models\Nachrichten\NachrichtSLLA.cs" />
<Compile Include="Models\Schlüssels\Schlüssel.cs" />
<Compile Include="Models\Schlüssels\SchlüsselAbrechnungscode.cs" />
<Compile Include="Models\Schlüssels\SchlüsselArtDerAnschrift.cs" />
<Compile Include="Models\Schlüssels\SchlüsselArtDerGenehmigung.cs" />
<Compile Include="Models\Schlüssels\SchlüsselArtDerVerknüpfung.cs" />
<Compile Include="Models\Schlüssels\SchlüsselBVG.cs" />
@@ -107,6 +110,7 @@
<Compile Include="Models\Schlüssels\SchlüsselVerarbeitungskennzeichen.cs" />
<Compile Include="Models\Schlüssels\SchlüsselVerordnungsbesonderheiten.cs" />
<Compile Include="Models\Schlüssels\SchlüsselZuzahlung.cs" />
<Compile Include="Models\Segmente\KTD\SegmentKTDANS.cs" />
<Compile Include="Models\Segmente\KTD\SegmentKTD.cs" />
<Compile Include="Models\Segmente\KTD\SegmentKTDFKT.cs" />
<Compile Include="Models\Segmente\KTD\SegmentKTDIDK.cs" />
@@ -155,22 +159,22 @@
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<Content Include="KTDatei\AO05Q125.ke0.txt">
<Content Include="KTDatei\AO.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="KTDatei\BK05Q125.ke3.txt">
<Content Include="KTDatei\BK.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="KTDatei\BN05Q424.ke1.txt">
<Content Include="KTDatei\BN.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="KTDatei\EK05Q125.ke0.txt">
<Content Include="KTDatei\EK.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="KTDatei\IK05Q125.ke1.txt">
<Content Include="KTDatei\IK.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="KTDatei\LK05Q223.ke0.txt">
<Content Include="KTDatei\LK.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>

View File

@@ -1,5 +1,5 @@
UNA:+,? '
UNB+UNOC:3+109910000+999999999+241210:1038+00390++AO05Q125ke0'
UNB+UNOC:3+109910000+999999999+250312:1129+00391++AO05Q225ke0'
UNH+00001+KOTR:02:001:KV'
IDK+100295017+99+gkv informatik'
VDT+19970403'
@@ -334,7 +334,7 @@ VKG+09+104212607+5++28++++18'
VKG+09+104212538+5++28++++19'
NAM+01+AOK Rheinland/Hamburg'
ANS+1+40468+Düsseldorf+Wanheimer Str. 72'
ANS+2+40004+Düsseldorf+10 13 42'
ANS+2+40004+Düsseldorf+10 13 55'
ASP+01+02118791/57305++Frau Tanja Koch+TL Hebammen/Reha-Sport'
UEM+1+00+I8'
DFU+01+070++0000+2400+1+da@dta.aok.de'
@@ -1136,8 +1136,9 @@ VDT+19970403'
FKT+02'
NAM+01+AOK Rheinland/Hamburg+Rechnungsprüfung Heilmittel'
ANS+1+40468+Düsseldorf+Wanheimer Str. 72'
ANS+2+40004+Düsseldorf+10 13 38'
ASP+01+02118791/55743++Frau Jacobs-Lange+Heilmittel'
UNT+000008+00080'
UNT+000009+00080'
UNH+00081+KOTR:02:001:KV'
IDK+104212594+99+AOK Rheinland/Hamburg'
VDT+20030915'
@@ -2527,6 +2528,7 @@ VDT+19970403'
FKT+02'
NAM+01+AOK Rheinland/Hamburg+Rechnungsprüfung Fahrkosten'
ANS+1+40468+Düsseldorf+Wanheimer Str. 72'
ANS+2+40004+Düsseldorf+10 13 41'
ASP+01+02118791/56515++Frau Kromat+Fahrkosten'
UNT+000008+00206'
UNZ+000206+00390'
UNT+000009+00206'
UNZ+000206+00391'

View File

@@ -1,5 +1,5 @@
UNA:+,? '
UNB+UNOC:3+104027544+999999999+250123:1530+00239++BK05Q125KE3'
UNB+UNOC:3+104027544+999999999+250325:1445+00241++BK05Q225KE1'
UNH+00001+KOTR:02:001:KV'
IDK+100820488+99+Brandenburgische BKK'
VDT+20100101'
@@ -1170,9 +1170,6 @@ IDK+103723896+99+Heimat Krankenkasse/Ost'
VDT+20120101'
FKT+01'
VKG+01+103723896+5++++++00'
VKG+03+104027544+5++07++++66'
VKG+03+103724238+5++28++++66'
VKG+03+103724238+5++29++++66'
VKG+03+104027544+5++07++++90'
VKG+09+103724238+5++28++++90'
VKG+09+103724238+5++29++++90'
@@ -1187,15 +1184,15 @@ VKG+09+107436557+5++28++++99'
VKG+09+107436557+5++29++++99'
NAM+01+Heimat+Krankenkasse+Gesch.Ber.Neue Bundesländer'
ANS+1+33602+Bielefeld+Herforder Str. 23'
UNT+000023+00076'
UNT+000020+00076'
UNH+00077+KOTR:02:001:KV'
IDK+103724238+99+Heimat Krankenkasse'
VDT+20120101'
FKT+01'
VKG+01+103724238+5++++++00'
VKG+03+104027544+5++07++++66'
VKG+03+103724238+5++28++++66'
VKG+03+103724238+5++29++++66'
VKG+03+107436557+5++07++++66'
VKG+03+107436557+5++28++++66'
VKG+03+107436557+5++29++++66'
VKG+03+104027544+5++07++++90'
VKG+09+103724238+5++28++++90'
VKG+09+103724238+5++29++++90'
@@ -3074,14 +3071,17 @@ VKG+03+661430035+5++07++++73'
VKG+03+661430035+5++07++++74'
VKG+03+661430035+5++07++++75'
VKG+03+661430035+5++07++++76'
VKG+03+661430035+5++07++++A0'
VKG+09+106492393+5++28++++90'
VKG+09+106492393+5++29++++90'
VKG+09+106492393+5++28++++B1'
VKG+09+106492393+5++29++++B1'
VKG+09+661430035+5++28++++99'
VKG+09+661430035+5++29++++99'
NAM+01+Pronova+Betriebskrankenkasse'
ANS+1+67061+Ludwigshafen+Rheinallee 13'
ANS+2+67058+Ludwigshafen'
UNT+000035+00171'
UNT+000038+00171'
UNH+00172+KOTR:02:001:KV'
IDK+106492406+99+Pronova BKK/Ost'
VDT+20110701'
@@ -3109,14 +3109,17 @@ VKG+03+661430035+5++07++++73'
VKG+03+661430035+5++07++++74'
VKG+03+661430035+5++07++++75'
VKG+03+661430035+5++07++++76'
VKG+03+661430035+5++07++++A0'
VKG+09+106492393+5++28++++90'
VKG+09+106492393+5++29++++90'
VKG+09+106492393+5++28++++B1'
VKG+09+106492393+5++29++++B1'
VKG+09+661430035+5++28++++99'
VKG+09+661430035+5++29++++99'
NAM+01+Pronova+Betriebskrankenkasse+Gesch.Ber.Neue Bundesländer'
ANS+1+67061+Ludwigshafen+Rheinallee 13'
ANS+2+67058+Ludwigshafen'
UNT+000035+00172'
UNT+000038+00172'
UNH+00173+KOTR:02:001:KV'
IDK+106928388+99+Südzucker-BKK/Ost'
VDT+20121001'
@@ -4325,13 +4328,16 @@ VKG+09+661430035+5++29++++75'
VKG+03+661430035+5++07++++76'
VKG+09+661430035+5++28++++76'
VKG+09+661430035+5++29++++76'
VKG+03+104027544+5++07++++A0'
VKG+09+108433248+5++28++++A0'
VKG+09+108433248+5++29++++A0'
VKG+03+104027544+5++07++++B1'
VKG+09+108433248+5++28++++B1'
VKG+09+108433248+5++29++++B1'
NAM+01+SBK+Gesch.Ber.Neue Bundesländer'
ANS+1+80339+München+Heimeranstr. 31-33'
ANS+2+80017+München+201765'
UNT+000078+00245'
UNT+000081+00245'
UNH+00246+KOTR:02:001:KV'
IDK+105830232+99+BANK BKK'
VDT+19980701+20100630'
@@ -4421,13 +4427,16 @@ VKG+09+661430035+5++29++++75'
VKG+03+661430035+5++07++++76'
VKG+09+661430035+5++28++++76'
VKG+09+661430035+5++29++++76'
VKG+03+104027544+5++07++++A0'
VKG+09+108433248+5++28++++A0'
VKG+09+108433248+5++29++++A0'
VKG+03+104027544+5++07++++B1'
VKG+09+108433248+5++28++++B1'
VKG+09+108433248+5++29++++B1'
NAM+01+SBK+Hauptverwaltung'
ANS+1+80339+München+Heimeranstr. 31-33'
ANS+2+80017+München+201765'
UNT+000078+00248'
UNT+000081+00248'
UNH+00249+KOTR:02:001:KV'
IDK+108491751+99+BKK Kassana/Ost'
VDT+20110801'
@@ -6074,4 +6083,4 @@ NAM+01+Betriebskrankenkasse+futur+Gesch.Ber.Neue Bundesl
ANS+1+47803+Krefeld+Girmesgath 5'
ANS+3+70426+Stuttgart'
UNT+000009+00365'
UNZ+000365+00239'
UNZ+000365+00241'

View File

@@ -1,4 +1,4 @@
UNB+UNOC:3+109905003+999999999+240829:1525+00038++BN05Q424KE1'
UNB+UNOC:3+109905003+999999999+241209:1525+00039++BN050225KE0'
UNH+00001+KOTR:02:001:KV'
IDK+101305000+99+Knappschaft Schl.-Holst.+01701'
VDT+20120401'
@@ -41,7 +41,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -57,7 +57,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -73,7 +73,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -621,7 +621,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -637,7 +637,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -653,7 +653,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -1201,7 +1201,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -1217,7 +1217,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -1233,7 +1233,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -1781,7 +1781,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -1797,7 +1797,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -1813,7 +1813,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -2361,7 +2361,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -2377,7 +2377,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -2393,7 +2393,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -2941,7 +2941,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -2957,7 +2957,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -2973,7 +2973,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -3521,7 +3521,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -3537,7 +3537,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -3553,7 +3553,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -4101,7 +4101,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -4117,7 +4117,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -4133,7 +4133,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -4681,7 +4681,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -4697,7 +4697,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -4713,7 +4713,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -5261,7 +5261,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -5277,7 +5277,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -5293,7 +5293,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -5841,7 +5841,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -5857,7 +5857,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -5873,7 +5873,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -6421,7 +6421,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -6437,7 +6437,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -6453,7 +6453,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -7001,7 +7001,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -7017,7 +7017,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -7033,7 +7033,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -7581,7 +7581,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -7597,7 +7597,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -7613,7 +7613,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -8161,7 +8161,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -8177,7 +8177,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -8193,7 +8193,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -8741,7 +8741,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -8757,7 +8757,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -8773,7 +8773,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -9321,7 +9321,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -9337,7 +9337,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -9353,7 +9353,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -9901,7 +9901,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -9917,7 +9917,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -9933,7 +9933,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -10481,7 +10481,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -10497,7 +10497,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -10513,7 +10513,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -11061,7 +11061,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -11077,7 +11077,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -11093,7 +11093,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -11641,7 +11641,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -11657,7 +11657,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -11673,7 +11673,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -12221,7 +12221,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -12237,7 +12237,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -12253,7 +12253,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -12801,7 +12801,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -12817,7 +12817,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -12833,7 +12833,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -13381,7 +13381,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -13397,7 +13397,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -13413,7 +13413,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -13961,7 +13961,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -13977,7 +13977,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -13993,7 +13993,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -14541,7 +14541,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -14557,7 +14557,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -14573,7 +14573,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -15121,7 +15121,7 @@ VKG+09+109906914+5++21+6+02++10'
VKG+09+109906914+5++21+6+03++10'
VKG+09+109906914+5++21+6+04++10'
VKG+09+109906355+5++21+6+05++10'
VKG+09+109906914+5++21+6+06++10'
VKG+09+109906355+5++21+6+06++10'
VKG+09+109906914+5++21+6+07++10'
VKG+09+109906914+5++21+6+08++10'
VKG+09+109906914+5++21+6+09++10'
@@ -15137,7 +15137,7 @@ VKG+09+109906914+5++24+5+02++10'
VKG+09+109906914+5++24+5+03++10'
VKG+09+109906914+5++24+5+04++10'
VKG+09+109906355+5++24+5+05++10'
VKG+09+109906914+5++24+5+06++10'
VKG+09+109906355+5++24+5+06++10'
VKG+09+109906914+5++24+5+07++10'
VKG+09+109906914+5++24+5+08++10'
VKG+09+109906914+5++24+5+09++10'
@@ -15153,7 +15153,7 @@ VKG+09+109906914+5++26+6+02++10'
VKG+09+109906914+5++26+6+03++10'
VKG+09+109906914+5++26+6+04++10'
VKG+09+109906355+5++26+6+05++10'
VKG+09+109906914+5++26+6+06++10'
VKG+09+109906355+5++26+6+06++10'
VKG+09+109906914+5++26+6+07++10'
VKG+09+109906914+5++26+6+08++10'
VKG+09+109906914+5++26+6+09++10'
@@ -15731,4 +15731,4 @@ FKT+01'
NAM+01+KNAPPSCHAFT+Kranken-und Pflegeversicherung'
ANS+3+45095+Essen'
UNT+000007+00035'
UNZ+000035+00038'
UNZ+000035+00039'

View File

@@ -1,5 +1,5 @@
UNA:+,? '
UNB+UNOC:3+109979990+999999999+241219:1420+00001++EK05Q125KE0'
UNB+UNOC:3+109979990+999999999+250326:0824+00002++EK05Q225KE0'
UNH+00001+KOTR:02:001:KV'
IDK+100167999+99+DAK+78602'
VDT+19951001'
@@ -1475,6 +1475,39 @@ VKG+09+101567314+5++28++15++76'
VKG+09+101567314+5++29++15++76'
VKG+09+101567314+5++28++16++76'
VKG+09+101567314+5++29++16++76'
VKG+03+104593971+5++07++99++90'
VKG+09+101567314+5++28++01++90'
VKG+09+101567314+5++29++01++90'
VKG+09+101567314+5++28++02++90'
VKG+09+101567314+5++29++02++90'
VKG+09+101567314+5++28++03++90'
VKG+09+101567314+5++29++03++90'
VKG+09+101567314+5++28++04++90'
VKG+09+101567314+5++29++04++90'
VKG+09+101567677+5++28++05++90'
VKG+09+101567677+5++29++05++90'
VKG+09+101567677+5++28++06++90'
VKG+09+101567677+5++29++06++90'
VKG+09+101567677+5++28++07++90'
VKG+09+101567677+5++29++07++90'
VKG+09+101567677+5++28++08++90'
VKG+09+101567677+5++29++08++90'
VKG+09+101567677+5++28++09++90'
VKG+09+101567677+5++29++09++90'
VKG+09+101567677+5++28++10++90'
VKG+09+101567677+5++29++10++90'
VKG+09+101567314+5++28++11++90'
VKG+09+101567314+5++29++11++90'
VKG+09+101567314+5++28++12++90'
VKG+09+101567314+5++29++12++90'
VKG+09+101567314+5++28++13++90'
VKG+09+101567314+5++29++13++90'
VKG+09+101567314+5++28++14++90'
VKG+09+101567314+5++29++14++90'
VKG+09+101567314+5++28++15++90'
VKG+09+101567314+5++29++15++90'
VKG+09+101567314+5++28++16++90'
VKG+09+101567314+5++29++16++90'
VKG+03+661430035+5++07++99++A0'
VKG+09+661430035+5++28++99++A0'
VKG+09+661430035+5++29++99++A0'
@@ -1484,7 +1517,7 @@ ANS+2+20009+Hamburg+Postfach 10 14 44'
ASP+01+07641/9201-555++ARZ Service Center+Rechnungsprüfung und -bezahlung Abrechnungscode 4x, 68'
ASP+02+0341/25920-37++DAVASO GmbH+Rechnungsprüfung und -bezahlung Abrechnungscode 1x, 3x, 61, 62, 65, Ax'
ASP+03+0351/32040-302++GFS+Abrechnungsprüfung für Abrechnungscode 2x, 50, 66, 71 - 74'
UNT+000123+00126'
UNT+000156+00126'
UNH+00127+KOTR:02:001:KV'
IDK+105836717+99+DAK'
VDT+20171215'
@@ -2613,4 +2646,4 @@ DFU+02+016+++++ftam.syntela.de?:9000'
UEM+5+00+I8'
UEM+6+00+I8'
UNT+000013+00261'
UNZ+000261+00001'
UNZ+000261+00002'

View File

@@ -1,5 +1,5 @@
UNA:+,? '
UNB+UNOC:3+109900019+999999999+241219:1500+00032++IK05Q125KE1'
UNB+UNOC:3+109900019+999999999+250220:1000+00033++IK05Q225KE0'
UNH+00001+KOTR:02:001:KV'
IDK+100202527+99+IKK Nord (vorm. IKK MV)+78301'
VDT+19950801'
@@ -2300,4 +2300,4 @@ NAM+01+IKK Classic+c/o DAVASO GmbH'
ANS+1+04316+Leipzig+Sommerfelder Str. 120'
ANS+2+04304+Leipzig+500761'
UNT+000008+00227'
UNZ+000227+00032'
UNZ+000227+00033'

View File

@@ -1,4 +1,6 @@
using BS.Shared.Exceptions;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Invoicing.GkvAbrechnung;
using BS.Shared.Exceptions;
using Dakota.Models;
using Dakota.Models.Nachrichten;
using Dakota.Models.Segmente.KTD;
@@ -12,173 +14,221 @@ using System.Threading.Tasks;
namespace Dakota.Logic
{
public class DakotaKTDReader
{
private static readonly string[] accept = new string[] { "UNH", "IDK", "FKT", "VKG", "UNT"};
public class DakotaKTDReader
{
private static readonly string[] accept = new string[] { "UNH", "IDK", "FKT", "VKG", "UNT", "ANS" };
internal Dictionary<string, Dictionary<string, NachrichtKTD>> FileDictionary { get; set; }
= new Dictionary<string, Dictionary<string, NachrichtKTD>>();
internal Dictionary<string, Dictionary<string, NachrichtKTD>> FileDictionary { get; set; }
= new Dictionary<string, Dictionary<string, NachrichtKTD>>();
public DakotaKTDReader(string ktd_folder_path)
{
var dir = new DirectoryInfo(ktd_folder_path);
public DakotaKTDReader(string ktd_folder_path)
{
var dir = new DirectoryInfo(ktd_folder_path);
var files = dir.GetFiles();
var files = dir.GetFiles();
foreach (var file in files)
{
var file_lines = File.ReadAllLines(file.FullName);
foreach (var file in files)
{
var file_lines = File.ReadAllLines(file.FullName);
foo(file.Name, file_lines);
}
}
foo(file.Name, file_lines);
}
}
public int GetFileCount() => FileDictionary.Count();
public int GetAllFileEntryCount() => FileDictionary.Sum(x => x.Value.Count);
public int GetFileCount() => FileDictionary.Count();
public int GetAllFileEntryCount() => FileDictionary.Sum(x => x.Value.Count);
/// <summary>
///
/// </summary>
/// <param name="ikkrankenkasse"></param>
/// <param name="abrechnungscode"></param>
/// <param name="tarifkennzeichen"></param>
/// <returns>Item1:Datenannahmestelle -
/// Item2:Kostenträger -
/// Item3:Krankenkasse</returns>
public Tuple<string, string, string, string> Resolve(string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen)
{
foreach (var kv in FileDictionary)
{
var dict = kv.Value;
/// <summary>
///
/// </summary>
/// <param name="ikkrankenkasse"></param>
/// <param name="abrechnungscode"></param>
/// <param name="tarifkennzeichen"></param>
/// <returns>Item1:Datenannahmestelle -
/// Item2:Kostenträger -
/// Item3:Krankenkasse</returns>
public GkvKostentragerdateiSummary Resolve(string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen)
{
foreach (var kv in FileDictionary)
{
var dict = kv.Value;
var search = GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen);
var search = GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen);
if (search is object)
if (search is object)
{
var datenannahmestelle = search.Item1;
var datenannahmestelle = search.Item1;
var nachricht = dict[datenannahmestelle];
var bez = dict[datenannahmestelle].SegmentIDK.Kurzbezeichnung;
var bez = nachricht.SegmentIDK.Kurzbezeichnung;
return new Tuple<string, string, string, string>(datenannahmestelle, search.Item2, search.Item3, bez);
}
}
var sum = new GkvKostentragerdateiSummary()
{
BezDatenannahmestelle = bez,
IKDatenannahmestelle = datenannahmestelle,
IKKostentrager = search.Item2,
IKKrankenkasse = search.Item3
};
return null;
}
foreach (var seg_ans in nachricht.SemgenteANS)
{
var address = GetAddress(seg_ans);
private Tuple<string, string, string> GetIKNummern(Dictionary<string, NachrichtKTD> dict, string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen, string kostentrager = null)
{
if (kostentrager is null)
kostentrager = ikkrankenkasse;
if (seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Großkundenanschrift)
{
sum.Großkundenanschrift = address;
}
else if(seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Postfachanschrift)
{
sum.Postfachanschrift = address;
}
else if(seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Hausanschrift)
{
sum.Hausanschrift = address;
}
else
{
throw new NotImplementedException();
}
}
var search = dict.SingleOrDefault(kv => kv.Key == kostentrager).Value;
return sum;
}
}
// Hat keinen Verweis auf eine KK gefunden
if (search is null)
return null;
return null;
}
var verweis = search.SegmentVKG.FirstOrDefault(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.Kostentrager);
private Tuple<string, string, string> GetIKNummern(Dictionary<string, NachrichtKTD> dict, string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen, string kostentrager = null)
{
if (kostentrager is null)
kostentrager = ikkrankenkasse;
// Hat Verweis auf weiteren Kostenträger gefunden
if (verweis is object && verweis.IKVerknüpfungspartners != kostentrager)
return GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen, verweis.IKVerknüpfungspartners);
var search = dict.SingleOrDefault(kv => kv.Key == kostentrager).Value;
var datenannahmestellen = search.SegmentVKG
.Where(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.DatenannahmestelleMitEntschlusselungsbefugnis)
.ToList();
// Hat keinen Verweis auf eine KK gefunden
if (search is null)
return null;
// Hat keinen Verweis auf Kostenträger oder Datenannahmestelle gefunden
if (datenannahmestellen is null || !datenannahmestellen.Any())
return null;
var verweis = search.SegmentVKG.FirstOrDefault(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.Kostentrager);
if (datenannahmestellen.Count() == 1)
return GetIKNummern(datenannahmestellen.First(), kostentrager, ikkrankenkasse);
// Hat Verweis auf weiteren Kostenträger gefunden
if (verweis is object && verweis.IKVerknüpfungspartners != kostentrager)
return GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen, verweis.IKVerknüpfungspartners);
// Abrechnungscode "69" <=> Sozio
var datenannahmestellen_2 = datenannahmestellen
.Where(x => x.Abrechnungscode == abrechnungscode)
.ToList();
var datenannahmestellen = search.SegmentVKG
.Where(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.DatenannahmestelleMitEntschlusselungsbefugnis)
.ToList();
if (datenannahmestellen_2.Count() == 1)
return GetIKNummern(datenannahmestellen_2.First(), kostentrager, ikkrankenkasse);
// Hat keinen Verweis auf Kostenträger oder Datenannahmestelle gefunden
if (datenannahmestellen is null || !datenannahmestellen.Any())
return null;
// Tarifkennzeichen
var datenannahmestellen_3 = datenannahmestellen_2
.Where(x => x.Tarifkennzeichen == tarifkennzeichen)
.ToList();
if (datenannahmestellen.Count() == 1)
return GetIKNummern(datenannahmestellen.First(), kostentrager, ikkrankenkasse);
if (datenannahmestellen_3.Count() == 1)
return GetIKNummern(datenannahmestellen_3.First(), kostentrager, ikkrankenkasse);
// Abrechnungscode "69" <=> Sozio
var datenannahmestellen_2 = datenannahmestellen
.Where(x => x.Abrechnungscode == abrechnungscode)
.ToList();
// ArtDesÜbermittlungsmediums "1" <=> Datenfernübertragung
var filter_list = datenannahmestellen_3;
if (datenannahmestellen_2.Count() == 1)
return GetIKNummern(datenannahmestellen_2.First(), kostentrager, ikkrankenkasse);
if(!filter_list.Any())
filter_list = datenannahmestellen_2;
// Tarifkennzeichen
var datenannahmestellen_3 = datenannahmestellen_2
.Where(x => x.Tarifkennzeichen == tarifkennzeichen)
.ToList();
if (!filter_list.Any())
filter_list = datenannahmestellen;
if (datenannahmestellen_3.Count() == 1)
return GetIKNummern(datenannahmestellen_3.First(), kostentrager, ikkrankenkasse);
filter_list = filter_list
.Where(x => x.ArtDesÜbermittlungsmediums == "1")
.ToList();
// ArtDesÜbermittlungsmediums "1" <=> Datenfernübertragung
var filter_list = datenannahmestellen_3;
if (filter_list.Count() == 1)
return GetIKNummern(filter_list.First(), kostentrager, ikkrankenkasse);
if (!filter_list.Any())
filter_list = datenannahmestellen_2;
return null;
}
if (!filter_list.Any())
filter_list = datenannahmestellen;
private Tuple<string, string, string> GetIKNummern(SegmentKTDVKG vkg, string kostentrager, string ikkrankenkasse)
{
return new Tuple<string, string, string>(vkg.IKVerknüpfungspartners, kostentrager, ikkrankenkasse);
}
filter_list = filter_list
.Where(x => x.ArtDesÜbermittlungsmediums == "1")
.ToList();
private void foo(string filename, string[] lines)
{
var length = lines.Length;
var dict = new Dictionary<string, NachrichtKTD>();
if (filter_list.Count() == 1)
return GetIKNummern(filter_list.First(), kostentrager, ikkrankenkasse);
FileDictionary.Add(filename, dict);
return null;
}
Queue<string> queue = new Queue<string>();
int first_line = 0;
for (int i = 0; i < length; i++)
{
var line = lines[i];
private Tuple<string, string, string> GetIKNummern(SegmentKTDVKG vkg, string kostentrager, string ikkrankenkasse)
{
return new Tuple<string, string, string>(vkg.IKVerknüpfungspartners, kostentrager, ikkrankenkasse);
}
var type = GetType(line);
private AddressDC GetAddress(SegmentKTDANS segment)
{
var address = new AddressDC();
if (type is null)
continue;
address.Street = clear(segment.StraßeHausnummerOderPostfach);
address.Town = clear(segment.Ort);
address.PostalCode = clear(segment.Postleitzahl);
if (type == "UNH")
{
first_line = i;
}
else if (type == "UNT")
{
var nachricht = NachrichtKTD.Parse(queue.ToArray(), filename, first_line);
return address;
}
if (dict.ContainsKey(nachricht.IKNummer))
throw new Exception($"Beinhaltet Key bereits: {nachricht.IKNummer} in {filename} - l {first_line}");
private string clear(string str)
{
string asciiOnly = new string(str.Where(c => c <= 127).ToArray());
return asciiOnly;
}
dict.Add(nachricht.IKNummer, nachricht);
private void foo(string filename, string[] lines)
{
var length = lines.Length;
var dict = new Dictionary<string, NachrichtKTD>();
queue.Clear();
}
else
{
queue.Enqueue(line);
}
}
}
FileDictionary.Add(filename, dict);
private string GetType(string line)
{
var type = line.Substring(0, 3);
Queue<string> queue = new Queue<string>();
int first_line = 0;
for (int i = 0; i < length; i++)
{
var line = lines[i];
return accept.Contains(type) ? type : null;
}
}
var type = GetType(line);
if (type is null)
continue;
if (type == "UNH")
{
first_line = i;
}
else if (type == "UNT")
{
var nachricht = NachrichtKTD.Parse(queue.ToArray(), filename, first_line);
if (dict.ContainsKey(nachricht.IKNummer))
throw new Exception($"Beinhaltet Key bereits: {nachricht.IKNummer} in {filename} - l {first_line}");
dict.Add(nachricht.IKNummer, nachricht);
queue.Clear();
}
else
{
queue.Enqueue(line);
}
}
}
private string GetType(string line)
{
var type = line.Substring(0, 3);
return accept.Contains(type) ? type : null;
}
}
}

View File

@@ -108,12 +108,13 @@ namespace Dakota.Logic
if (create4month < new DateTime(2024, 7, 1))
return 19;
return 20;
if (create4month < new DateTime(2026, 1, 1))
return 20;
//if (create4month < new DateTime(2025, 1, 1))
// return 20;
if (create4month < new DateTime(2027, 1, 1))
return 21;
//throw new NotImplementedException("Keine Unterstützung von Version 21 oder aufwärts");
throw new NotImplementedException("Keine Unterstützung von Version 22 oder aufwärts");
}
}
}

View File

@@ -0,0 +1,16 @@
using Dakota.Models.Nachrichten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models
{
internal class KTDSummary
{
public NachrichtKTD Krankenkasse { get; set; }
public NachrichtKTD Kostenträger { get; set; }
public NachrichtKTD Datenannahmestelle { get; set; }
}
}

View File

@@ -1,42 +1,40 @@
using Dakota.Models.Segmente;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dakota.Models.Segmente;
namespace Dakota.Models.Nachrichten
{
internal abstract class Nachricht : IRowable
{
public abstract List<Segment> GetAllSegments();
internal abstract class Nachricht : IRowable
{
public abstract List<Segment> GetAllSegments();
public List<Segment> GetSegments()
{
return GetAllSegments().Where(x => !x.ShouldSkip()).ToList();
}
public List<Segment> GetSegments()
{
return GetAllSegments().Where(x => !x.ShouldSkip()).ToList();
}
public int GetSegmentLength()
{
return GetSegments().Count + 2;
}
public int GetSegmentLength()
{
return GetSegments().Count + 2;
}
public string GetRows()
{
var segs = GetSegments();
var res = new List<string>();
public string GetRows()
{
var segs = GetSegments();
var res = new List<string>();
if (segs is null || !segs.Any())
return string.Empty;
if (segs is null || !segs.Any())
return string.Empty;
foreach (var seg in segs)
{
res.Add(seg.GetRow());
}
foreach (var seg in segs)
{
res.Add(seg.GetRow());
}
var str = string.Join(DakotaConfig.NewLine, res);
var str = string.Join(DakotaConfig.NewLine, res);
return str;
}
}
return str;
}
}
}

View File

@@ -1,73 +1,81 @@
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.KTD;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.KTD;
namespace Dakota.Models.Nachrichten
{
internal class NachrichtKTD : Nachricht
{
public string FileName { get; set; }
public int FirstLine { get; set; }
internal class NachrichtKTD : Nachricht
{
public string FileName { get; set; }
public int FirstLine { get; set; }
public SegmentKTDIDK SegmentIDK { get; set; }
public SegmentKTDFKT SegmentFKT { get; set; }
public List<SegmentKTDVKG> SegmentVKG { get; set; }
public SegmentKTDIDK SegmentIDK { get; set; }
public SegmentKTDFKT SegmentFKT { get; set; }
public List<SegmentKTDVKG> SegmentVKG { get; set; } = new List<SegmentKTDVKG>();
public List<SegmentKTDANS> SemgenteANS { get; set; } = new List<SegmentKTDANS>();
public NachrichtKTD()
{
SegmentVKG = new List<SegmentKTDVKG>();
}
public string IKNummer
{
get { return SegmentIDK.Institutionskennzeichen; }
}
public NachrichtKTD()
{
}
public string IKNummer
{
get { return SegmentIDK.Institutionskennzeichen; }
}
public override List<Segment> GetAllSegments()
{
throw new NotImplementedException();
}
public override List<Segment> GetAllSegments()
{
throw new NotImplementedException();
}
public static bool TryParse(string[] rows, string filename, int firstline, out NachrichtKTD nachricht)
{
nachricht = null;
public static bool TryParse(string[] rows, string filename, int firstline, out NachrichtKTD nachricht)
{
nachricht = null;
try
{
nachricht = Parse(rows, filename, firstline);
try
{
nachricht = Parse(rows, filename, firstline);
return true;
}
catch(Exception)
{
}
return true;
}
catch (Exception)
{
return false;
}
public static NachrichtKTD Parse(string[] rows, string filename, int firstline)
{
var nachricht = new NachrichtKTD();
}
nachricht.SegmentIDK = SegmentKTDIDK.Parse(rows[0]);
nachricht.SegmentFKT = SegmentKTDFKT.Parse(rows[1]);
return false;
}
public static NachrichtKTD Parse(string[] rows, string filename, int firstline)
{
var nachricht = new NachrichtKTD();
var length = rows.Length;
nachricht.SegmentIDK = SegmentKTDIDK.Parse(rows[0]);
nachricht.SegmentFKT = SegmentKTDFKT.Parse(rows[1]);
for (int i = 2; i < length; i++)
{
nachricht.SegmentVKG.Add(SegmentKTDVKG.Parse(rows[i]));
}
var length = rows.Length;
nachricht.FileName = filename;
nachricht.FirstLine = firstline;
for (int i = 2; i < length; i++)
{
var row = rows[i];
return nachricht;
}
}
if (row.StartsWith("VKG"))
{
nachricht.SegmentVKG.Add(SegmentKTDVKG.Parse(row));
}
else if (row.StartsWith("ANS"))
{
nachricht.SemgenteANS.Add(SegmentKTDANS.Parse(row));
}
}
nachricht.FileName = filename;
nachricht.FirstLine = firstline;
return nachricht;
}
}
}

View File

@@ -1,99 +1,97 @@
using Dakota.Models.Infos;
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLGA;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dakota.Models.Infos;
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLGA;
namespace Dakota.Models.Nachrichten
{
/// <summary>
/// Gesamtaufstellung der
/// Abrechnung(Rechnung)
/// </summary>
internal class NachrichtSLGA : Nachricht
{
/// <summary>
/// Das Segment enthält Informationen über die zu verarbeitende Rechnung, den Rechnungssteller
/// (Leistungserbringer oder Abrechnungsstelle) und das IK der Krankenkasse von
/// der Krankenversichertenkarte bzw.von der ärztlichen Verordnung
/// </summary>
public SegmentSLGAFKT SegmentFKT { get; set; }
/// <summary>
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum.
/// </summary>
public SegmentSLGAREC SegmentREC { get; set; }
/// <summary>
/// Das Segment enthält Informationen zur Umsatzsteuer.
/// </summary>
public SegmentSLGAUST SegmentUST { get; set; }
/// <summary>
/// Das Segment enthält Informationen, ob Skonto gewährt wird
/// (Skonto in Prozent, Zahlungsziel).
/// </summary>
public SegmentSLGASKO SegmentSKO { get; set; }
/// <summary>
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
/// </summary>
public SegmentSLGAGES SegmentGES00 { get; set; }
/// <summary>
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
/// </summary>
public List<SegmentSLGAGES> ListSegmentGES { get; set; }
/// <summary>
/// Das Segment enthält den Namen und die Firmenbezeichnung des Leistungserbringers
/// </summary>
public SegmentSLGANAM SegmentNAM { get; set; }
/// <summary>
/// Gesamtaufstellung der
/// Abrechnung(Rechnung)
/// </summary>
internal class NachrichtSLGA : Nachricht
{
/// <summary>
/// Das Segment enthält Informationen über die zu verarbeitende Rechnung, den Rechnungssteller
/// (Leistungserbringer oder Abrechnungsstelle) und das IK der Krankenkasse von
/// der Krankenversichertenkarte bzw.von der ärztlichen Verordnung
/// </summary>
public SegmentSLGAFKT SegmentFKT { get; set; }
/// <summary>
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum.
/// </summary>
public SegmentSLGAREC SegmentREC { get; set; }
/// <summary>
/// Das Segment enthält Informationen zur Umsatzsteuer.
/// </summary>
public SegmentSLGAUST SegmentUST { get; set; }
/// <summary>
/// Das Segment enthält Informationen, ob Skonto gewährt wird
/// (Skonto in Prozent, Zahlungsziel).
/// </summary>
public SegmentSLGASKO SegmentSKO { get; set; }
/// <summary>
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
/// </summary>
public SegmentSLGAGES SegmentGES00 { get; set; }
/// <summary>
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
/// </summary>
public List<SegmentSLGAGES> ListSegmentGES { get; set; }
/// <summary>
/// Das Segment enthält den Namen und die Firmenbezeichnung des Leistungserbringers
/// </summary>
public SegmentSLGANAM SegmentNAM { get; set; }
public NachrichtSLGA()
{
SegmentFKT = new SegmentSLGAFKT();
SegmentREC = new SegmentSLGAREC();
SegmentUST = new SegmentSLGAUST();
SegmentSKO = new SegmentSLGASKO();
SegmentGES00 = new SegmentSLGAGES();
ListSegmentGES = new List<SegmentSLGAGES>();
SegmentNAM = new SegmentSLGANAM();
}
public NachrichtSLGA()
{
SegmentFKT = new SegmentSLGAFKT();
SegmentREC = new SegmentSLGAREC();
SegmentUST = new SegmentSLGAUST();
SegmentSKO = new SegmentSLGASKO();
SegmentGES00 = new SegmentSLGAGES();
ListSegmentGES = new List<SegmentSLGAGES>();
SegmentNAM = new SegmentSLGANAM();
}
public override List<Segment> GetAllSegments()
{
var res = new List<Segment>();
public override List<Segment> GetAllSegments()
{
var res = new List<Segment>();
res.Add(SegmentFKT);
res.Add(SegmentREC);
res.Add(SegmentUST);
res.Add(SegmentSKO);
res.Add(SegmentGES00);
res.AddRange(ListSegmentGES);
res.Add(SegmentNAM);
res.Add(SegmentFKT);
res.Add(SegmentREC);
res.Add(SegmentUST);
res.Add(SegmentSKO);
res.Add(SegmentGES00);
res.AddRange(ListSegmentGES);
res.Add(SegmentNAM);
return res;
}
return res;
}
public void Apply(InfoNachrichtSLGA info, bool isSammelrechnung)
{
SegmentFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen);
if(isSammelrechnung)
SegmentFKT.Sammelrechnung.SetValue("J");
public void Apply(InfoNachrichtSLGA info, bool isSammelrechnung)
{
SegmentFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen);
SegmentFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
SegmentFKT.IKKostenträger.SetValue(info.IKKostentrager);
SegmentFKT.IKVersichertenKarte.SetValue(info.IKKrankenkasse);
SegmentFKT.IKAbsender.SetValue(info.IKAbsender);
if (isSammelrechnung)
SegmentFKT.Sammelrechnung.SetValue("J");
SegmentREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
SegmentREC.EinzelRechnungsnummer.SetValue("0");
SegmentREC.Rechnungsdatum.SetValue(info.Rechnungsdatum);
SegmentREC.Rechnungsart.SetValue(info.Rechnungsart);
SegmentFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
SegmentFKT.IKKostenträger.SetValue(info.IKKostentrager);
SegmentFKT.IKVersichertenKarte.SetValue(info.IKKrankenkasse);
SegmentFKT.IKAbsender.SetValue(info.IKAbsender);
SegmentNAM.Name1.SetValue(info.Name1);
SegmentNAM.Name2.SetValue(info.Name2);
SegmentNAM.Name3.SetValue(info.Name3);
SegmentNAM.Name4.SetValue(info.Name4);
}
}
SegmentREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
SegmentREC.EinzelRechnungsnummer.SetValue("0");
SegmentREC.Rechnungsdatum.SetValue(info.Rechnungsdatum);
SegmentREC.Rechnungsart.SetValue(info.Rechnungsart);
SegmentNAM.Name1.SetValue(info.Name1);
SegmentNAM.Name2.SetValue(info.Name2);
SegmentNAM.Name3.SetValue(info.Name3);
SegmentNAM.Name4.SetValue(info.Name4);
}
}
}

View File

@@ -1,82 +1,80 @@
using Dakota.Models.Blocke;
using System;
using System.Collections.Generic;
using System.Linq;
using Dakota.Models.Blocke;
using Dakota.Models.Infos;
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLLA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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
/// </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; }
public NachrichtSLLA()
{
SegmentSLLAFKT = new SegmentSLLAFKT();
SegmentSLLAREC = new SegmentSLLAREC();
public NachrichtSLLA()
{
SegmentSLLAFKT = new SegmentSLLAFKT();
SegmentSLLAREC = new SegmentSLLAREC();
BlockKlienten = new List<BlockKlient>();
}
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());
}
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 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);
foreach (var infofall in info.Abrechnungsfalle.OrderBy(x => x.InfosAbrechnungsposition.Min(y => y.DatumDerLeistungserbringung)))
{
var block = new BlockKlient();
foreach (var infofall in info.Abrechnungsfalle.OrderBy(x => x.InfosAbrechnungsposition.Min(y => y.DatumDerLeistungserbringung)))
{
var block = new BlockKlient();
block.Apply(infofall);
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);
}
}
}

View File

@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselArtDerAnschrift : Schlüssel
{
public SchlüsselArtDerAnschrift(string val) : base(val) { }
public static SchlüsselArtDerAnschrift Hausanschrift => new SchlüsselArtDerAnschrift("1");
public static SchlüsselArtDerAnschrift Postfachanschrift => new SchlüsselArtDerAnschrift("2");
public static SchlüsselArtDerAnschrift Großkundenanschrift => new SchlüsselArtDerAnschrift("3");
public static SchlüsselArtDerAnschrift Parse(string str)
{
var list = new SchlüsselArtDerAnschrift[] {
Hausanschrift ,
Postfachanschrift ,
Großkundenanschrift};
var schlüssel = GetSchlüssel(list, str);
return schlüssel;
}
}
}

View File

@@ -0,0 +1,37 @@
using Dakota.Models.Schlüssels;
using System;
using System.Diagnostics;
namespace Dakota.Models.Segmente.KTD
{
[DebuggerDisplay("ANS+{Verarbeitungskennzeichen.Value}'")]
internal class SegmentKTDANS : SegmentKTD
{
public SchlüsselArtDerAnschrift ArtDerAnschrift { get; set; }
public string Postleitzahl { get; set; }
public string Ort { get; set; }
public string StraßeHausnummerOderPostfach { get; set; }
public static SegmentKTDANS Parse(string row)
{
var segment = new SegmentKTDANS();
var split = row.Trim(Segmentendezeichen).Split(Trennzeichen);
segment.ArtDerAnschrift = SchlüsselArtDerAnschrift.Parse(split[1]);
segment.Postleitzahl = split[2];
if (split.Length <= 3)
return segment;
segment.Ort = split[3];
if (split.Length <= 4)
return segment;
segment.StraßeHausnummerOderPostfach = split[4];
return segment;
}
}
}

View File

@@ -36,7 +36,6 @@ namespace Dakota.Models.Segmente
}
public string GetRow()
{
Dateneinheit lastzero = null;
var body = GetBody();
var bodyRev = body.ToList();
bodyRev.Reverse();

View File

@@ -1,55 +1,27 @@
namespace BeWo.Data.Access
using System;
namespace BeWo.Data.Access
{
public static class DAOFactory
{
private static AdoDAO _AdoDAO;
/// https://csharpindepth.com/articles/singleton
/// -> Sixth version - using .NET 4's Lazy<T> type
///
/// Kleiner Fix bzgl Threadsafe
private static readonly Lazy<AdoDAO> _AdoDAO = new Lazy<AdoDAO>(() => new AdoDAO());
private static readonly Lazy<GenericDAO> _GenericDAO = new Lazy<GenericDAO>(() => new GenericDAO());
private static readonly Lazy<FinanceDAO> _FinanceDAO = new Lazy<FinanceDAO>(() => new FinanceDAO());
private static readonly Lazy<OrganisationDAO> _OrganisationDAO = new Lazy<OrganisationDAO>(() => new OrganisationDAO());
private static readonly Lazy<ScriptDAO> _ScriptDAO = new Lazy<ScriptDAO>(() => new ScriptDAO());
private static readonly Lazy<SearchDAO> _SearchDAO = new Lazy<SearchDAO>(() => new SearchDAO());
private static readonly Lazy<UserDAO> _UserDAO = new Lazy<UserDAO>(() => new UserDAO());
private static GenericDAO _GenericDAO;
private static ScriptDAO _ScriptDAO;
private static SearchDAO _SearchDAO;
private static UserDAO _UserDAO;
public static AdoDAO AdoDAO
{
get
{
return _AdoDAO ?? (_AdoDAO = new AdoDAO());
}
}
public static GenericDAO GenericDAO
{
get
{
return _GenericDAO ?? (_GenericDAO = new GenericDAO());
}
}
public static ScriptDAO ScriptDAO
{
get
{
return _ScriptDAO ?? (_ScriptDAO = new ScriptDAO());
}
}
public static SearchDAO SearchDAO
{
get
{
return _SearchDAO ?? (_SearchDAO = new SearchDAO());
}
}
public static UserDAO UserDAO
{
get
{
return _UserDAO ?? (_UserDAO = new UserDAO());
}
}
public static AdoDAO AdoDAO => _AdoDAO.Value;
public static GenericDAO GenericDAO => _GenericDAO.Value;
public static FinanceDAO FinanceDAO => _FinanceDAO.Value;
public static OrganisationDAO OrganisationDAO => _OrganisationDAO.Value;
public static ScriptDAO ScriptDAO => _ScriptDAO.Value;
public static SearchDAO SearchDAO => _SearchDAO.Value;
public static UserDAO UserDAO => _UserDAO.Value;
}
}

101
Data/Access/FinanceDAO.cs Normal file
View File

@@ -0,0 +1,101 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.DataContracts;
using NHibernate.Criterion;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BS.Shared.Interface;
using BeWo.Data.Entities.Light;
using BS.Shared;
namespace BeWo.Data.Access
{
/// <summary>
///
/// Ggf Gkv in eigene DAO auslagern
///
/// </summary>
public class FinanceDAO : AbstractBaseDAO
{
public bool HaveIKDatenannahmestelleChanged(IGkvAbrechnung gkvAbrechnung, string ikdatenannahmestelle)
{
if (gkvAbrechnung.TransferProtokolle is IEnumerable<IGkvTransferProtokoll> list && list.Any())
{
var last_prot_w_daten = list.Select(x => x.IKDatenannahmestelle).Where((x) => !string.IsNullOrEmpty(x)).LastOrDefault();
if (!string.IsNullOrEmpty(last_prot_w_daten) && last_prot_w_daten != ikdatenannahmestelle)
{
return true;
}
}
return false;
}
public IEnumerable<GkvAbrechnungLight> GetGkvAbrechnungen(DateTime? startDate, DateTime? endDate, bool useInvoiceDate = true)
{
if (endDate.HasValue)
endDate = endDate.Value.Date.AddDays(1).AddMilliseconds(-1);
var lCriteria = CreateCriteriaIsActive<GkvAbrechnungLight>();
if (useInvoiceDate)
{
if (startDate.HasValue)
lCriteria.Add(Restrictions.Ge(nameof(GkvAbrechnungLight.ErstelltAm), startDate));
if (endDate.HasValue)
lCriteria.Add(Restrictions.Le(nameof(GkvAbrechnungLight.ErstelltAm), endDate));
}
else
{
if (startDate.HasValue)
lCriteria.Add(Restrictions.Ge(nameof(GkvAbrechnungLight.AbrechnungsZeitraumEnde), startDate));
if (endDate.HasValue)
lCriteria.Add(Restrictions.Le(nameof(GkvAbrechnungLight.AbrechnungsZeitraumStart), endDate));
}
return lCriteria.List<GkvAbrechnungLight>();
}
public IEnumerable<GkvTransferProtokoll> GetGkvTransferProtokollByDateRange(DateTime? start, DateTime? end)
{
var lCriteria = CreateCriteria<GkvTransferProtokoll>();
if (start.HasValue)
lCriteria.Add(Restrictions.Ge(nameof(GkvTransferProtokoll.ErstelltAm), start));
if (end.HasValue)
lCriteria.Add(Restrictions.Le(nameof(GkvTransferProtokoll.ErstelltAm), end));
return lCriteria.List<GkvTransferProtokoll>();
}
public long GetGkvParentByProtokollOid(long oid)
{
return oid;
}
public string GetGkvRawData(long oid, GkvRawDataType gkvRawData)
{
var criteria = CreateCriteria<GkvTransferProtokoll>()
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.Oid == oid));
if (gkvRawData == GkvRawDataType.Auftragsdatei)
{
criteria = criteria.SetProjection(Projections.Property(nameof(GkvTransferProtokoll.Auftragsdatei)));
}
else if (gkvRawData == GkvRawDataType.Nutzdatendatei)
{
criteria = criteria.SetProjection(Projections.Property(nameof(GkvTransferProtokoll.Nutzdatendatei)));
}
else
{
throw new ArgumentOutOfRangeException(nameof(gkvRawData), $"GkvRawDataType \'{gkvRawData}\' unbekannt.");
}
var t = criteria.List<string>().SingleOrDefault();
return t;
}
}
}

View File

@@ -3,9 +3,10 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using BeWo.Data.Entities;
using BeWo.Data.Entities.Light;
using BS.Shared;
using BS.Shared.Extensions;
using BS.Shared.DataContracts.Light;
using NHibernate;
using NHibernate.Criterion;
using NHibernate.Proxy;
@@ -165,7 +166,10 @@ namespace BeWo.Data.Access
Debug.WriteLine($"++++>INSERT von {entityType.FullName}");
try
if (pEntity is LightEntity)
throw new InvalidOperationException("Cannot insert LightEntity, only update! str:" + pEntity.ToString());
try
{
var session = Session;
@@ -211,7 +215,10 @@ namespace BeWo.Data.Access
{
foreach (BeWoEntityBase iEntity in pEntitys)
{
this.Session.Save(iEntity);
if (iEntity is LightEntity)
throw new InvalidOperationException("Cannot insert LightEntity, only update! str:" + iEntity.ToString());
this.Session.Save(iEntity);
}
lTransaction.Commit();

View File

@@ -0,0 +1,49 @@
using BeWo.Data.Entities;
using BeWo.Data.Entities.Light;
using BS.Shared.Core;
using NHibernate.Criterion;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Data.Access
{
public class OrganisationDAO : AbstractBaseDAO
{
public IList<Organisation> GetAllOrganisation2PersonRelations(long personOid)
{
var c = CreateCriteriaIsActive<Person>()
.Add(Restrictions.Eq(BeWoEntityBase.PropertyName_Oid, personOid)).UniqueResult<Person>().Organisation2Persons.Select(s => s.Organisation).ToList();
return c;
}
public List<Organisation> GetAllOrganisationByIKKrankenkasse(string ikkrankenkasse)
{
var criteria = CreateCriteria<Organisation>()
.Add(Restrictions.Where<Organisation>(x => x.IKKrankenkasse == ikkrankenkasse));
return criteria.List<Organisation>().ToList();
}
public List<Organisation> GetAllActiveOrganisationByIKKrankenkasse(string ikkrankenkasse)
{
var criteria = CreateCriteria<Organisation>()
.Add(Restrictions.Where<Organisation>(x => x.IsActive == BS.Shared.ActivationTypeId.Active && x.IKKrankenkasse == ikkrankenkasse));
return criteria.List<Organisation>().ToList();
}
public virtual IEnumerable<Organisation> FindOrganisation(string pName, bool pOnlyCostBearer)
{
var lCriteria = CreateCriteria<Organisation>()
.Add(Restrictions.Like(Organisation.PropertyName_Name, pName, MatchMode.Anywhere));
if (pOnlyCostBearer)
lCriteria.Add(Restrictions.IsNotNull(Organisation.PropertyName_CostBearer));
return lCriteria.List<Organisation>();
}
}
}

View File

@@ -47,8 +47,7 @@
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
<NoWarn>
</NoWarn>
<NoWarn>CS0659, CS0162, CS0168, CS0169</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -212,6 +211,8 @@
<Compile Include="Access\AdoDAO.cs" />
<Compile Include="Access\DAOFactory.cs" />
<Compile Include="Access\GenericDAO.cs" />
<Compile Include="Access\FinanceDAO.cs" />
<Compile Include="Access\OrganisationDAO.cs" />
<Compile Include="Access\ScriptDAO.cs" />
<Compile Include="Access\SearchDAO.cs" />
<Compile Include="Access\UserDAO.cs" />
@@ -229,6 +230,11 @@
<Compile Include="Entities\CustomerWohnhilfe.cs" />
<Compile Include="Entities\IServiceRecord.cs" />
<Compile Include="Entities\SignatureHistory.cs" />
<Compile Include="Entities\Light\GkvAbrechnungLight.cs" />
<Compile Include="Entities\Light\GkvTransferProtokollLight.cs" />
<Compile Include="Entities\Light\InvoiceBaseLight.cs" />
<Compile Include="Entities\Light\LightEntity.cs" />
<Compile Include="Entities\Light\OrganisationLight.cs" />
<Compile Include="Entities\TwoFactorCode.cs" />
<Compile Include="Entities\AbwesenheitsInformationPrint.cs" />
<Compile Include="Entities\AddressHistory.cs" />
@@ -721,6 +727,7 @@
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Access\Scripts\GetGkvSumByDateRange.sql" />
<Content Include="Access\Scripts\GetGkvSumByDateRangeDebug.sql" />
<Content Include="ICD10\icd10.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

View File

@@ -1,230 +1,60 @@
using BS.Shared;
using BS.Shared.Interface;
using System.Diagnostics;
namespace BeWo.Data.Entities
{
[DebuggerDisplay("{Oid}: {Street}, {Town}")]
public class Address : BeWoEntityBase
{
public static string PropertyName_AddressLine1 = "AddressLine1";
[DebuggerDisplay("{Oid}: {Street}, {Town}")]
public class Address : BeWoEntityBase
{
public static string PropertyName_AddressLine1 = "AddressLine1";
public static string PropertyName_Country = "Country";
public static string PropertyName_PostalCode = "PostalCode";
public static string PropertyName_State = "State";
public static string PropertyName_Street = "Street";
public static string PropertyName_Town = "Town";
public static string PropertyName_Country = "Country";
public Address()
{
_Tid = TableID.Address;
}
public static string PropertyName_PostalCode = "PostalCode";
public virtual string AddressLine1 { get; set; }
public virtual string AddressLine2 { get; set; }
public virtual string Country { get; set; }
public virtual long? L_Version { get; set; }
public virtual decimal? Latitude { get; set; }
public virtual decimal? Longitude { get; set; }
public virtual string PostalCode { get; set; }
public virtual string State { get; set; }
public virtual string Street { get; set; }
public virtual string Town { get; set; }
public static string PropertyName_State = "State";
public virtual Address CopyToNew()
{
return new Address
{
AddressLine1 = AddressLine1,
AddressLine2 = this.AddressLine2,
Country = this.Country,
PostalCode = this.PostalCode,
Notice = this.Notice,
State = this.State,
Street = this.Street,
Town = this.Town
};
}
public static string PropertyName_Street = "Street";
public override int GetHashCode()
{
if (this is null)
return 0;
public static string PropertyName_Town = "Town";
return Oid.Value.GetHashCode();
}
private string _AddressLine1;
private string _AddressLine2;
private string _Country;
private string _PostalCode;
private string _State;
private string _Street;
private string _Town;
private decimal? _Latitude;
private decimal? _Longitude;
private long? _L_Version;
public Address()
{
this._Tid = TableID.Address;
}
public virtual string AddressLine1
{
get
{
return this._AddressLine1;
}
set
{
if (this.AreDifferent(this._AddressLine1, value))
{
this._AddressLine1 = value;
}
}
}
public virtual string AddressLine2
{
get
{
return this._AddressLine2;
}
set
{
if (this.AreDifferent(this._AddressLine2, value))
{
this._AddressLine2 = value;
}
}
}
public virtual string Country
{
get
{
return this._Country;
}
set
{
if (this.AreDifferent(this._Country, value))
{
this._Country = value;
}
}
}
public virtual string PostalCode
{
get
{
return this._PostalCode;
}
set
{
if (this.AreDifferent(this._PostalCode, value))
{
this._PostalCode = value;
}
}
}
public virtual string State
{
get
{
return this._State;
}
set
{
if (this.AreDifferent(this._State, value))
{
this._State = value;
}
}
}
public virtual string Street
{
get
{
return this._Street;
}
set
{
if (this.AreDifferent(this._Street, value))
{
this._Street = value;
}
}
}
public virtual string Town
{
get
{
return this._Town;
}
set
{
if (this.AreDifferent(this._Town, value))
{
this._Town = value;
}
}
}
public virtual decimal? Latitude
{
get
{
return this._Latitude;
}
set
{
if (this.AreDifferent(this._Latitude, value))
{
this._Latitude = value;
}
}
}
public virtual decimal? Longitude
{
get
{
return this._Longitude;
}
set
{
if (this.AreDifferent(this._Longitude, value))
{
this._Longitude = value;
}
}
}
public virtual long? L_Version
{
get
{
return this._L_Version;
}
set
{
if (this.AreDifferent(this._L_Version, value))
{
this._L_Version = value;
}
}
}
public virtual Address CopyToNew()
{
return new Address
{
AddressLine1 = this.AddressLine1,
AddressLine2 = this.AddressLine2,
Country = this.Country,
PostalCode = this.PostalCode,
Notice = this.Notice,
State = this.State,
Street = this.Street,
Town = this.Town
};
}
public override int GetHashCode()
{
if (this is null)
return 0;
return Oid.Value.GetHashCode();
}
}
public virtual bool IsEmpty()
{
return string.IsNullOrWhiteSpace(Street + Town + PostalCode);
}
}
}

View File

@@ -1,8 +1,6 @@
using System;
using System.Collections.Generic;
using BS.Shared;
using BS.Shared;
using BS.Shared.Core;
using System;
namespace BeWo.Data.Entities
{

View File

@@ -28,6 +28,7 @@ namespace BeWo.Data.Entities
public virtual IList<InvoiceBase> InvoiceBases { get; set; }
public virtual IList<GkvTransferProtokoll> GkvTransferProtokolle { get; set; }
public virtual IGkvTransferProtokoll LastTransferProtokoll => GkvTransferProtokolle?.LastOrDefault();
}
public virtual IEnumerable<IGkvTransferProtokoll> TransferProtokolle => GkvTransferProtokolle;
public virtual IGkvTransferProtokoll LastTransferProtokoll => GkvTransferProtokolle?.LastOrDefault();
}
}

View File

@@ -0,0 +1,31 @@
using BS.Shared.DataContracts.Light;
using BS.Shared.Interface;
using BS.Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using BS.Shared.DataContracts.GkvAbrechnung;
namespace BeWo.Data.Entities.Light
{
public class GkvAbrechnungLight : LightEntity, IGkvAbrechnung
{
public virtual DateTime ErstelltAm { get; set; }
public virtual decimal Betrag { get; set; }
public virtual long OrganisationOid { get; set; }
public virtual string OrganisationName { get; set; }
public virtual DateTime? AbrechnungsZeitraumStart { get; set; }
public virtual DateTime? AbrechnungsZeitraumEnde { get; set; }
public virtual bool UrbelegeGesendet { get; set; }
public virtual bool Bezahlt { get; set; }
public virtual GkvVerfahrensstufe Verfahrensstufe { get; set; }
public virtual IList<InvoiceBaseLight> InvoiceBases { get; set; }
public virtual IList<GkvTransferProtokollLight> Protokolle { get; set; }
public virtual IEnumerable<IGkvTransferProtokoll> TransferProtokolle => Protokolle;
public virtual IGkvTransferProtokoll LastTransferProtokoll => Protokolle?.LastOrDefault();
}
}

View File

@@ -0,0 +1,38 @@
using BS.Shared;
using BS.Shared.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Data.Entities.Light
{
public class GkvTransferProtokollLight : LightEntity, IGkvTransferProtokoll
{
public virtual long GkvAbrechnungOid { get; set; }
public virtual string AbsenderBezeichnung { get; set; }
public virtual string EmpfangerBezeichnung { get; set; }
public virtual string IKLeistungserbringer { get; set; }
public virtual string IKKrankenkasse { get; set; }
public virtual string IKKostentrager { get; set; }
public virtual string IKDatenannahmestelle { get; set; }
public virtual string Rechnungsnummer { get; set; }
public virtual int Datenaustauschreferenz { get; set; }
public virtual int Transfernummer { get; set; }
public virtual string Transfername { get; set; }
public virtual DateTime? ErstelltAm { get; set; }
public virtual string Dateityp { get; set; }
public virtual string Dateiname { get; set; }
public virtual int Dateigrosse { get; set; }
public virtual bool SentApp8Success { get; set; }
public virtual bool SentDakotaSuccess { get; set; }
public virtual GkvTransferResultType? ResultType { get; set; }
public virtual string Fehlertitel { get; set; }
public virtual DateTime? Fehlerdatum { get; set; }
public virtual string Fehlernachricht { get; set; }
public string BezDatenannahmestelle => EmpfangerBezeichnung;
}
}

View File

@@ -0,0 +1,24 @@
using BS.Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Data.Entities.Light
{
public class InvoiceBaseLight : LightEntity
{
public virtual DateTime? AccountingPeriodEnd { get; set; }
public virtual DateTime? AccountingPeriodStart { get; set; }
public virtual string CustomerName { get; set; }
public virtual string RecipientOrganisation { get; set; }
public virtual InvoiceType Type { get; set; }
public virtual string InvoiceTypeText { get; set; }
public virtual DateTime? InvoiceDate { get; set; }
public virtual string InvoiceNumber { get; set; }
public virtual decimal? TotalAmount { get; set; }
public virtual bool IsPaid { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Data.Entities.Light
{
public class LightEntity : BeWoEntityBase
{
}
}

View File

@@ -0,0 +1,19 @@
using System.Collections.Generic;
using System.Diagnostics;
using BS.Shared;
using BS.Shared.Interface;
namespace BeWo.Data.Entities.Light
{
[DebuggerDisplay("{Name}")]
public class OrganisationLight : LightEntity, IOrganisation
{
public virtual long OrganisationOid { get; set; }
public virtual long OrganisationVersion { get; set; }
public virtual string Name { get; set; }
public virtual string IKKrankenkasse { get; set; }
public virtual string IKKostentrager { get; set; }
public virtual string IKDatenannahmestelle { get; set; }
public virtual string BezDatenannahmestelle { get; set; }
}
}

View File

@@ -9,7 +9,6 @@ namespace BeWo.Data.Entities
public static string PropertyName_Customer = "Customer";
public static string PropertyName_Gueltig = "Gueltig";
public static string PropertyName_Medikamentenverordnungen = "Medikamentenverordnungen";
public static string PropertyName_Notice = "Notice";
public static string PropertyName_MedListType = "MedListType";
public Medikamentenverordnungsliste()
@@ -61,8 +60,11 @@ namespace BeWo.Data.Entities
}
}
#pragma warning disable CS0108 // Rethrow to preserve stack details
private string _Notice;
#pragma warning restore CS0108
#pragma warning disable CS0114 // Rethrow to preserve stack details // Rethrow to preserve stack details
public virtual string Notice
{
get { return _Notice; }
@@ -72,5 +74,6 @@ namespace BeWo.Data.Entities
_Notice = value;
}
}
#pragma warning restore CS0114 // Rethrow to preserve stack details
}
}

View File

@@ -1,377 +1,72 @@
using System.Collections.Generic;
using System.Diagnostics;
using BS.Shared;
using BS.Shared.Interface;
namespace BeWo.Data.Entities
{
[DebuggerDisplay("{Name}")]
public class Organisation : BeWoEntityBase
{
public static string PropertyName_Address = "Address";
[DebuggerDisplay("{Name}")]
public class Organisation : BeWoEntityBase, IOrganisation
{
public static string PropertyName_Address = "Address";
public static string PropertyName_BankAccount = "BankAccount";
public static string PropertyName_Contacts = "Contacts";
public static string PropertyName_CostBearer = "CostBearer";
public static string PropertyName_InvoiceAddress = "InvoiceAddress";
public static string PropertyName_Name = "Name";
public static string PropertyName_Name2 = "Name2";
public static string PropertyName_DebitorNumber = "DebitorNumber";
public static string PropertyName_Organisation2PersonList = "Organisation2PersonList";
public static string PropertyName_Function = "OrganisationsFunction";
public static string PropertyName_Arbeitszeiten = "Arbeitszeiten";
public static string PropertyName_Feiertage = "Feiertage";
public static string PropertyName_BankAccount = "BankAccount";
public static string PropertyName_Contacts = "Contacts";
public static string PropertyName_CostBearer = "CostBearer";
public static string PropertyName_InvoiceAddress = "InvoiceAddress";
public static string PropertyName_Name = "Name";
public static string PropertyName_Name2 = "Name2";
public static string PropertyName_DebitorNumber = "DebitorNumber";
public static string PropertyName_Organisation2PersonList = "Organisation2PersonList";
public static string PropertyName_Function = "OrganisationsFunction";
public static string PropertyName_Arbeitszeiten = "Arbeitszeiten";
public static string PropertyName_Feiertage = "Feiertage";
public static string PropertyName_Leistungserbringergruppe = nameof(Leistungserbringergruppe);
public static string PropertyName_BusinessPartnerId = nameof(BusinessPartnerId);
private Address _Address;
private BankAccount _BankAccount;
private IList<Contact> _Contacts;
private CostBearer _CostBearer;
private Address _InvoiceAddress;
private ValueListEntry _Function;
private string _Name;
private string _Name2;
private string _DebitorNumber;
private IList<Organisation2Person> _Organisation2PersonList;
private IList<VarFieldValue> _VarFieldValueList;
private IList<Arbeitszeit> _Arbeitszeiten;
private IList<Feiertag> _Feiertage;
private string _IKKrankenkasse;
private string _IKKostentrager;
private string _IKDatenannahmestelle;
private string _BezDatenannahmestelle;
private string _Leistungserbringergruppe;
private string _BusinessPartnerId;
public Organisation()
{
this._Tid = TableID.Organisation;
}
public virtual Address Address
{
get
{
return this._Address;
}
set
{
if (this.AreDifferent(this._Address, value))
{
this._Address = value;
}
}
}
public virtual BankAccount BankAccount
{
get
{
return this._BankAccount;
}
set
{
if (this.AreDifferent(this._BankAccount, value))
{
this._BankAccount = value;
}
}
}
public virtual IList<Contact> Contacts
{
get
{
return this._Contacts ?? (this._Contacts = new List<Contact>());
}
set
{
if (this.AreDifferent(this._Contacts, value))
{
this._Contacts = value;
}
}
}
public virtual CostBearer CostBearer
{
get
{
return this._CostBearer;
}
set
{
if (this.AreDifferent(this._CostBearer, value))
{
this._CostBearer = value;
}
}
}
public virtual Address InvoiceAddress
{
get
{
return this._InvoiceAddress;
}
set
{
if (this.AreDifferent(this._InvoiceAddress, value))
{
this._InvoiceAddress = value;
}
}
}
public virtual string Name
{
get
{
return this._Name;
}
set
{
if (this.AreDifferent(this._Name, value))
{
this._Name = value;
}
}
}
public virtual string Name2
{
get
{
return this._Name2;
}
set
{
if (this.AreDifferent(this._Name2, value))
{
this._Name2 = value;
}
}
}
public virtual string DebitorNumber
{
get
{
return this._DebitorNumber;
}
set
{
if (this.AreDifferent(this._DebitorNumber, value))
{
this._DebitorNumber = value;
}
}
}
public virtual IList<Organisation2Person> Organisation2PersonList
{
get { return this._Organisation2PersonList ?? (this._Organisation2PersonList = new List<Organisation2Person>()); }
set
{
if (this.AreDifferent(this._Organisation2PersonList, value))
{
this._Organisation2PersonList = value;
}
}
}
public virtual IList<VarFieldValue> VarFieldValueList
public Organisation()
{
get
{
return this._VarFieldValueList ?? (this._VarFieldValueList = new List<VarFieldValue>());
}
set
{
if (this.AreDifferent(this._VarFieldValueList, value))
{
this._VarFieldValueList = value;
}
}
this._Tid = TableID.Organisation;
}
public virtual ValueListEntry Function
{
get
{
return this._Function;
}
public virtual Address Address { get; set; }
public virtual BankAccount BankAccount { get; set; }
public virtual IList<Contact> Contacts { get; set; } = new List<Contact>();
public virtual CostBearer CostBearer { get; set; }
public virtual Address InvoiceAddress { get; set; }
public virtual string Name { get; set; }
public virtual string Name2 { get; set; }
public virtual string DebitorNumber { get; set; }
public virtual IList<Organisation2Person> Organisation2PersonList { get; set; } = new List<Organisation2Person>();
public virtual IList<VarFieldValue> VarFieldValueList { get; set; } = new List<VarFieldValue>();
public virtual ValueListEntry Function { get; set; }
public virtual IList<Arbeitszeit> Arbeitszeiten { get; set; } = new List<Arbeitszeit>();
public virtual IList<Feiertag> Feiertage { get; set; } = new List<Feiertag>();
public virtual string IKKrankenkasse { get; set; }
public virtual string IKKostentrager { get; set; }
public virtual string IKDatenannahmestelle { get; set; }
public virtual string BezDatenannahmestelle { get; set; }
public virtual string Leistungserbringergruppe { get; set; }
public virtual string BusinessPartnerId { get; set; }
public virtual GkvVerfahrensstufe Verfahrensstufe { get; set; }
public virtual bool GkvAusblenden { get; set; }
public virtual Address HausanschriftDatenannahmestelle { get; set; }
public virtual Address PostfachanschriftDatenannahmestelle { get; set; }
public virtual Address GroßkundenanschriftDatenannahmestelle { get; set; }
set
{
if (this.AreDifferent(this._Function, value))
{
this._Function = value;
}
}
}
//public virtual Address GetDatenannahmestelleAddress()
//{
// var addresses = new List<Address>()
// {
// HausanschriftDatenannahmestelle,
// PostfachanschriftDatenannahmestelle,
// GroßkundenanschriftDatenannahmestelle
// };
public virtual IList<Arbeitszeit> Arbeitszeiten
{
get { return _Arbeitszeiten ?? (_Arbeitszeiten = new List<Arbeitszeit>()); }
// foreach (var address in addresses)
// {
// if (address is Address && !address.IsEmpty())
// return address;
// }
set
{
if (AreDifferent(_Arbeitszeiten, value))
{
_Arbeitszeiten = value;
}
}
}
public virtual IList<Feiertag> Feiertage
{
get { return _Feiertage ?? (_Feiertage = new List<Feiertag>()); }
set
{
if (AreDifferent(_Feiertage, value))
{
_Feiertage = value;
}
}
}
public virtual string IKKrankenkasse
{
get
{
return this._IKKrankenkasse;
}
set
{
if (this.AreDifferent(this._IKKrankenkasse, value))
{
this._IKKrankenkasse = value;
}
}
}
public virtual string IKKostentrager
{
get
{
return this._IKKostentrager;
}
set
{
if (this.AreDifferent(this._IKKostentrager, value))
{
this._IKKostentrager = value;
}
}
}
public virtual string IKDatenannahmestelle
{
get
{
return this._IKDatenannahmestelle;
}
set
{
if (this.AreDifferent(this._IKDatenannahmestelle, value))
{
this._IKDatenannahmestelle = value;
}
}
}
public virtual string BezDatenannahmestelle
{
get
{
return this._BezDatenannahmestelle;
}
set
{
if (this.AreDifferent(this._BezDatenannahmestelle, value))
{
this._BezDatenannahmestelle = value;
}
}
}
public virtual string Leistungserbringergruppe
{
get
{
return this._Leistungserbringergruppe;
}
set
{
if (this.AreDifferent(this._Leistungserbringergruppe, value))
{
this._Leistungserbringergruppe = value;
}
}
}
public virtual string BusinessPartnerId
{
get
{
return this._BusinessPartnerId;
}
set
{
if (this.AreDifferent(this._BusinessPartnerId, value))
{
this._BusinessPartnerId = value;
}
}
}
public virtual GkvVerfahrensstufe Verfahrensstufe { get; set; }
public virtual bool GkvAusblenden { get; set; }
}
// return null;
//}
}
}

View File

@@ -27,11 +27,14 @@
<many-to-one name="Address" column="AddressOid" class="BeWo.Data.Entities.Address, BeWo.Data" cascade="all" fetch="join"/>
<many-to-one name="InvoiceAddress" column="InvoiceAddressOid" class="BeWo.Data.Entities.Address, BeWo.Data" cascade="all" fetch="join"/>
<many-to-one name="HausanschriftDatenannahmestelle" column="HausanschriftAddressOid" class="BeWo.Data.Entities.Address, BeWo.Data" cascade="none" fetch="join"/>
<many-to-one name="PostfachanschriftDatenannahmestelle" column="PostfachanschriftAddressOid" class="BeWo.Data.Entities.Address, BeWo.Data" cascade="none" fetch="join"/>
<many-to-one name="GroßkundenanschriftDatenannahmestelle" column="GroßkundenanschriftAddressOid" class="BeWo.Data.Entities.Address, BeWo.Data" cascade="none" fetch="join"/>
<many-to-one name="BankAccount" column="BankAccountOid" class="BeWo.Data.Entities.BankAccount, BeWo.Data" cascade="all" />
<many-to-one name="CostBearer" column="CostBearerOid" cascade="all-delete-orphan" class="BeWo.Data.Entities.CostBearer, BeWo.Data" fetch="join"/>
<many-to-one name="Function" column="FunctionValueListEntryOid" class="BeWo.Data.Entities.ValueListEntry,BeWo.Data" cascade="none" fetch="join"/>
<bag name="Contacts" table="Contact" generic="true" cascade="all-delete-orphan" batch-size="250">
<bag name="Contacts" table="Contact" generic="true" cascade="all-delete-orphan" batch-size="250">
<key column="OrganisationOid" />
<one-to-many class="BeWo.Data.Entities.Contact,BeWo.Data" />
</bag>

View File

@@ -193,10 +193,13 @@ namespace Host
if (response.Gefunden)
{
response.IKDatenannahmestelle = resolved.Item1;
response.IKKostentrager = resolved.Item2;
response.IKKrankenkasse = resolved.Item3;
response.BezDatenannahmestelle = resolved.Item4;
response.IKDatenannahmestelle = resolved.IKDatenannahmestelle;
response.IKKostentrager = resolved.IKKostentrager;
response.IKKrankenkasse = resolved.IKKrankenkasse;
response.BezDatenannahmestelle = resolved.BezDatenannahmestelle;
response.Hausanschrift = resolved.Hausanschrift;
response.Postfachanschrift = resolved.Postfachanschrift;
response.Großkundenanschrift = response.Großkundenanschrift;
}
SendResponse(response);

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.CodeAnalysis.Analyzers.2.9.6\build\Microsoft.CodeAnalysis.Analyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.Analyzers.2.9.6\build\Microsoft.CodeAnalysis.Analyzers.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
@@ -40,6 +40,7 @@
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
<NoWarn>CS0659, CS0162, CS0168, CS0649</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>

View File

@@ -0,0 +1,24 @@
ALTER TABLE `organisation`
ADD COLUMN `HausanschriftAddressOid` BIGINT NULL DEFAULT NULL AFTER `CostBearerOid`,
ADD COLUMN `PostfachanschriftAddressOid` BIGINT NULL DEFAULT NULL AFTER `HausanschriftAddressOid`,
ADD COLUMN `GroßkundenanschriftAddressOid` BIGINT NULL DEFAULT NULL AFTER `PostfachanschriftAddressOid`,
ADD INDEX `FK_ORGANISA_HAUSADD_idx` (`HausanschriftAddressOid` ASC) VISIBLE,
ADD INDEX `FK_ORGANISA_POSTADD_idx` (`PostfachanschriftAddressOid` ASC) VISIBLE,
ADD INDEX `FK_ORGANISA_GROSADD_idx` (`GroßkundenanschriftAddressOid` ASC) VISIBLE;
;
ALTER TABLE `organisation`
ADD CONSTRAINT `FK_ORGANISA_HAUSADD`
FOREIGN KEY (`HausanschriftAddressOid`)
REFERENCES `address` (`Oid`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `FK_ORGANISA_POSTADD`
FOREIGN KEY (`PostfachanschriftAddressOid`)
REFERENCES `address` (`Oid`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `FK_ORGANISA_GROSADD`
FOREIGN KEY (`GroßkundenanschriftAddressOid`)
REFERENCES `address` (`Oid`)
ON DELETE CASCADE
ON UPDATE CASCADE;

View File

@@ -47,6 +47,7 @@
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
<NoWarn>CS0659, CS0162, CS0168, CS0649, CS0219</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>

View File

@@ -75,15 +75,18 @@ namespace BeWo.Report.ReportObjects
var receiver_last = invoicebase.RecipientPersonLastName;
var receiver_first_last = receiver_first.ToFormatFollows(receiver_last);
var receiver_postcode = invoicebase.RecipientPostCode;
var receiver_town = invoicebase.RecipientTown;
var receiver_postcode_town = receiver_postcode.ToFormatFollows(receiver_town);
result.ReceiverDatenannahmestelle = invoicebase.RecipientOrganisation.ToNullIfEmpty();
result.ReceiverContactPerson = receiver_first_last;
result.ReceiverDivision = invoicebase.RecipientDivision.ToNullIfEmpty();
result.ReceiverStreet = invoicebase.RecipientStreet.ToNullIfEmpty();
result.ReceiverPostCodeAndTown = receiver_postcode_town;
var datenannahmestelle = organisation.GetDatenannahmestelleAddress();
var datenannahme_postcode = datenannahmestelle.PostalCode;
var datenannahme_town = datenannahmestelle.Town;
var datenannahme_postcode_town = datenannahme_postcode.ToFormatFollows(datenannahme_town);
//result.ReceiverDivision = datenannahmestelle.AddressLine1.ToNullIfEmpty();
result.ReceiverStreet = datenannahmestelle.Street.ToNullIfEmpty();
result.ReceiverPostCodeAndTown = datenannahme_postcode_town;
result.KrankenkasseIK = organisation.IKKostentrager;
result.KrankenkasseName = organisation.Name;

View File

@@ -110,7 +110,32 @@ namespace LebenshilfeBadKreuznachFUD.Reporting
}
else
{
report = AddReportToReport<LeistungsnachweisAmbDienst>(report, sonstigesRo);
//noch mal nach Q1 bis Q4 trennen
var cat2Ro = new Dictionary<String, ServicesOverviewRO>();
if (sonstigesRo.Services != null && sonstigesRo.Services.Count > 0)
{
foreach (var item in sonstigesRo.Services)
{
if (!cat2Ro.ContainsKey(item.ServiceCategory))
{
cat2Ro.Add(item.ServiceCategory, ServicesOverviewRO.CopyFromRO(ro));
}
cat2Ro[item.ServiceCategory].Services.Add(item);
}
foreach (var item in cat2Ro.Values)
{
report = AddReportToReport<LeistungsnachweisAmbDienst>(report, item);
}
}
else
{
report = AddReportToReport<LeistungsnachweisAmbDienst>(report, sonstigesRo);
}
}
if (report == null)

View File

@@ -47,11 +47,11 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupFooter2 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrPictureBox2 = new DevExpress.XtraReports.UI.XRPictureBox();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
@@ -65,6 +65,8 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.xrPictureBox3 = new DevExpress.XtraReports.UI.XRPictureBox();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
@@ -72,10 +74,8 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
//
// Detail
//
this.Detail.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTableServiceRecords1});
this.Detail.Font = new DevExpress.Drawing.DXFont("Calibri", 12F);
this.Detail.HeightF = 30F;
this.Detail.HeightF = 0F;
this.Detail.Name = "Detail";
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.StylePriority.UseFont = false;
@@ -86,11 +86,11 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.xrTableServiceRecords1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableServiceRecords1.LocationFloat = new DevExpress.Utils.PointFloat(100F, 0F);
this.xrTableServiceRecords1.LocationFloat = new DevExpress.Utils.PointFloat(65.83334F, 0F);
this.xrTableServiceRecords1.Name = "xrTableServiceRecords1";
this.xrTableServiceRecords1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2});
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(523.6665F, 30F);
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(564.4999F, 30F);
this.xrTableServiceRecords1.StylePriority.UseBackColor = false;
this.xrTableServiceRecords1.StylePriority.UseBorders = false;
this.xrTableServiceRecords1.StylePriority.UsePadding = false;
@@ -138,13 +138,14 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.Text = "Bemerkungen";
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell12.Weight = 0.38630561020946352D;
this.xrTableCell12.Weight = 0.44849024625671119D;
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1,
this.GroupFooter2});
this.GroupFooter2,
this.GroupHeader2});
this.DetailReport.DataMember = "Services";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
@@ -168,12 +169,12 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.xrTable3.BorderColor = System.Drawing.Color.Black;
this.xrTable3.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(100F, 0F);
this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(65.83334F, 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(523.6666F, 18F);
this.xrTable3.SizeF = new System.Drawing.SizeF(564.4999F, 18F);
this.xrTable3.StylePriority.UsePadding = false;
this.xrTable3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
@@ -227,23 +228,34 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.xrTableCell7.StylePriority.UseBorders = false;
this.xrTableCell7.StylePriority.UsePadding = false;
this.xrTableCell7.Text = "xrTableCell7";
this.xrTableCell7.Weight = 0.32028610054538287D;
this.xrTableCell7.Weight = 0.3718432709052471D;
//
// GroupFooter2
//
this.GroupFooter2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPictureBox2,
this.xrLabel2,
this.xrLabel5,
this.xrLabel4,
this.xrLabel3});
this.GroupFooter2.Font = new DevExpress.Drawing.DXFont("Calibri", 12F);
this.GroupFooter2.HeightF = 115F;
this.GroupFooter2.KeepTogether = true;
this.GroupFooter2.Name = "GroupFooter2";
this.GroupFooter2.StylePriority.UseFont = false;
//
// xrPictureBox2
//
this.xrPictureBox2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("ImageSource", null, "CustomerSignature")});
this.xrPictureBox2.LocationFloat = new DevExpress.Utils.PointFloat(360.389F, 61.99997F);
this.xrPictureBox2.Name = "xrPictureBox2";
this.xrPictureBox2.SizeF = new System.Drawing.SizeF(217.6945F, 35.50002F);
this.xrPictureBox2.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
//
// xrLabel2
//
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(100F, 65.83334F);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(65.83334F, 65.83334F);
this.xrLabel2.Multiline = true;
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -256,7 +268,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
//
// xrLabel5
//
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(370F, 0F);
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(335.8333F, 0F);
this.xrLabel5.Multiline = true;
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -275,7 +287,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.xrLabel4.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Minutes")});
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Calibri", 12F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(180F, 0F);
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(145.8333F, 0F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.SizeF = new System.Drawing.SizeF(190F, 25F);
@@ -292,20 +304,16 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
//
this.xrLabel3.Borders = DevExpress.XtraPrinting.BorderSide.Top;
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Calibri", 8F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(370F, 97.5F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(335.8333F, 97.5F);
this.xrLabel3.Multiline = true;
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(253.6666F, 17.5F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(294.4999F, 17.5F);
this.xrLabel3.StylePriority.UseBorders = false;
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.StylePriority.UseTextAlignment = false;
this.xrLabel3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// formattingRuleStartDate
//
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
@@ -316,19 +324,20 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
// ReportHeader
//
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPictureBox3,
this.xrLabel15,
this.xrLabel17,
this.xrLabel12,
this.xrLabel1,
this.xrLabel9});
this.ReportHeader.HeightF = 150F;
this.ReportHeader.HeightF = 240F;
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
//
// xrLabel15
//
this.xrLabel15.Borders = DevExpress.XtraPrinting.BorderSide.Bottom;
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(312.7917F, 62.5F);
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(278.6251F, 150F);
this.xrLabel15.Multiline = true;
this.xrLabel15.Name = "xrLabel15";
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -342,7 +351,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
// xrLabel17
//
this.xrLabel17.Borders = DevExpress.XtraPrinting.BorderSide.Bottom;
this.xrLabel17.LocationFloat = new DevExpress.Utils.PointFloat(312.7917F, 105.8333F);
this.xrLabel17.LocationFloat = new DevExpress.Utils.PointFloat(278.6251F, 193.3333F);
this.xrLabel17.Multiline = true;
this.xrLabel17.Name = "xrLabel17";
this.xrLabel17.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -355,7 +364,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
//
// xrLabel12
//
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(100F, 105.8333F);
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(65.83334F, 193.3333F);
this.xrLabel12.Multiline = true;
this.xrLabel12.Name = "xrLabel12";
this.xrLabel12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -368,7 +377,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
// xrLabel1
//
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Calibri", 12F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(100F, 0F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(65.83334F, 87.5F);
this.xrLabel1.Multiline = true;
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -379,7 +388,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
//
// xrLabel9
//
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(100F, 62.5F);
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(65.83334F, 150F);
this.xrLabel9.Multiline = true;
this.xrLabel9.Name = "xrLabel9";
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
@@ -412,15 +421,13 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
//
// topMarginBand1
//
this.topMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPictureBox3});
this.topMarginBand1.HeightF = 120F;
this.topMarginBand1.HeightF = 40F;
this.topMarginBand1.Name = "topMarginBand1";
//
// xrPictureBox3
//
this.xrPictureBox3.ImageSource = new DevExpress.XtraPrinting.Drawing.ImageSource("img", resources.GetString("xrPictureBox3.ImageSource"));
this.xrPictureBox3.LocationFloat = new DevExpress.Utils.PointFloat(200F, 37.5F);
this.xrPictureBox3.LocationFloat = new DevExpress.Utils.PointFloat(196.6667F, 0F);
this.xrPictureBox3.Name = "xrPictureBox3";
this.xrPictureBox3.SizeF = new System.Drawing.SizeF(267.7083F, 71.87493F);
//
@@ -429,6 +436,18 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.bottomMarginBand1.HeightF = 40F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// GroupHeader2
//
this.GroupHeader2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTableServiceRecords1});
this.GroupHeader2.HeightF = 30F;
this.GroupHeader2.Name = "GroupHeader2";
this.GroupHeader2.RepeatEveryPage = true;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// LeistungsnachweisAmbDienst
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -444,7 +463,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.formattingRuleServiceDesc,
this.formattingRuleCostBearer,
this.formattingRuleEmployeeName});
this.Margins = new DevExpress.Drawing.DXMargins(80F, 80F, 120F, 40F);
this.Margins = new DevExpress.Drawing.DXMargins(80F, 80F, 40F, 40F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
@@ -492,5 +511,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox2;
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2;
}
}

View File

@@ -57,9 +57,9 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
{
item.Notice = item.ServiceDescription;
}
else
else if (!String.IsNullOrEmpty(item.ServiceDescription))
{
//item.Notice = String.Format("{0}, {1}", item.ServiceDescription, item.Notice);
item.Notice = String.Format("{0}, {1}", item.ServiceDescription, item.Notice);
}
//if (!item.DurationInStunden)
//{

View File

@@ -54,6 +54,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
@@ -69,7 +70,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.xrPictureBox3 = new DevExpress.XtraReports.UI.XRPictureBox();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.xrPictureBox2 = new DevExpress.XtraReports.UI.XRPictureBox();
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
@@ -284,6 +285,7 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
// GroupFooter2
//
this.GroupFooter2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPictureBox2,
this.xrLabel5,
this.xrLabel4,
this.xrLabel3});
@@ -342,6 +344,10 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.xrLabel3.Text = "Unterschrift Leistungsempfänger";
this.xrLabel3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
//
// formattingRuleStartDate
//
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
@@ -493,9 +499,14 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
this.bottomMarginBand1.HeightF = 30F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// bindingSource1
// xrPictureBox2
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
this.xrPictureBox2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("ImageSource", null, "CustomerSignature")});
this.xrPictureBox2.LocationFloat = new DevExpress.Utils.PointFloat(398.7223F, 9.499969F);
this.xrPictureBox2.Name = "xrPictureBox2";
this.xrPictureBox2.SizeF = new System.Drawing.SizeF(217.6945F, 35.50002F);
this.xrPictureBox2.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
//
// LeistungsnachweisEntlastungsbeitrag
//
@@ -565,5 +576,6 @@ namespace LebenshilfeBadKreuznachFUD.Reporting.Reports
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox2;
}
}

View File

@@ -25,6 +25,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<NoWarn>CS0659, CS0162, CS0168, CS0649</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>

View File

@@ -12,7 +12,7 @@ using BS.Shared.Extensions;
namespace BeWo.Service.DCEntityMapper
{
public abstract class AbstractIDCEntityMapper<TEntity, TDC> : IDCEntityMapper<TEntity, TDC>, IJsonMapper<TEntity, TDC>
where TDC : new() where TEntity : BeWoEntityBase, new()
where TDC : class, new() where TEntity : BeWoEntityBase, new()
{
public bool ConcurrencyCheck(long? pDataContractVersion, BeWoEntityBase pEntity)
{
@@ -31,9 +31,20 @@ namespace BeWo.Service.DCEntityMapper
}
return lResult;
}
public virtual TDC MapToNewDC(TEntity pEntity, bool ignoreNullEntity)
public virtual TDC CreateOrMapToNewDC(TEntity pEntity, bool nullDCOnNullEntity = false)
{
if (ignoreNullEntity || pEntity is object)
if (pEntity is object)
return MapToNewDC(pEntity);
if (nullDCOnNullEntity)
return null;
return CreateNewDC();
}
public virtual TDC MapToNewDC(TEntity pEntity, bool dontCreateNewDConNullEntity)
{
if (dontCreateNewDConNullEntity || pEntity is object)
return MapToNewDC(pEntity);
return CreateNewDC();
@@ -131,9 +142,9 @@ namespace BeWo.Service.DCEntityMapper
// .Select(dc => MapToNewEntity(dc)));
}
public virtual TEntity MergeWithEntity(TDC pDataContract, TEntity pEntity, bool ignoreNullDC)
public virtual TEntity MergeOrCreateWithEntity(TDC pDataContract, TEntity pEntity)
{
if (ignoreNullDC || pDataContract is object)
if (pDataContract is object)
{
if (pEntity is null)
pEntity = CreateNewEntity();

View File

@@ -0,0 +1,48 @@
using System.Linq;
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
namespace BeWo.Service.DCEntityMapper
{
public class AddressDC_Address : AbstractIDCEntityMapper<Address, AddressDC>
{
public override AddressDC MergeWithDC(Address pEntity, AddressDC pDataContract)
{
pDataContract.AddressLine1 = pEntity.AddressLine1;
pDataContract.AddressLine2 = pEntity.AddressLine2;
pDataContract.Country = pEntity.Country;
pDataContract.L_Version = pEntity.L_Version;
pDataContract.Latitude = pEntity.Latitude;
pDataContract.Longitude = pEntity.Longitude;
pDataContract.PostalCode = pEntity.PostalCode;
pDataContract.State = pEntity.State;
pDataContract.Street = pEntity.Street;
pDataContract.Town = pEntity.Town;
return pDataContract;
}
public override Address MergeWithEntity(AddressDC pDataContract, Address pEntity)
{
pEntity.AddressLine1 = pDataContract.AddressLine1;
pEntity.AddressLine2 = pDataContract.AddressLine2;
pEntity.Country = pDataContract.Country;
pEntity.L_Version = pDataContract.L_Version;
pEntity.Latitude = pDataContract.Latitude;
pEntity.Longitude = pDataContract.Longitude;
pEntity.PostalCode = pDataContract.PostalCode;
pEntity.State = pDataContract.State;
pEntity.Street = pDataContract.Street;
pEntity.Town = pDataContract.Town;
return pEntity;
}
protected override bool AreDCAndEntityEqual(AddressDC pDC, Address pEntity)
{
if (pDC.Oid == null)
return false;
return pDC.Oid == pEntity.Oid;
}
}
}

View File

@@ -1,88 +1,88 @@
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
namespace BeWo.Service.DCEntityMapper
{
public class CompactCustomerDC_Customer : AbstractIDCEntityMapper<Customer, CompactCustomerDC>
{
public override CompactCustomerDC MergeWithDC(Customer pEntity, CompactCustomerDC pDataContract)
{
pDataContract.CustomerOid = pEntity.Oid.Value;
pDataContract.PersonOid = pEntity.Person.Oid.Value;
pDataContract.CustomerVersion = pEntity.Version.Value;
pDataContract.FirstName = pEntity.Person.FirstName;
pDataContract.LastName = pEntity.Person.LastName;
pDataContract.DateOfBirth = pEntity.Person.DateOfBirth;
pDataContract.Sex = pEntity.Person.Sex;
pDataContract.ActivationType = pEntity.IsActive;
pDataContract.TerminationDate = pEntity.TerminationDate;
pDataContract.SubstitutionStartingDayCount = pEntity.AbWelchemKrankheitsTag;
pDataContract.IsSubstitutionWanted = pEntity.VertretungGewuenscht;
pDataContract.SubstitutionNeed = pEntity.SubstitutionNeed;
pDataContract.IsSubstitutionNeeded = pEntity.VertretungDringendErforderlich;
if (pEntity.TerminationReason != null)
{
pDataContract.TerminationReason = pEntity.TerminationReason.Value;
}
//else if (pEntity.TerminationDate.HasValue)
//{
// pDataContract.TerminationReason = $"Betreuung vorzeitig beendet am {pEntity.TerminationDate:dd.MM.yyyy}";
//}
pDataContract.AssistanceBegin = pEntity.AssistanceBegin;
pDataContract.EquityContribution = pEntity.EquityContribution;
pDataContract.CustomerAlias = pEntity.CustomerAlias;
pDataContract.DebitorNumber = pEntity.DebitorNumber;
pDataContract.CostCenter = pEntity.CostCenter;
if (pEntity.Person.Address != null)
{
pDataContract.Street = pEntity.Person.Address.Street;
pDataContract.PostalCode = pEntity.Person.Address.PostalCode;
pDataContract.Town = pEntity.Person.Address.Town;
}
pDataContract.AbsenceTimes = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(pEntity.AbsenceTimes);
pEntity.Customer2CostBearerList.DoForEach(c2cb => pDataContract.CostBearerReferenceNumbers[c2cb.CostBearer.Oid.Value] = c2cb.ReferenceNumber);
pDataContract.RelatedTeamOids = pEntity.Team2CustomerList.Select(t2c => t2c.TeamOid.Value).ToList();
return pDataContract;
}
// Are not editable
public override Customer MergeWithEntity(CompactCustomerDC pDataContract, Customer pEntity)
{
return DAOFactory.GenericDAO.LoadByID<Customer>(pDataContract.CustomerOid);
}
protected override bool AreDCAndEntityEqual(CompactCustomerDC pDC, Customer pEntity)
{
return pDC.CustomerOid == pEntity.Oid;
}
public override Dictionary<string, object> ToJsonDictionary(CompactCustomerDC customer)
{
var record_dict = new Dictionary<string, object>
{
{"Address", customer.AddressString},
{"Alias", customer.CustomerAlias},
{"CustomerOid", customer.CustomerOid},
{"DateOfBirth", customer.DateOfBirthString},
{"EqutyContribution", customer.EquityContribution},
{"Fullname", customer.FullName},
{"InvoiceAddress", customer.InvoiceAddressString}
};
return record_dict;
}
}
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
namespace BeWo.Service.DCEntityMapper.Compact
{
public class CompactCustomerDC_Customer : AbstractIDCEntityMapper<Customer, CompactCustomerDC>
{
public override CompactCustomerDC MergeWithDC(Customer pEntity, CompactCustomerDC pDataContract)
{
pDataContract.CustomerOid = pEntity.Oid.Value;
pDataContract.PersonOid = pEntity.Person.Oid.Value;
pDataContract.CustomerVersion = pEntity.Version.Value;
pDataContract.FirstName = pEntity.Person.FirstName;
pDataContract.LastName = pEntity.Person.LastName;
pDataContract.DateOfBirth = pEntity.Person.DateOfBirth;
pDataContract.Sex = pEntity.Person.Sex;
pDataContract.ActivationType = pEntity.IsActive;
pDataContract.TerminationDate = pEntity.TerminationDate;
pDataContract.SubstitutionStartingDayCount = pEntity.AbWelchemKrankheitsTag;
pDataContract.IsSubstitutionWanted = pEntity.VertretungGewuenscht;
pDataContract.SubstitutionNeed = pEntity.SubstitutionNeed;
pDataContract.IsSubstitutionNeeded = pEntity.VertretungDringendErforderlich;
if (pEntity.TerminationReason != null)
{
pDataContract.TerminationReason = pEntity.TerminationReason.Value;
}
//else if (pEntity.TerminationDate.HasValue)
//{
// pDataContract.TerminationReason = $"Betreuung vorzeitig beendet am {pEntity.TerminationDate:dd.MM.yyyy}";
//}
pDataContract.AssistanceBegin = pEntity.AssistanceBegin;
pDataContract.EquityContribution = pEntity.EquityContribution;
pDataContract.CustomerAlias = pEntity.CustomerAlias;
pDataContract.DebitorNumber = pEntity.DebitorNumber;
pDataContract.CostCenter = pEntity.CostCenter;
if (pEntity.Person.Address != null)
{
pDataContract.Street = pEntity.Person.Address.Street;
pDataContract.PostalCode = pEntity.Person.Address.PostalCode;
pDataContract.Town = pEntity.Person.Address.Town;
}
pDataContract.AbsenceTimes = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(pEntity.AbsenceTimes);
pEntity.Customer2CostBearerList.DoForEach(c2cb => pDataContract.CostBearerReferenceNumbers[c2cb.CostBearer.Oid.Value] = c2cb.ReferenceNumber);
pDataContract.RelatedTeamOids = pEntity.Team2CustomerList.Select(t2c => t2c.TeamOid.Value).ToList();
return pDataContract;
}
// Are not editable
public override Customer MergeWithEntity(CompactCustomerDC pDataContract, Customer pEntity)
{
return DAOFactory.GenericDAO.LoadByID<Customer>(pDataContract.CustomerOid);
}
protected override bool AreDCAndEntityEqual(CompactCustomerDC pDC, Customer pEntity)
{
return pDC.CustomerOid == pEntity.Oid;
}
public override Dictionary<string, object> ToJsonDictionary(CompactCustomerDC customer)
{
var record_dict = new Dictionary<string, object>
{
{"Address", customer.AddressString},
{"Alias", customer.CustomerAlias},
{"CustomerOid", customer.CustomerOid},
{"DateOfBirth", customer.DateOfBirthString},
{"EqutyContribution", customer.EquityContribution},
{"Fullname", customer.FullName},
{"InvoiceAddress", customer.InvoiceAddressString}
};
return record_dict;
}
}
}

Some files were not shown because too many files have changed in this diff Show More