182 lines
6.2 KiB
C#
182 lines
6.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using EveryThing.Models.CodeTable;
|
|
using EveryThing.Models.Invoice;
|
|
|
|
namespace EveryThing.Models.Project
|
|
{
|
|
public class ProjectPartItemStatusAttribute : Attribute
|
|
{
|
|
public int Order { get; set; }
|
|
|
|
public ProjectPartItemStatusAttribute(int order)
|
|
{
|
|
Order = order;
|
|
}
|
|
}
|
|
public enum ProjectPartItemStatus
|
|
{
|
|
[ProjectPartItemStatus(1)]
|
|
[Display(Name = "Odprto")]
|
|
Opened = 0,
|
|
|
|
[ProjectPartItemStatus(2)]
|
|
[Display(Name = "V izdelavi")]
|
|
InProduction = 1,
|
|
|
|
[ProjectPartItemStatus(3)]
|
|
[Display(Name = "V koop.")]
|
|
InCooperation = 10,
|
|
|
|
[ProjectPartItemStatus(4)]
|
|
[Display(Name = "Zaključeno")]
|
|
Finished = 2,
|
|
|
|
[ProjectPartItemStatus(5)]
|
|
[Display(Name = "Odpremljeno")]
|
|
Shipped = 3
|
|
}
|
|
|
|
public class ProjectPartItem
|
|
{
|
|
[Key]
|
|
public int IdProjectPartItem { get; set; }
|
|
|
|
[Required]
|
|
[ForeignKey("ProjectPart")]
|
|
public int IdProjectPartFk { get; set; }
|
|
|
|
[ForeignKey("Item")]
|
|
[Display(Name = "Artikel")]
|
|
public int? IdItemFk { get; set; }
|
|
|
|
[Required]
|
|
[Display(Name = "Število kosov")]
|
|
public float NumberOfItems { get; set; }
|
|
|
|
[Display(Name = "Število kompletov")]
|
|
public float NumberOfSets { get; set; }
|
|
|
|
[ForeignKey("Material")]
|
|
[Display(Name = "Material")]
|
|
public int? IdMaterialFk { get; set; }
|
|
|
|
[Display(Name = "Dimenzije surovca")]
|
|
public string MaterialDimensions { get; set; }
|
|
|
|
[Required]
|
|
[ForeignKey("MaterialSupplier")]
|
|
[Display(Name = "Dobavitelj materiala")]
|
|
public int? IdMaterialSupplierFk { get; set; }
|
|
|
|
[Display(Name = "Cena - Material")]
|
|
public float MaterialPrice { get; set; }
|
|
|
|
[Display(Name = "Cena - Delo")]
|
|
public float WorkPrice { get; set; }
|
|
|
|
[Display(Name = "Prodajna cena")]
|
|
public float SellingPrice { get; set; } = 0;
|
|
|
|
[Display(Name = "Število kosov - Zaključeno")]
|
|
public float NumberOfItemsFinished { get; set; }
|
|
|
|
[NotMapped]
|
|
[Display(Name = "Vrednost - Delo")]
|
|
public double WorkValue
|
|
{
|
|
get => Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems) * Convert.ToDouble(WorkPrice);
|
|
set => WorkPrice = Convert.ToSingle(Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems == 0
|
|
? 0
|
|
: value / (Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems))));
|
|
}
|
|
|
|
[NotMapped]
|
|
[Display(Name = "Vrednost - Delo")]
|
|
public double MaterialValue
|
|
{
|
|
get => Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems) * Convert.ToDouble(MaterialPrice);
|
|
set => MaterialPrice = Convert.ToSingle(Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems == 0
|
|
? 0
|
|
: value / (Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems))));
|
|
}
|
|
|
|
[NotMapped]
|
|
[Display(Name = "Vrednost - cena")]
|
|
public double CostPrice=> Convert.ToDouble(WorkPrice) + Convert.ToDouble(MaterialPrice);
|
|
|
|
[NotMapped]
|
|
[Display(Name = "Vrednost - strošek")]
|
|
public double CostValue => Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems) * Convert.ToDouble(CostPrice);
|
|
|
|
[NotMapped]
|
|
[Display(Name = "Prodajna vrednost")]
|
|
public double SellingValue
|
|
{
|
|
get => Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems) * Convert.ToDouble(SellingPrice);
|
|
set => SellingPrice = Convert.ToSingle(Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems == 0
|
|
? 0
|
|
: value / (Convert.ToDouble(NumberOfSets) * Convert.ToDouble(NumberOfItems))));
|
|
}
|
|
|
|
[NotMapped]
|
|
[Display(Name = "RVC")]
|
|
public double DifferenceInPrice
|
|
{
|
|
get => SellingPrice - (MaterialPrice + WorkPrice);
|
|
set => SellingPrice = Convert.ToSingle(value + (MaterialPrice + WorkPrice));
|
|
}
|
|
|
|
[NotMapped]
|
|
[Display(Name = "RVC")]
|
|
public double DifferenceInPriceValue => SellingValue - (MaterialValue + WorkValue);
|
|
|
|
[NotMapped]
|
|
[Display(Name = "RVC")]
|
|
public double DifferenceInPricePercentage =>
|
|
(Convert.ToDouble(MaterialValue) + Convert.ToDouble(WorkValue)) == 0
|
|
? 100
|
|
: ((SellingValue / (MaterialValue + WorkValue) - 1) * 100);
|
|
|
|
[Required]
|
|
[Display(Name = "Status")]
|
|
public ProjectPartItemStatus Status { get; set; } = ProjectPartItemStatus.Opened;
|
|
|
|
[Display(Name = "Datum zaključka")]
|
|
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
|
|
public DateTime? FinishedDate { get; set; }
|
|
|
|
[Display(Name = "Datum odpreme")]
|
|
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
|
|
public DateTime? ShippingDate { get; set; }
|
|
|
|
[Display(Name = "Dobavni rok")]
|
|
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
|
|
public DateTime? DeliveryDate { get; set; }
|
|
|
|
[Display(Name = "Spremenjeno")]
|
|
public DateTime DateModified { get; set; } = DateTime.Now;
|
|
|
|
|
|
[Required]
|
|
public int ProjectPartItemNumber { get; set; } = 0;
|
|
|
|
[NotMapped]
|
|
public string ProjectPartNumberFormatted => (ProjectPart != null ? ProjectPart.ProjectPartNumberFormatted : "") + $"-{ProjectPartItemNumber:D4}";
|
|
|
|
// ForeignKey
|
|
public ProjectPart ProjectPart { get; set; }
|
|
public CodeTablePartner MaterialSupplier { get; set; }
|
|
public CodeTableItem Item { get; set; }
|
|
public CodeTableItem Material { get; set; }
|
|
|
|
//Invoice item
|
|
[InverseProperty("ProjectPartItem")]
|
|
public virtual ICollection<InvoiceItem> InvoiceItem { get; set; }
|
|
}
|
|
}
|