Skip to content

Commit

Permalink
Adding Bankverbindung and Erreichbarkeit COM objects (#466)
Browse files Browse the repository at this point in the history
* 🔧 Update tax-related properties and add bank details

* adding Erreichbarkeit as COM

* Erreichbarkeit

* format

* adding proto messages

* remove BOM

* Land in proto

* proto index starts from 3

* fix indexes

* fixing JsonPropertyOrder numbers

* Update BO4E/COM/Bankverbindung.cs

Co-authored-by: konstantin <[email protected]>

* file-scoped namespaces

* improve docstrings

* Using TimeOnly and new COM class `Zeitfenster`

* adding JsonProperties

* using Zeitfenster in proto

* Update BO4E/BO/Zeitfenster.cs

Co-authored-by: konstantin <[email protected]>

* Update BO4E/BO/Zeitfenster.cs

Co-authored-by: konstantin <[email protected]>

* Update BO4E/BO/Zeitfenster.cs

Co-authored-by: konstantin <[email protected]>

* using ParseExact

* move it to COM folder

* adding TestZeitfenster

* namespace ebene

* remove unnecessary properties from Bankverbindung

* generated schemas

---------

Co-authored-by: konstantin <[email protected]>
  • Loading branch information
hamidhajiparvaneh and hf-kklein authored Aug 6, 2024
1 parent c9038e1 commit 05abfd3
Show file tree
Hide file tree
Showing 34 changed files with 3,573 additions and 111 deletions.
29 changes: 28 additions & 1 deletion BO4E/BO/Geschaeftspartner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ public class Geschaeftspartner : BusinessObject
[ProtoMember(12)]
public List<Kontaktart>? Kontaktweg { get; set; }

/// <summary>Die Steuer-ID des Geschäftspartners. Beispiel: DE 813281825</summary>
/// <summary>Die Umsatzsteuer-ID des Geschäftspartners. Beispiel: DE 813281825</summary>
/// <remarks>VA Umsatzsteuernummer</remarks>
[JsonProperty(Required = Required.Default, Order = 15, PropertyName = "umsatzsteuerId")]
[JsonPropertyOrder(15)]
[JsonPropertyName("umsatzsteuerId")]
Expand Down Expand Up @@ -183,4 +184,30 @@ public class Geschaeftspartner : BusinessObject
[NonOfficial(NonOfficialCategory.CUSTOMER_REQUIREMENTS)]
[ProtoMember(20)]
public GrundDerPrivilegierungNachEnFG? GrundDerPrivilegierungNachEnFG { get; set; }

/// <summary>Bankverbindung</summary>
[JsonProperty(Required = Required.Default, Order = 23, PropertyName = "bankverbindung")]
[JsonPropertyName("bankverbindung")]
[JsonPropertyOrder(23)]
[ProtoMember(21)]
[DataCategory(DataCategory.FINANCE)]
[NonOfficial(NonOfficialCategory.CUSTOMER_REQUIREMENTS)]
public Bankverbindung? Bankverbindung { get; set; }

/// <summary>Die Steuernummer-ID des Geschäftspartners. Beispiel: 30120345678</summary>
/// <remarks>FC Steuernummer</remarks>
[JsonProperty(Required = Required.Default, Order = 24, PropertyName = "steuernummer")]
[JsonPropertyOrder(24)]
[JsonPropertyName("steuernummer")]
[ProtoMember(22)]
[DataCategory(DataCategory.LEGAL)]
public string? Steuernummer { get; set; }

/// <summary>Die Erreichbarkeit eines Unternehmens an Werktagen.</summary>
[JsonProperty(Required = Required.Default, Order = 25, PropertyName = "erreichbarkeit")]
[JsonPropertyOrder(25)]
[JsonPropertyName("erreichbarkeit")]
[ProtoMember(23)]
[DataCategory(DataCategory.LEGAL)]
public Erreichbarkeit? Erreichbarkeit { get; set; }
}
195 changes: 98 additions & 97 deletions BO4E/BO4E.csproj
Original file line number Diff line number Diff line change
@@ -1,97 +1,98 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>BO4E</RootNamespace>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageId>Hochfrequenz.BO4Enet</PackageId>
<Authors>Hochfrequenz Untenehmensberatung GmbH</Authors>
<Product>BO4E .net core bindings</Product>
<RepositoryUrl>https://github.com/Hochfrequenz/BO4E-dotnet/</RepositoryUrl>

