137 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using Elwig.Helpers;
 | 
						|
using Microsoft.EntityFrameworkCore;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.ComponentModel.DataAnnotations.Schema;
 | 
						|
 | 
						|
namespace Elwig.Models.Entities {
 | 
						|
    [Table("season"), PrimaryKey("Year")]
 | 
						|
    public class Season {
 | 
						|
        [Column("year")]
 | 
						|
        public int Year { get; set; }
 | 
						|
 | 
						|
        [Column("currency")]
 | 
						|
        public required string CurrencyCode { get; set; }
 | 
						|
 | 
						|
        [Column("precision")]
 | 
						|
        public byte Precision { get; set; }
 | 
						|
 | 
						|
        [Column("max_kg_per_ha")]
 | 
						|
        public int MaxKgPerHa { get; set; }
 | 
						|
 | 
						|
        [Column("vat_normal")]
 | 
						|
        public double VatNormal { get; set; }
 | 
						|
 | 
						|
        [Column("vat_flatrate")]
 | 
						|
        public double VatFlatrate { get; set; }
 | 
						|
 | 
						|
        [Column("min_kg_per_bs")]
 | 
						|
        public int MinKgPerBusinessShare { get; set; }
 | 
						|
 | 
						|
        [Column("max_kg_per_bs")]
 | 
						|
        public int MaxKgPerBusinessShare { get; set; }
 | 
						|
 | 
						|
        [Column("penalty_per_kg")]
 | 
						|
        public long? PenaltyPerKgValue { get; set; }
 | 
						|
        [NotMapped]
 | 
						|
        public decimal? PenaltyPerKg {
 | 
						|
            get => PenaltyPerKgValue != null ? DecFromDb(PenaltyPerKgValue.Value) : null;
 | 
						|
            set => PenaltyPerKgValue = value != null ? DecToDb(value.Value) : null;
 | 
						|
        }
 | 
						|
 | 
						|
        [Column("penalty_amount")]
 | 
						|
        public long? PenaltyAmoutValue { get; set; }
 | 
						|
        [NotMapped]
 | 
						|
        public decimal? PenaltyAmount {
 | 
						|
            get => PenaltyAmoutValue != null ? DecFromDb(PenaltyAmoutValue.Value) : null;
 | 
						|
            set => PenaltyAmoutValue = value != null ? DecToDb(value.Value) : null;
 | 
						|
        }
 | 
						|
 | 
						|
        [Column("penalty_none")]
 | 
						|
        public long? PenaltyNoneValue { get; set; }
 | 
						|
        [NotMapped]
 | 
						|
        public decimal? PenaltyNone {
 | 
						|
            get => PenaltyNoneValue != null ? DecFromDb(PenaltyNoneValue.Value) : null;
 | 
						|
            set => PenaltyNoneValue = value != null ? DecToDb(value.Value) : null;
 | 
						|
        }
 | 
						|
 | 
						|
        [Column("penalty_per_bs_amount")]
 | 
						|
        public long? PenaltyPerBsAmountValue { get; set; }
 | 
						|
        [NotMapped]
 | 
						|
        public decimal? PenaltyPerBsAmount {
 | 
						|
            get => PenaltyPerBsAmountValue != null ? DecFromDb(PenaltyPerBsAmountValue.Value) : null;
 | 
						|
            set => PenaltyPerBsAmountValue = value != null ? DecToDb(value.Value) : null;
 | 
						|
        }
 | 
						|
 | 
						|
        [Column("penalty_per_bs_none")]
 | 
						|
        public long? PenaltyPerBsNoneValue { get; set; }
 | 
						|
        [NotMapped]
 | 
						|
        public decimal? PenaltyPerBsNone {
 | 
						|
            get => PenaltyPerBsNoneValue != null ? DecFromDb(PenaltyPerBsNoneValue.Value) : null;
 | 
						|
            set => PenaltyPerBsNoneValue = value != null ? DecToDb(value.Value) : null;
 | 
						|
        }
 | 
						|
 | 
						|
        [Column("bs_value")]
 | 
						|
        public long? BusinessShareValueValue { get; set; }
 | 
						|
        [NotMapped]
 | 
						|
        public decimal? BusinessShareValue {
 | 
						|
            get => BusinessShareValueValue != null ? DecFromDb(BusinessShareValueValue.Value) : null;
 | 
						|
            set => BusinessShareValueValue = value != null ? DecToDb(value.Value) : null;
 | 
						|
        }
 | 
						|
 | 
						|
        [Column("start_date")]
 | 
						|
        public string? StartDateString { get; set; }
 | 
						|
        [NotMapped]
 | 
						|
        public DateOnly? StartDate {
 | 
						|
            get => StartDateString != null ? DateOnly.ParseExact(StartDateString, "yyyy-MM-dd") : null;
 | 
						|
            set => StartDateString = value?.ToString("yyyy-MM-dd");
 | 
						|
        }
 | 
						|
 | 
						|
        [Column("end_date")]
 | 
						|
        public string? EndDateString { get; set; }
 | 
						|
        [NotMapped]
 | 
						|
        public DateOnly? EndDate {
 | 
						|
            get => EndDateString != null ? DateOnly.ParseExact(EndDateString, "yyyy-MM-dd") : null;
 | 
						|
            set => EndDateString = value?.ToString("yyyy-MM-dd");
 | 
						|
        }
 | 
						|
 | 
						|
        [Column("calc_mode")]
 | 
						|
        public int CalcMode { get; set; }
 | 
						|
        [NotMapped]
 | 
						|
        public bool Billing_HonorGebunden {
 | 
						|
            get => (CalcMode & 0x1) != 0;
 | 
						|
            set => CalcMode = value ? CalcMode | 0x1 : CalcMode & ~0x1;
 | 
						|
        }
 | 
						|
        [NotMapped]
 | 
						|
        public bool Billing_AllowAttrsIntoLower {
 | 
						|
            get => (CalcMode & 0x4) != 0;
 | 
						|
            set => CalcMode = value ? CalcMode | 0x4 : CalcMode & ~0x4;
 | 
						|
        }
 | 
						|
        [NotMapped]
 | 
						|
        public bool Billing_AvoidUnderDeliveries {
 | 
						|
            get => (CalcMode & 0x2) != 0;
 | 
						|
            set => CalcMode = value ? CalcMode | 0x2 : CalcMode & ~0x2;
 | 
						|
        }
 | 
						|
 | 
						|
        [ForeignKey("CurrencyCode")]
 | 
						|
        public virtual Currency Currency { get; private set; } = null!;
 | 
						|
 | 
						|
        [InverseProperty(nameof(Modifier.Season))]
 | 
						|
        public virtual ICollection<Modifier> Modifiers { get; private set; } = null!;
 | 
						|
 | 
						|
        [InverseProperty(nameof(PaymentVar.Season))]
 | 
						|
        public virtual ICollection<PaymentVar> PaymentVariants { get; private set; } = null!;
 | 
						|
 | 
						|
        [InverseProperty(nameof(Delivery.Season))]
 | 
						|
        public virtual ICollection<Delivery> Deliveries { get; private set; } = null!;
 | 
						|
 | 
						|
        public decimal DecFromDb(long value) {
 | 
						|
            return Utils.DecFromDb(value, Precision);
 | 
						|
        }
 | 
						|
 | 
						|
        public long DecToDb(decimal value) {
 | 
						|
            return Utils.DecToDb(value, Precision);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |