Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

COM Verbrauch: Make properties Obiskennzahl, Wert, Einheit nullable #492

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
COM Verbrauch: Make properties Obiskennzahl, Wert, Einheit null…
…able
hf-kklein committed Aug 18, 2024
commit f2223189b73b5de76cac7b874934c8e5b569b642
12 changes: 6 additions & 6 deletions BO4E/COM/Verbrauch.cs
Original file line number Diff line number Diff line change
@@ -119,27 +119,27 @@ private DateTime _Enddatum
/// <example>
/// 1-0:1.8.1
/// </example>
[JsonProperty(PropertyName = "obiskennzahl", Required = Required.Always, Order = 6)]
[JsonProperty(PropertyName = "obiskennzahl", Required = Required.Default, Order = 6)]
[JsonPropertyName("obiskennzahl")]
[ProtoMember(6)]
public string Obiskennzahl { get; set; }
public string? Obiskennzahl { get; set; }

/// <summary>
/// Gibt den absoluten Wert der Menge an.
/// </summary>
[JsonProperty(PropertyName = "wert", Required = Required.Always, Order = 7)]
[JsonProperty(PropertyName = "wert", Required = Required.Default, Order = 7)]
[JsonPropertyName("wert")]
[ProtoMember(7)]
public decimal Wert { get; set; }
public decimal? Wert { get; set; }

/// <summary>
/// Gibt die Einheit zum jeweiligen Wert an.
/// </summary>
/// <seealso cref="Mengeneinheit" />
[JsonProperty(PropertyName = "einheit", Required = Required.Always, Order = 8)]
[JsonProperty(PropertyName = "einheit", Required = Required.Default, Order = 8)]
[JsonPropertyName("einheit")]
[ProtoMember(8)]
public Mengeneinheit Einheit { get; set; }
public Mengeneinheit? Einheit { get; set; }

/// <summary>type</summary>
/// <example>arbeitleistungtagesparameterabhmalo | veranschlagtejahresmenge | TUMKundenwert</example>

Unchanged files with check annotations Beta