<VersionPrefix>0.2.50</VersionPrefix>
<AssemblyName>BO4Enet</AssemblyName>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<PublishRepositoryUrl>true</PublishRepositoryUrl>

<!-- Optional: Embed source files that are not tracked by the source control manager to the PDB -->
<EmbedUntrackedSources>true</EmbedUntrackedSources>

<!-- Optional: Include PDB in the built .nupkg -->
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<PackageProjectUrl>https://github.com/Hochfrequenz/BO4E-dotnet/</PackageProjectUrl>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>

<RepositoryType>git</RepositoryType>
<IncludeSymbols>true</IncludeSymbols>
<DebugType>Embedded</DebugType>
<EmbedAllSources>True</EmbedAllSources>
<LangVersion>latest</LangVersion>
<DocumentationFile>BO4Enet.xml</DocumentationFile>
<Nullable>annotations</Nullable>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<Optimize>false</Optimize>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DefineConstants>DEBUG</DefineConstants>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>

<ItemGroup>
<Compile Remove="BO\NewFolder\**" />
<Compile Remove="json-schema-files\**" />
<EmbeddedResource Remove="BO\NewFolder\**" />
<EmbeddedResource Remove="json-schema-files\**" />
<None Remove="BO\NewFolder\**" />
<None Remove="json-schema-files\**" />
<None Include="..\LICENSE.txt">
<Pack>True</Pack>
<PackagePath />
</None>
</ItemGroup>

<ItemGroup>
<None Remove="CentralEuropeStandardTime.json" />
<None Remove="protobuf-files\BO4E.BO.Angebot.proto" />
<None Remove="protobuf-files\BO4E.BO.Ansprechpartner.proto" />
<None Remove="protobuf-files\BO4E.BO.Benachrichtigung.proto" />
<None Remove="protobuf-files\BO4E.BO.Energiemenge.proto" />
<None Remove="protobuf-files\BO4E.BO.Geschaeftspartner.proto" />
<None Remove="protobuf-files\BO4E.BO.Kosten.proto" />
<None Remove="protobuf-files\BO4E.BO.Marktlokation.proto" />
<None Remove="protobuf-files\BO4E.BO.Messlokation.proto" />
<None Remove="protobuf-files\BO4E.BO.Preisblatt.proto" />
<None Remove="protobuf-files\BO4E.BO.Rechnung.proto" />
<None Remove="protobuf-files\BO4E.BO.Region.proto" />
<None Remove="protobuf-files\BO4E.BO.Vertrag.proto" />
<None Remove="protobuf-files\BO4E.BO.Zaehler.proto" />
</ItemGroup>

<ItemGroup>
<EmbeddedResource Include="meta\CentralEuropeStandardTime.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Enums.NET" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Newtonsoft.Json.Schema" Version="4.0.1" />
<PackageReference Include="Polyfill" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="protobuf-net" Version="3.2.30" />
<PackageReference Include="SourceLink.Copy.PdbFiles" Version="2.8.3" PrivateAssets="All" />
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
<PackageReference Include="System.Text.Encodings.Web" Version="8.0.0" />
<PackageReference Include="System.Text.Json" Version="8.0.4" />
</ItemGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>BO4E</RootNamespace>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageId>Hochfrequenz.BO4Enet</PackageId>
<Authors>Hochfrequenz Untenehmensberatung GmbH</Authors>
<Product>BO4E .net core bindings</Product>
<RepositoryUrl>https://github.com/Hochfrequenz/BO4E-dotnet/</RepositoryUrl>

<VersionPrefix>0.2.50</VersionPrefix>
<AssemblyName>BO4Enet</AssemblyName>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<PublishRepositoryUrl>true</PublishRepositoryUrl>

<!-- Optional: Embed source files that are not tracked by the source control manager to the PDB -->
<EmbedUntrackedSources>true</EmbedUntrackedSources>

<!-- Optional: Include PDB in the built .nupkg -->
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<PackageProjectUrl>https://github.com/Hochfrequenz/BO4E-dotnet/</PackageProjectUrl>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>

<RepositoryType>git</RepositoryType>
<IncludeSymbols>true</IncludeSymbols>
<DebugType>Embedded</DebugType>
<EmbedAllSources>True</EmbedAllSources>
<LangVersion>latest</LangVersion>
<DocumentationFile>BO4Enet.xml</DocumentationFile>
<Nullable>annotations</Nullable>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<Optimize>false</Optimize>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DefineConstants>DEBUG</DefineConstants>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>

<ItemGroup>
<Compile Remove="BO\NewFolder\**" />
<Compile Remove="json-schema-files\**" />
<EmbeddedResource Remove="BO\NewFolder\**" />
<EmbeddedResource Remove="json-schema-files\**" />
<None Remove="BO\NewFolder\**" />
<None Remove="json-schema-files\**" />
<None Include="..\LICENSE.txt">
<Pack>True</Pack>
<PackagePath />
</None>
</ItemGroup>

<ItemGroup>
<None Remove="CentralEuropeStandardTime.json" />
<None Remove="protobuf-files\BO4E.BO.Angebot.proto" />
<None Remove="protobuf-files\BO4E.BO.Ansprechpartner.proto" />
<None Remove="protobuf-files\BO4E.BO.Benachrichtigung.proto" />
<None Remove="protobuf-files\BO4E.BO.Energiemenge.proto" />
<None Remove="protobuf-files\BO4E.BO.Geschaeftspartner.proto" />
<None Remove="protobuf-files\BO4E.BO.Kosten.proto" />
<None Remove="protobuf-files\BO4E.BO.Marktlokation.proto" />
<None Remove="protobuf-files\BO4E.BO.Messlokation.proto" />
<None Remove="protobuf-files\BO4E.BO.Preisblatt.proto" />
<None Remove="protobuf-files\BO4E.BO.Rechnung.proto" />
<None Remove="protobuf-files\BO4E.BO.Region.proto" />
<None Remove="protobuf-files\BO4E.BO.Vertrag.proto" />
<None Remove="protobuf-files\BO4E.BO.Zaehler.proto" />
</ItemGroup>

<ItemGroup>
<EmbeddedResource Include="meta\CentralEuropeStandardTime.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Enums.NET" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Newtonsoft.Json.Schema" Version="4.0.1" />
<PackageReference Include="Polyfill" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Portable.System.DateTimeOnly" Version="8.0.1" />
<PackageReference Include="protobuf-net" Version="3.2.30" />
<PackageReference Include="SourceLink.Copy.PdbFiles" Version="2.8.3" PrivateAssets="All" />
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
<PackageReference Include="System.Text.Encodings.Web" Version="8.0.0" />
<PackageReference Include="System.Text.Json" Version="8.0.4" />
</ItemGroup>

</Project>
44 changes: 44 additions & 0 deletions BO4E/COM/Bankverbindung.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
using System.Text.Json.Serialization;
using BO4E.ENUM;
using BO4E.meta;
using Newtonsoft.Json;
using ProtoBuf;

namespace BO4E.COM;

