Models: Add Credit
This commit is contained in:
@ -44,6 +44,7 @@ namespace Elwig.Helpers {
|
||||
public DbSet<DeliveryPartModifier> DeliveryPartModifiers { get; private set; }
|
||||
public DbSet<PaymentVar> PaymentVariants { get; private set; }
|
||||
public DbSet<PaymentMember> MemberPayments { get; private set; }
|
||||
public DbSet<Credit> Credits { get; private set; }
|
||||
|
||||
private readonly StreamWriter? LogFile = null;
|
||||
public static DateTime LastWriteTime => File.GetLastWriteTime(App.Config.DatabaseFile);
|
||||
|
@ -21,12 +21,9 @@ namespace Elwig.Helpers.Billing {
|
||||
public static IEnumerable<Transaction> FromPaymentVariant(PaymentVar variant) {
|
||||
var last = variant.Season.PaymentVariants.Where(v => v.TransferDate != null).OrderBy(v => v.TransferDate).LastOrDefault();
|
||||
var dict = last?.MemberPayments.ToDictionary(m => m.MgNr, m => m.Amount) ?? new();
|
||||
return variant.MemberPayments
|
||||
.OrderBy(m => m.MgNr)
|
||||
.Select(m => {
|
||||
var amt = Math.Round(dict.GetValueOrDefault(m.MgNr, 0), 2);
|
||||
return new Transaction(m.Member, m.Amount - amt, m.Variant.Season.CurrencyCode, m.TgNr ?? 0);
|
||||
})
|
||||
return variant.Credits
|
||||
.OrderBy(c => c.MgNr)
|
||||
.Select(c => new Transaction(c.Member, c.Amount, variant.Season.CurrencyCode, c.TgNr))
|
||||
.ToList();
|
||||
}
|
||||
|
||||
|
104
Elwig/Models/Credit.cs
Normal file
104
Elwig/Models/Credit.cs
Normal file
@ -0,0 +1,104 @@
|
||||
using Elwig.Helpers;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Elwig.Models {
|
||||
[Table("credit"), PrimaryKey("Year", "TgNr"), Index("Year", "AvNr", "MgNr", IsUnique = true)]
|
||||
public class Credit {
|
||||
[Column("year")]
|
||||
public int Year { get; set; }
|
||||
|
||||
[Column("tgnr")]
|
||||
public int TgNr { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
public string TgId => $"{Year}/{TgNr:000}";
|
||||
|
||||
[Column("mgnr")]
|
||||
public int MgNr { get; set; }
|
||||
|
||||
[Column("avnr")]
|
||||
public int AvNr { get; set; }
|
||||
|
||||
[Column("net_amount")]
|
||||
public long NetAmountValue { get; set; }
|
||||
[NotMapped]
|
||||
public decimal NetAmount {
|
||||
get => Utils.DecFromDb(NetAmountValue, 2);
|
||||
set => NetAmountValue = Utils.DecToDb(value, 2);
|
||||
}
|
||||
|
||||
[Column("prev_net_amount")]
|
||||
public long? PrevNetAmountValue { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? PrevNetAmount {
|
||||
get => PrevNetAmountValue != null ? Utils.DecFromDb(PrevNetAmountValue.Value, 2) : null;
|
||||
set => PrevNetAmountValue = value != null ? Utils.DecToDb(value.Value, 2) : null;
|
||||
}
|
||||
|
||||
[Column("vat")]
|
||||
public double VatValue { get; set; }
|
||||
[NotMapped]
|
||||
public decimal Vat {
|
||||
get => (decimal)VatValue;
|
||||
set => VatValue = (double)value;
|
||||
}
|
||||
|
||||
[Column("vat_amount")]
|
||||
public long VatAmountValue { get; private set; }
|
||||
[NotMapped]
|
||||
public decimal VatAmount {
|
||||
get => Utils.DecFromDb(VatAmountValue, 2);
|
||||
}
|
||||
|
||||
[Column("gross_amount")]
|
||||
public long GrossAmountValue { get; private set; }
|
||||
[NotMapped]
|
||||
public decimal GrossAmount {
|
||||
get => Utils.DecFromDb(GrossAmountValue, 2);
|
||||
}
|
||||
|
||||
[Column("modifiers")]
|
||||
public long? ModifiersValue { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Modifiers {
|
||||
get => ModifiersValue != null ? Utils.DecFromDb(ModifiersValue.Value, 2) : null;
|
||||
set => ModifiersValue = value != null ? Utils.DecToDb(value.Value, 2) : null;
|
||||
}
|
||||
|
||||
[Column("prev_modifiers")]
|
||||
public long? PrevModifiersValue { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? PrevModifiers {
|
||||
get => PrevModifiersValue != null ? Utils.DecFromDb(PrevModifiersValue.Value, 2) : null;
|
||||
set => PrevModifiersValue = value != null ? Utils.DecToDb(value.Value, 2) : null;
|
||||
}
|
||||
|
||||
[Column("amount")]
|
||||
public long AmountValue { get; private set; }
|
||||
[NotMapped]
|
||||
public decimal Amount {
|
||||
get => Utils.DecFromDb(AmountValue, 2);
|
||||
}
|
||||
|
||||
[Column("ctime")]
|
||||
public long CTime { get; private set; }
|
||||
[NotMapped]
|
||||
public DateTime CreatedTimestamp => DateTimeOffset.FromUnixTimeSeconds(CTime).LocalDateTime;
|
||||
|
||||
[Column("mtime")]
|
||||
public long MTime { get; private set; }
|
||||
[NotMapped]
|
||||
public DateTime ModifiedTimestamp => DateTimeOffset.FromUnixTimeSeconds(CTime).LocalDateTime;
|
||||
|
||||
[ForeignKey("Year, AvNr, MgNr")]
|
||||
public virtual PaymentMember Payment { get; private set; }
|
||||
|
||||
[ForeignKey("Year, AvNr")]
|
||||
public virtual PaymentVar Variant { get; private set; }
|
||||
|
||||
[ForeignKey("MgNr")]
|
||||
public virtual Member Member { get; private set; }
|
||||
}
|
||||
}
|
@ -30,15 +30,10 @@ namespace Elwig.Models {
|
||||
|
||||
[Column("kmw")]
|
||||
public double Kmw { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
public double Oe {
|
||||
get {
|
||||
return Utils.KmwToOe(Kmw);
|
||||
}
|
||||
set {
|
||||
Kmw = Utils.OeToKmw(value);
|
||||
}
|
||||
get => Utils.KmwToOe(Kmw);
|
||||
set => Kmw = Utils.OeToKmw(value);
|
||||
}
|
||||
|
||||
[Column("qualid")]
|
||||
@ -107,6 +102,10 @@ namespace Elwig.Models {
|
||||
[NotMapped]
|
||||
public IEnumerable<Modifier> Modifiers => PartModifiers.Select(m => m.Modifier).OrderBy(m => m.Ordering);
|
||||
|
||||
[InverseProperty("DeliveryPart")]
|
||||
public virtual PaymentDeliveryPart? Payment { get; private set; }
|
||||
|
||||
[NotMapped]
|
||||
public string OriginString => Origin.OriginString + "\n" + (Kg?.Gl != null ? $" / {Kg.Gl.Name}" : "") + (Kg != null ? $" / {Kg.AtKg.Gem.Name} / KG {Kg.AtKg.Name}" : "") + (Rd != null ? $" / Ried {Rd.Name}" : "");
|
||||
}
|
||||
}
|
||||
|
158
Elwig/Models/PaymentDeliveryPart.cs
Normal file
158
Elwig/Models/PaymentDeliveryPart.cs
Normal file
@ -0,0 +1,158 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
|
||||
namespace Elwig.Models {
|
||||
[Table("payment_delivery_part"), PrimaryKey("Year", "DId", "DPNr", "AvNr")]
|
||||
public class PaymentDeliveryPart {
|
||||
[Column("year")]
|
||||
public int Year { get; set; }
|
||||
|
||||
[Column("did")]
|
||||
public int DId { get; set; }
|
||||
|
||||
[Column("dpnr")]
|
||||
public int DPNr { get; set; }
|
||||
|
||||
[Column("avnr")]
|
||||
public int AvNr { get; set; }
|
||||
|
||||
[Column("mod_abs")]
|
||||
public long ModAbsValue { get; set; }
|
||||
[NotMapped]
|
||||
public decimal ModAbs {
|
||||
get => Variant.Season.DecFromDb(ModAbsValue);
|
||||
set => ModAbsValue = Variant.Season.DecToDb(value);
|
||||
}
|
||||
|
||||
[Column("mod_rel")]
|
||||
public double ModRelValue { get; set; }
|
||||
[NotMapped]
|
||||
public decimal ModRel {
|
||||
get => (decimal)ModRelValue;
|
||||
set => ModRelValue = (double)value;
|
||||
}
|
||||
|
||||
[Column("bucket_1")]
|
||||
public int? Bucket1 { get; set; }
|
||||
|
||||
[Column("bucket_2")]
|
||||
public int? Bucket2 { get; set; }
|
||||
|
||||
[Column("bucket_3")]
|
||||
public int? Bucket3 { get; set; }
|
||||
|
||||
[Column("bucket_4")]
|
||||
public int? Bucket4 { get; set; }
|
||||
|
||||
[Column("bucket_5")]
|
||||
public int? Bucket5 { get; set; }
|
||||
|
||||
[Column("bucket_6")]
|
||||
public int? Bucket6 { get; set; }
|
||||
|
||||
[Column("bucket_7")]
|
||||
public int? Bucket7 { get; set; }
|
||||
|
||||
[Column("bucket_8")]
|
||||
public int? Bucket8 { get; set; }
|
||||
|
||||
[Column("bucket_9")]
|
||||
public int? Bucket9 { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
public int[] Buckets => (new int?[] { Bucket1, Bucket2, Bucket3, Bucket4, Bucket5, Bucket6, Bucket7, Bucket8, Bucket9 })
|
||||
.Where(b => b != null).Select(b => b.Value).ToArray();
|
||||
|
||||
[Column("price_1")]
|
||||
public long? Price1Value { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Price1 {
|
||||
get => Price1Value != null ? Variant.Season.DecFromDb(Price1Value.Value) : null;
|
||||
set => Price1Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[Column("price_2")]
|
||||
public long? Price2Value { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Price2 {
|
||||
get => Price2Value != null ? Variant.Season.DecFromDb(Price2Value.Value) : null;
|
||||
set => Price2Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[Column("price_3")]
|
||||
public long? Price3Value { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Price3 {
|
||||
get => Price3Value != null ? Variant.Season.DecFromDb(Price3Value.Value) : null;
|
||||
set => Price3Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[Column("price_4")]
|
||||
public long? Price4Value { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Price4 {
|
||||
get => Price4Value != null ? Variant.Season.DecFromDb(Price4Value.Value) : null;
|
||||
set => Price4Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[Column("price_5")]
|
||||
public long? Price5Value { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Price5 {
|
||||
get => Price5Value != null ? Variant.Season.DecFromDb(Price5Value.Value) : null;
|
||||
set => Price5Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[Column("price_6")]
|
||||
public long? Price6Value { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Price6 {
|
||||
get => Price6Value != null ? Variant.Season.DecFromDb(Price6Value.Value) : null;
|
||||
set => Price6Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[Column("price_7")]
|
||||
public long? Price7Value { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Price7 {
|
||||
get => Price7Value != null ? Variant.Season.DecFromDb(Price7Value.Value) : null;
|
||||
set => Price7Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[Column("price_8")]
|
||||
public long? Price8Value { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Price8 {
|
||||
get => Price8Value != null ? Variant.Season.DecFromDb(Price8Value.Value) : null;
|
||||
set => Price8Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[Column("price_9")]
|
||||
public long? Price9Value { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Price9 {
|
||||
get => Price9Value != null ? Variant.Season.DecFromDb(Price9Value.Value) : null;
|
||||
set => Price9Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[Column("amount")]
|
||||
public long? AmountValue { get; set; }
|
||||
[NotMapped]
|
||||
public decimal? Amount {
|
||||
get => AmountValue != null ? Variant.Season.DecFromDb(AmountValue.Value) : null;
|
||||
set => AmountValue = value != null ? Variant.Season.DecToDb(value.Value) : null;
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public decimal[] Prices => (new decimal?[] { Price1, Price2, Price3, Price4, Price5, Price6, Price7, Price8, Price9 })
|
||||
.Where(p => p != null).Select(p => p.Value).ToArray();
|
||||
|
||||
[ForeignKey("Year, AvNr")]
|
||||
public virtual PaymentVar Variant { get; private set; }
|
||||
|
||||
[ForeignKey("Year, DId, DPNr")]
|
||||
public virtual DeliveryPart DeliveryPart { get; private set; }
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@ using Microsoft.EntityFrameworkCore;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Elwig.Models {
|
||||
[Table("payment_member"), PrimaryKey("Year", "AvNr", "MgNr"), Index("Year", "TgNr", IsUnique = true)]
|
||||
[Table("payment_member"), PrimaryKey("Year", "AvNr", "MgNr")]
|
||||
public class PaymentMember {
|
||||
[Column("year")]
|
||||
public int Year { get; set; }
|
||||
@ -16,9 +16,6 @@ namespace Elwig.Models {
|
||||
[Column("amount")]
|
||||
public long AmountValue { get; set; }
|
||||
|
||||
[Column("tgnr")]
|
||||
public int? TgNr { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
public decimal Amount {
|
||||
get => Variant.Season.DecFromDb(AmountValue);
|
||||
@ -30,5 +27,8 @@ namespace Elwig.Models {
|
||||
|
||||
[ForeignKey("MgNr")]
|
||||
public virtual Member Member { get; private set; }
|
||||
|
||||
[InverseProperty("Payment")]
|
||||
public virtual Credit? Credit { get; private set; }
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
|
||||
namespace Elwig.Models {
|
||||
[Table("payment_variant"), PrimaryKey("Year", "AvNr")]
|
||||
@ -66,6 +67,10 @@ namespace Elwig.Models {
|
||||
[Column("bucket_9_name")]
|
||||
public string? Bucket9Name { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
public string[] BucketNames => (new string?[] { Bucket1Name, Bucket2Name, Bucket3Name, Bucket4Name, Bucket5Name, Bucket6Name, Bucket7Name, Bucket8Name, Bucket9Name })
|
||||
.Where(n => n != null).Select(n => n ?? "").ToArray();
|
||||
|
||||
[Column("comment")]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
@ -77,5 +82,8 @@ namespace Elwig.Models {
|
||||
|
||||
[InverseProperty("Variant")]
|
||||
public virtual ISet<PaymentMember> MemberPayments { get; private set; }
|
||||
|
||||
[InverseProperty("Variant")]
|
||||
public virtual ISet<Credit> Credits { get; private set; }
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user