private readonly JsonSerializerOptions _options = new()
{
Converters = { new JsonStringEnumConverter() },
IgnoreNullValues = true

Check warning on line 22 in BO4ETestProject/TestSperrauftrag.cs

GitHub Actions / pushfeature

'JsonSerializerOptions.IgnoreNullValues' is obsolete: 'JsonSerializerOptions.IgnoreNullValues is obsolete. To ignore null values when serializing, set DefaultIgnoreCondition to JsonIgnoreCondition.WhenWritingNull.' (https://aka.ms/dotnet-warnings/SYSLIB0020)

Check warning on line 22 in BO4ETestProject/TestSperrauftrag.cs

GitHub Actions / pushfeature

'JsonSerializerOptions.IgnoreNullValues' is obsolete: 'JsonSerializerOptions.IgnoreNullValues is obsolete. To ignore null values when serializing, set DefaultIgnoreCondition to JsonIgnoreCondition.WhenWritingNull.' (https://aka.ms/dotnet-warnings/SYSLIB0020)

Check warning on line 22 in BO4ETestProject/TestSperrauftrag.cs

GitHub Actions / unittest (8.0.100)

'JsonSerializerOptions.IgnoreNullValues' is obsolete: 'JsonSerializerOptions.IgnoreNullValues is obsolete. To ignore null values when serializing, set DefaultIgnoreCondition to JsonIgnoreCondition.WhenWritingNull.' (https://aka.ms/dotnet-warnings/SYSLIB0020)

Check warning on line 22 in BO4ETestProject/TestSperrauftrag.cs

GitHub Actions / unittest (7.0.100)

'JsonSerializerOptions.IgnoreNullValues' is obsolete: 'JsonSerializerOptions.IgnoreNullValues is obsolete. To ignore null values when serializing, set DefaultIgnoreCondition to JsonIgnoreCondition.WhenWritingNull.' (https://aka.ms/dotnet-warnings/SYSLIB0020)

Check warning on line 22 in BO4ETestProject/TestSperrauftrag.cs

GitHub Actions / unittest (6.0.201)

'JsonSerializerOptions.IgnoreNullValues' is obsolete: 'JsonSerializerOptions.IgnoreNullValues is obsolete. To ignore null values when serializing, set DefaultIgnoreCondition to JsonIgnoreCondition.WhenWritingNull.' (https://aka.ms/dotnet-warnings/SYSLIB0020)

Check warning on line 22 in BO4ETestProject/TestSperrauftrag.cs

GitHub Actions / unittest (6.0.201)

'JsonSerializerOptions.IgnoreNullValues' is obsolete: 'JsonSerializerOptions.IgnoreNullValues is obsolete. To ignore null values when serializing, set DefaultIgnoreCondition to JsonIgnoreCondition.WhenWritingNull.' (https://aka.ms/dotnet-warnings/SYSLIB0020)

Check warning on line 22 in BO4ETestProject/TestSperrauftrag.cs

GitHub Actions / unittest (7.0.100)

'JsonSerializerOptions.IgnoreNullValues' is obsolete: 'JsonSerializerOptions.IgnoreNullValues is obsolete. To ignore null values when serializing, set DefaultIgnoreCondition to JsonIgnoreCondition.WhenWritingNull.' (https://aka.ms/dotnet-warnings/SYSLIB0020)

Check warning on line 22 in BO4ETestProject/TestSperrauftrag.cs

GitHub Actions / unittest (8.0.100)

'JsonSerializerOptions.IgnoreNullValues' is obsolete: 'JsonSerializerOptions.IgnoreNullValues is obsolete. To ignore null values when serializing, set DefaultIgnoreCondition to JsonIgnoreCondition.WhenWritingNull.' (https://aka.ms/dotnet-warnings/SYSLIB0020)
};
[TestMethod]
// BusinessObjects
typeof(Auftrag),
typeof(AuftragsStorno),

Check warning on line 47 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / pushfeature

'AuftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 47 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / pushfeature

'AuftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 47 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (8.0.100)

'AuftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 47 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (7.0.100)

'AuftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 47 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (6.0.201)

'AuftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 47 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (6.0.201)

'AuftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 47 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (7.0.100)

'AuftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 47 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (8.0.100)

'AuftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'
typeof(Avis),
typeof(Benachrichtigung),
typeof(Berechnungsformel),
typeof(PreisblattUmlagen),
typeof(Region),
typeof(Sperrauftrag),
typeof(SperrauftragsStorno),

Check warning on line 62 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / pushfeature

'SperrauftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 62 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / pushfeature

'SperrauftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 62 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (8.0.100)

'SperrauftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 62 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (7.0.100)

'SperrauftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 62 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (6.0.201)

'SperrauftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 62 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (6.0.201)

'SperrauftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 62 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (7.0.100)

'SperrauftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'

Check warning on line 62 in BO4ETestProject/TestJsonOrder.cs

GitHub Actions / unittest (8.0.100)

'SperrauftragsStorno' is obsolete: 'This is not used in the implementation of the blocking process - we use the enum Auftragsstornogrund instead'
// COMponents
typeof(Abweichung),
public void Test_Mehrmindermengenabrechnung_System_Text()
{
var options = LenientParsing.MOST_LENIENT.GetJsonSerializerOptions();
var myLegacyInstance = new MyClass() { Verwendungszweck = Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG };

Check warning on line 52 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / pushfeature

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 52 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / pushfeature

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 52 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (8.0.100)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 52 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (7.0.100)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 52 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (6.0.201)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 52 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (6.0.201)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 52 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (7.0.100)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 52 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (8.0.100)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'
var myLegacyJson = System.Text.Json.JsonSerializer.Serialize(myLegacyInstance, options);
myLegacyJson.Should().Contain("MEHRMINDERMBENGENABRECHNUNG").And.Contain("B"); // note the "B"
var myNewInstance = System.Text.Json.JsonSerializer.Deserialize<MyClass>(myLegacyJson, options);
{
var options = LenientParsing.MOST_LENIENT.GetJsonSerializerSettings();
options.Converters.Add(new StringEnumConverter());
var myLegacyInstance = new MyClass() { Verwendungszweck = Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG };

Check warning on line 65 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / pushfeature

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 65 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / pushfeature

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 65 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (8.0.100)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 65 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (7.0.100)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 65 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (6.0.201)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 65 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (6.0.201)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 65 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (7.0.100)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'

Check warning on line 65 in BO4ETestProject/TestEnumMembers.cs

GitHub Actions / unittest (8.0.100)

'Verwendungszweck.MEHRMINDERMBENGENABRECHNUNG' is obsolete: 'This is only to keep the library backwards compatible'
var myLegacyJson = Newtonsoft.Json.JsonConvert.SerializeObject(myLegacyInstance, options);
myLegacyJson.Should().Contain("MEHRMINDERMBENGENABRECHNUNG").And.Contain("B"); // note the "B"
var myNewInstance = Newtonsoft.Json.JsonConvert.DeserializeObject<MyClass>(myLegacyJson, options);
private const string SAP_SANITIZED_USERPROPERTY_KEY = "sapSanitized";
private static readonly Func<Verbrauch, Tuple<Wertermittlungsverfahren?, Mengeneinheit, string>> PurityGrouper =
v => new Tuple<Wertermittlungsverfahren?, Mengeneinheit, string>(v.Wertermittlungsverfahren, v.Einheit,

Check failure on line 27 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / pushfeature

Argument 2: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 27 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 2: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 27 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 2: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 27 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 2: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 27 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 2: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 27 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 2: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 27 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 2: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'
v.Obiskennzahl);
/// <summary>
{
if (!IsPure(em)) throw new ArgumentException("The Energiemenge is not pure.");
if (em.Energieverbrauch.Count == 0) return Tuple.Create(0.0M, Mengeneinheit.ANZAHL);
ISet<Mengeneinheit> einheiten = new HashSet<Mengeneinheit>(em.Energieverbrauch.Select(x => x.Einheit));

Check failure on line 120 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / pushfeature

Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit?>' to 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit>'

Check failure on line 120 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit?>' to 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit>'

Check failure on line 120 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit?>' to 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit>'

Check failure on line 120 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit?>' to 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit>'

Check failure on line 120 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit?>' to 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit>'

Check failure on line 120 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit?>' to 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit>'

Check failure on line 120 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit?>' to 'System.Collections.Generic.IEnumerable<BO4E.ENUM.Mengeneinheit>'
if (einheiten.Count > 1)
// z.B. kWh und Wh oder Monat und Jahr... Die liefern IsPure==true.
throw new NotImplementedException("Converting different units of same type is not supported yet.");
var v = em.Energieverbrauch.First();
var consumption = em.GetConsumption(reference, v.Wertermittlungsverfahren, v.Obiskennzahl, v.Einheit);

Check failure on line 125 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / pushfeature

Argument 5: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 125 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 5: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 125 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 5: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 125 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 5: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 125 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 5: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 125 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 5: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 125 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 5: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'
return Tuple.Create(consumption, v.Einheit);
}
if (!me.IsExtensive())
throw new ArgumentException(
$"The Mengeneinheit {me} isn't extensive. Calculating a consumption doesn't make sense.");
return em.Energieverbrauch

Check failure on line 148 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / pushfeature

Cannot implicitly convert type 'decimal?' to 'decimal'. An explicit conversion exists (are you missing a cast?)

Check failure on line 148 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Cannot implicitly convert type 'decimal?' to 'decimal'. An explicit conversion exists (are you missing a cast?)

Check failure on line 148 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Cannot implicitly convert type 'decimal?' to 'decimal'. An explicit conversion exists (are you missing a cast?)

Check failure on line 148 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Cannot implicitly convert type 'decimal?' to 'decimal'. An explicit conversion exists (are you missing a cast?)

Check failure on line 148 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Cannot implicitly convert type 'decimal?' to 'decimal'. An explicit conversion exists (are you missing a cast?)

Check failure on line 148 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Cannot implicitly convert type 'decimal?' to 'decimal'. An explicit conversion exists (are you missing a cast?)

Check failure on line 148 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Cannot implicitly convert type 'decimal?' to 'decimal'. An explicit conversion exists (are you missing a cast?)
.Where(v => v.Wertermittlungsverfahren == wev && v.Obiskennzahl == obiskennzahl && v.Einheit == me)
.Sum(v => GetOverlapFactor(new TimeRange((v.Startdatum ?? DateTimeOffset.MinValue).DateTime, (v.Enddatum ?? DateTimeOffset.MinValue).DateTime), reference, false) * v.Wert);
}
if (em.Energieverbrauch.Count == 0) return Tuple.Create<decimal?, Mengeneinheit>(null, Mengeneinheit.KW);
var v = em.Energieverbrauch.First();
return Tuple.Create(em.GetAverage(v.Wertermittlungsverfahren, v.Obiskennzahl, v.Einheit), v.Einheit);

Check failure on line 216 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / pushfeature

Argument 4: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 216 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 4: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 216 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 4: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 216 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 4: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 216 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 4: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 216 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 4: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 216 in BO4E.Extensions/BusinessObjects/Energiemenge/EnergiemengeExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 4: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'
}
/// <summary>
var tr1 = new TimeRange((v1.Startdatum ?? DateTimeOffset.MinValue).UtcDateTime, (v1.Enddatum ?? DateTimeOffset.MinValue).UtcDateTime);
var tr2 = new TimeRange((v2.Startdatum ?? DateTimeOffset.MinValue).UtcDateTime, (v2.Enddatum ?? DateTimeOffset.MinValue).UtcDateTime);
var overlap = v1.GetIntersection(v2);
if (v1.Einheit.IsExtensive())

Check failure on line 64 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / pushfeature

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 64 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 64 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 64 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 64 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 64 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 64 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'
{
var vmerge = new Verbrauch
{
Startdatum = start,
Enddatum = stop
};
if (v1.Einheit.IsExtensive())

Check failure on line 168 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / pushfeature

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 168 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 168 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 168 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 168 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 168 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 168 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

'Mengeneinheit?' does not contain a definition for 'IsExtensive' and the best extension method overload 'MengeneinheitExtenion.IsExtensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'
{
vmerge.Wert = v1.Wert + v2.Wert;
result.Add(vmerge);
}
result.RemoveWhere(v =>
v.Einheit.IsIntensive() && new TimeRange((v.Startdatum ?? DateTimeOffset.MinValue).DateTime, (v.Enddatum ?? DateTimeOffset.MinValue).DateTime).Duration.TotalMilliseconds == 0);

Check failure on line 200 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / pushfeature

'Mengeneinheit?' does not contain a definition for 'IsIntensive' and the best extension method overload 'MengeneinheitExtenion.IsIntensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 200 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

'Mengeneinheit?' does not contain a definition for 'IsIntensive' and the best extension method overload 'MengeneinheitExtenion.IsIntensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 200 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

'Mengeneinheit?' does not contain a definition for 'IsIntensive' and the best extension method overload 'MengeneinheitExtenion.IsIntensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 200 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

'Mengeneinheit?' does not contain a definition for 'IsIntensive' and the best extension method overload 'MengeneinheitExtenion.IsIntensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 200 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

'Mengeneinheit?' does not contain a definition for 'IsIntensive' and the best extension method overload 'MengeneinheitExtenion.IsIntensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 200 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

'Mengeneinheit?' does not contain a definition for 'IsIntensive' and the best extension method overload 'MengeneinheitExtenion.IsIntensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'

Check failure on line 200 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

'Mengeneinheit?' does not contain a definition for 'IsIntensive' and the best extension method overload 'MengeneinheitExtenion.IsIntensive(Mengeneinheit)' requires a receiver of type 'BO4E.ENUM.Mengeneinheit'
return result;
}
(
v.Wertermittlungsverfahren,
v.Obiskennzahl,
v.Einheit

Check failure on line 245 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / pushfeature

Argument 3: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 245 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 3: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 245 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 3: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 245 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 3: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 245 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 3: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 245 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 3: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'

Check failure on line 245 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 3: cannot convert from 'BO4E.ENUM.Mengeneinheit?' to 'BO4E.ENUM.Mengeneinheit'
));
foreach (var vGroup in groups)
{
/// <throws>ArgumentException if units are not convertible</throws>
public static void ConvertToUnit(this Verbrauch v, Mengeneinheit mengeneinheit)
{
var oldWert = new PhysikalischerWert(v.Wert, v.Einheit);

Check failure on line 337 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / pushfeature

Argument 1: cannot convert from 'decimal?' to 'decimal'

Check failure on line 337 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 1: cannot convert from 'decimal?' to 'decimal'

Check failure on line 337 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 1: cannot convert from 'decimal?' to 'decimal'

Check failure on line 337 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 1: cannot convert from 'decimal?' to 'decimal'

Check failure on line 337 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (6.0.201)

Argument 1: cannot convert from 'decimal?' to 'decimal'

Check failure on line 337 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (7.0.100)

Argument 1: cannot convert from 'decimal?' to 'decimal'

Check failure on line 337 in BO4E.Extensions/COM/VerbrauchExtension.cs

GitHub Actions / unittest (8.0.100)

Argument 1: cannot convert from 'decimal?' to 'decimal'
var newWert = oldWert.ConvertToUnit(mengeneinheit);
v.Wert = newWert.Wert;
v.Einheit = newWert.Einheit;