/// <summary>Enthält eine Bankverbindung</summary>
[ProtoContract]
public class Bankverbindung : COM
{
/// <summary>IBAN</summary>
[DataCategory(DataCategory.FINANCE)]
[JsonProperty(PropertyName = "iban", Required = Required.Default, Order = 3)]
[JsonPropertyName("iban")]
[ProtoMember(3)]
[JsonPropertyOrder(3)]
public string? IBAN { get; set; }

/// <summary>Der kontoinhaber</summary>
[DataCategory(DataCategory.FINANCE)]
[JsonProperty(PropertyName = "kontoinhaber", Required = Required.Default, Order = 4)]
[JsonPropertyName("kontoinhaber")]
[ProtoMember(4)]
[JsonPropertyOrder(4)]
public string? Kontoinhaber { get; set; }

/// <summary>Die Bankkennung, BIC</summary>
[DataCategory(DataCategory.FINANCE)]
[JsonProperty(PropertyName = "bankkennung", Required = Required.Default, Order = 5)]
[JsonPropertyName("bankkennung")]
[ProtoMember(5)]
[JsonPropertyOrder(5)]
public string? Bankkennung { get; set; }

/// <summary>Der Bankname</summary>
[DataCategory(DataCategory.FINANCE)]
[JsonProperty(PropertyName = "bankname", Required = Required.Default, Order = 6)]
[JsonPropertyName("bankname")]
[ProtoMember(6)]
[JsonPropertyOrder(6)]
public string? Bankname { get; set; }
}
56 changes: 56 additions & 0 deletions BO4E/COM/Erreichbarkeit.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
using System.Text.Json.Serialization;

using Newtonsoft.Json;

using ProtoBuf;

namespace BO4E.COM;

/// <summary>
/// Die Erreichbarkeit eines Unternehmens an Werktagen.
/// </summary>
[ProtoContract]
public class Erreichbarkeit : COM
{
/// <summary>Erreichbarkeit am Montag</summary>
[JsonProperty(PropertyName = "montagErreichbarkeit", Required = Required.Default, Order = 3)]
[JsonPropertyName("montagErreichbarkeit")]
[ProtoMember(3)]
[JsonPropertyOrder(3)]
public Zeitfenster? MontagErreichbarkeit { get; set; }

/// <summary>Erreichbarkeit am Dienstag</summary>
[JsonProperty(PropertyName = "dienstagErreichbarkeit", Required = Required.Default, Order = 4)]
[JsonPropertyName("dienstagErreichbarkeit")]
[ProtoMember(4)]
[JsonPropertyOrder(4)]
public Zeitfenster? DienstagErreichbarkeit { get; set; }

/// <summary>Erreichbarkeit am Mittwoch</summary>
[JsonProperty(PropertyName = "mittwochErreichbarkeit", Required = Required.Default, Order = 5)]
[JsonPropertyName("mittwochErreichbarkeit")]
[ProtoMember(5)]
[JsonPropertyOrder(5)]
public Zeitfenster? MittwochErreichbarkeit { get; set; }

/// <summary>Erreichbarkeit am Donnerstag</summary>
[JsonProperty(PropertyName = "donnerstagErreichbarkeit", Required = Required.Default, Order = 6)]
[JsonPropertyName("donnerstagErreichbarkeit")]
[ProtoMember(6)]
[JsonPropertyOrder(6)]
public Zeitfenster? DonnerstagErreichbarkeit { get; set; }

/// <summary>Erreichbarkeit am Freitag</summary>
[JsonProperty(PropertyName = "freitagErreichbarkeit", Required = Required.Default, Order = 7)]
[JsonPropertyName("freitagErreichbarkeit")]
[ProtoMember(7)]
[JsonPropertyOrder(7)]
public Zeitfenster? FreitagErreichbarkeit { get; set; }

/// <summary>Mittagspause (Ausschluss der Erreichbarkeit)</summary>
[JsonProperty(PropertyName = "mittagspause", Required = Required.Default, Order = 8)]
[JsonPropertyName("mittagspause")]
[ProtoMember(8)]
[JsonPropertyOrder(8)]
public Zeitfenster? Mittagspause { get; set; }
}
Loading

0 comments on commit 05abfd3

Please sign in to comment.