From fa25480b08601915aafcfec49a2bdabd0f33e441 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 3 Jul 2025 18:13:13 +0200 Subject: [PATCH] Aggiunta schema DB + batch e item produzione --- Lux.Data/DataLayerContext.cs | 2 + Lux.Data/DbModel/OfferModel.cs | 2 +- Lux.Data/DbModel/ProductionBatchModel.cs | 41 + Lux.Data/DbModel/ProductionItemModel.cs | 79 ++ Lux.Data/Documentazione/DbSchema.png | Bin 0 -> 96840 bytes .../20250703160708_AddProdBatch.Designer.cs | 1231 +++++++++++++++++ .../Migrations/20250703160708_AddProdBatch.cs | 140 ++ .../DataLayerContextModelSnapshot.cs | 93 +- 8 files changed, 1578 insertions(+), 10 deletions(-) create mode 100644 Lux.Data/DbModel/ProductionBatchModel.cs create mode 100644 Lux.Data/DbModel/ProductionItemModel.cs create mode 100644 Lux.Data/Documentazione/DbSchema.png create mode 100644 Lux.Data/Migrations/20250703160708_AddProdBatch.Designer.cs create mode 100644 Lux.Data/Migrations/20250703160708_AddProdBatch.cs diff --git a/Lux.Data/DataLayerContext.cs b/Lux.Data/DataLayerContext.cs index 838857c3..2b0ae5b9 100644 --- a/Lux.Data/DataLayerContext.cs +++ b/Lux.Data/DataLayerContext.cs @@ -55,6 +55,8 @@ namespace Lux.Data public virtual DbSet DbSetJob { get; set; } public virtual DbSet DbSetJobRow { get; set; } public virtual DbSet DbSetJobRowItem { get; set; } + public virtual DbSet DbSetProdBatch { get; set; } + public virtual DbSet DbSetProdItem { get; set; } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); diff --git a/Lux.Data/DbModel/OfferModel.cs b/Lux.Data/DbModel/OfferModel.cs index 6e4d13d2..3857c293 100644 --- a/Lux.Data/DbModel/OfferModel.cs +++ b/Lux.Data/DbModel/OfferModel.cs @@ -71,7 +71,7 @@ namespace Lux.Data.DbModel /// DataOra inserimento /// public DateTime Inserted { get; set; } = DateTime.Now; - + /// /// DataOra ultima modifica /// diff --git a/Lux.Data/DbModel/ProductionBatchModel.cs b/Lux.Data/DbModel/ProductionBatchModel.cs new file mode 100644 index 00000000..0bb16fe9 --- /dev/null +++ b/Lux.Data/DbModel/ProductionBatchModel.cs @@ -0,0 +1,41 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Lux.Data.DbModel +{ + // + // This is here so CodeMaid doesn't reorganize this document + // + + [Table("ProductionBatch")] + public class ProductionBatchModel + { + /// + /// ID dell'articolo + /// + [Key] + public int ProductionBatchID { get; set; } + + /// + /// Descrizione + /// + public string Description { get; set; } = ""; + + /// + /// DataOra prevista esecuzione + /// + public DateTime DueDate { get; set; } = DateTime.Today.AddMonths(1); + + /// + /// DataOra inizio + /// + public DateTime? DateStart { get; set; } = null; + + /// + /// DataOra fine + /// + public DateTime? DateEnd { get; set; } = null; + + + } +} diff --git a/Lux.Data/DbModel/ProductionItemModel.cs b/Lux.Data/DbModel/ProductionItemModel.cs new file mode 100644 index 00000000..485dd66a --- /dev/null +++ b/Lux.Data/DbModel/ProductionItemModel.cs @@ -0,0 +1,79 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Lux.Data.DbModel +{ + // + // This is here so CodeMaid doesn't reorganize this document + // + + [Table("ProductionItem")] + public class ProductionItemModel + { + /// + /// ID dell'articolo + /// + [Key] + public int ProdItemID { get; set; } + + /// + /// Riga Ordine da cui scaturisce + /// + public int OrderRowID { get; set; } + + /// + /// CodArticolo (opzionale) numerico + /// + public int ItemCode { get; set; } = 0; + + /// + /// CodArticolo (opzionale) string + /// + public string ExtItemCode { get; set; } = ""; + + /// + /// Batch di produzione cui è correlato + /// + public int ProductionBatchID { get; set; } = 0; +#if false + /// + /// Cod Fornitore (opzionale) + /// + public string SupplCode { get; set; } = ""; + + /// + /// Descrizione + /// + public string Description { get; set; } = ""; + + /// + /// Costo (standard / senza listini) + /// + public double Cost { get; set; } = 0; + + /// + /// Margine percentuale standard + /// + public double Margin { get; set; } = 0.1; + + /// + /// Unità di Misura + /// + public string UM { get; set; } = "#"; +#endif + + + /// + /// Navigazione OrderRow + /// + [ForeignKey("OrderRowID")] + public virtual OrderRowModel OrderRowNav { get; set; } = null!; + + /// + /// Navigazione Batch Produzione + /// + [ForeignKey("ProductionBatchID")] + public virtual ProductionBatchModel ProductionBatchNav { get; set; } = null!; + + } +} diff --git a/Lux.Data/Documentazione/DbSchema.png b/Lux.Data/Documentazione/DbSchema.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf4de3b2494b758340d78358b133988f0fcf508 GIT binary patch literal 96840 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 literal 0 HcmV?d00001 diff --git a/Lux.Data/Migrations/20250703160708_AddProdBatch.Designer.cs b/Lux.Data/Migrations/20250703160708_AddProdBatch.Designer.cs new file mode 100644 index 00000000..fdfbe69a --- /dev/null +++ b/Lux.Data/Migrations/20250703160708_AddProdBatch.Designer.cs @@ -0,0 +1,1231 @@ +// +using System; +using Lux.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Lux.Data.Migrations +{ + [DbContext(typeof(DataLayerContext))] + [Migration("20250703160708_AddProdBatch")] + partial class AddProdBatch + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.17") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("Lux.Data.DbModel.CustomerModel", b => + { + b.Property("CustomerID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CustomerID")); + + b.Property("CompanyName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FirstName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("VAT") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("CustomerID"); + + b.ToTable("RegCustomer"); + + b.HasData( + new + { + CustomerID = 1, + CompanyName = "", + FirstName = "Customer A", + LastName = "Egalware", + VAT = "1234567890123456" + }, + new + { + CustomerID = 2, + CompanyName = "", + FirstName = "Customer B", + LastName = "User", + VAT = "1234567890123456" + }, + new + { + CustomerID = 3, + CompanyName = "", + FirstName = "Customer C", + LastName = "User Test", + VAT = "1234567890123456" + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.DealerModel", b => + { + b.Property("DealerID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("DealerID")); + + b.Property("CompanyName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FirstName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("VAT") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("DealerID"); + + b.ToTable("RegDealer"); + + b.HasData( + new + { + DealerID = 1, + CompanyName = "Company First", + FirstName = "Dealer A", + LastName = "Egalware", + VAT = "9587362514671527" + }, + new + { + DealerID = 2, + CompanyName = "Company First", + FirstName = "Dealer B", + LastName = "User", + VAT = "9587362514671527" + }, + new + { + DealerID = 3, + CompanyName = "Company Second", + FirstName = "Dealer C", + LastName = "User Test", + VAT = "9587362514671527" + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.ItemModel", b => + { + b.Property("ItemID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ItemID")); + + b.Property("Cost") + .HasColumnType("double"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ExtItemCode") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IsService") + .HasColumnType("tinyint(1)"); + + b.Property("ItemCode") + .HasColumnType("int"); + + b.Property("Margin") + .HasColumnType("double"); + + b.Property("SupplCode") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UM") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("ItemID"); + + b.ToTable("RegItem"); + + b.HasData( + new + { + ItemID = 1, + Cost = 50.0, + Description = "Barra di legno 80x120", + ExtItemCode = "", + IsService = false, + ItemCode = 0, + Margin = 0.29999999999999999, + SupplCode = "", + UM = "#" + }, + new + { + ItemID = 2, + Cost = 35.0, + Description = "Vernice trasparente", + ExtItemCode = "", + IsService = false, + ItemCode = 0, + Margin = 0.29999999999999999, + SupplCode = "", + UM = "#" + }, + new + { + ItemID = 3, + Cost = 1.0, + Description = "Ferramenta", + ExtItemCode = "", + IsService = false, + ItemCode = 0, + Margin = 0.29999999999999999, + SupplCode = "", + UM = "#" + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.JobModel", b => + { + b.Property("JobID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("JobID")); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("JobID"); + + b.ToTable("JobList"); + + b.HasData( + new + { + JobID = 1, + Description = "Rivendita / servizi" + }, + new + { + JobID = 2, + Description = "Serramento Completo Legno su linea Saomad e installatore interno" + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.JobRowItemModel", b => + { + b.Property("JobRowItemID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("JobRowItemID")); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Index") + .HasColumnType("int"); + + b.Property("ItemID") + .HasColumnType("int"); + + b.Property("JobRowID") + .HasColumnType("int"); + + b.Property("Qty") + .HasColumnType("double"); + + b.HasKey("JobRowItemID"); + + b.HasIndex("ItemID"); + + b.HasIndex("JobRowID"); + + b.ToTable("JobRowItemList"); + + b.HasData( + new + { + JobRowItemID = 1, + Description = "Grezzo legno abete", + Index = 1, + ItemID = 1, + JobRowID = 1, + Qty = 4.5 + }, + new + { + JobRowItemID = 2, + Description = "Vernice trasparente standard 1L", + Index = 2, + ItemID = 2, + JobRowID = 4, + Qty = 1.0 + }, + new + { + JobRowItemID = 3, + Description = "Ferramenta AGB - rif. AGFD.00000.00000", + Index = 3, + ItemID = 3, + JobRowID = 5, + Qty = 1.0 + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.JobRowModel", b => + { + b.Property("JobRowID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("JobRowID")); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Index") + .HasColumnType("int"); + + b.Property("JobID") + .HasColumnType("int"); + + b.Property("PhaseID") + .HasColumnType("int"); + + b.Property("Qty") + .HasColumnType("double"); + + b.Property("ResourceID") + .HasColumnType("int"); + + b.HasKey("JobRowID"); + + b.HasIndex("JobID"); + + b.HasIndex("PhaseID"); + + b.HasIndex("ResourceID"); + + b.ToTable("JobRowList"); + + b.HasData( + new + { + JobRowID = 1, + Description = "", + Index = 1, + JobID = 2, + PhaseID = 1, + Qty = 1.0, + ResourceID = 1 + }, + new + { + JobRowID = 2, + Description = "", + Index = 2, + JobID = 2, + PhaseID = 2, + Qty = 1.0, + ResourceID = 2 + }, + new + { + JobRowID = 3, + Description = "", + Index = 3, + JobID = 2, + PhaseID = 4, + Qty = 1.0, + ResourceID = 6 + }, + new + { + JobRowID = 4, + Description = "", + Index = 4, + JobID = 2, + PhaseID = 3, + Qty = 1.0, + ResourceID = 4 + }, + new + { + JobRowID = 5, + Description = "", + Index = 5, + JobID = 2, + PhaseID = 5, + Qty = 1.0, + ResourceID = 6 + }, + new + { + JobRowID = 6, + Description = "", + Index = 6, + JobID = 2, + PhaseID = 6, + Qty = 1.0, + ResourceID = 7 + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.OfferModel", b => + { + b.Property("OfferID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("OfferID")); + + b.Property("CustomerID") + .HasColumnType("int"); + + b.Property("DealerID") + .HasColumnType("int"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Inserted") + .HasColumnType("datetime(6)"); + + b.Property("Modified") + .HasColumnType("datetime(6)"); + + b.Property("OffertState") + .HasColumnType("int"); + + b.Property("RefNum") + .HasColumnType("int"); + + b.Property("RefRev") + .HasColumnType("int"); + + b.Property("RefYear") + .HasColumnType("int"); + + b.Property("ValidUntil") + .HasColumnType("datetime(6)"); + + b.HasKey("OfferID"); + + b.HasIndex("CustomerID"); + + b.HasIndex("DealerID"); + + b.ToTable("Offer"); + + b.HasData( + new + { + OfferID = 1, + CustomerID = 2, + DealerID = 2, + Description = "Offerta per tre serramenti", + Inserted = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4269), + Modified = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4271), + OffertState = 0, + RefNum = 1, + RefRev = 1, + RefYear = 2024, + ValidUntil = new DateTime(2025, 8, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4265) + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.OfferRowModel", b => + { + b.Property("OfferRowID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("OfferRowID")); + + b.Property("Cost") + .HasColumnType("double"); + + b.Property("Inserted") + .HasColumnType("datetime(6)"); + + b.Property("ItemSPP") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Modified") + .HasColumnType("datetime(6)"); + + b.Property("Note") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("OfferID") + .HasColumnType("int"); + + b.Property("Qty") + .HasColumnType("double"); + + b.Property("RowNum") + .HasColumnType("int"); + + b.Property("SellingItemID") + .HasColumnType("int"); + + b.Property("SerStruct") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("OfferRowID"); + + b.HasIndex("OfferID"); + + b.HasIndex("SellingItemID"); + + b.ToTable("OfferRowList"); + + b.HasData( + new + { + OfferRowID = 1, + Cost = 950.0, + Inserted = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4291), + ItemSPP = "{}", + Modified = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4293), + Note = "Finestra anta singola 2025", + OfferID = 1, + Qty = 3.0, + RowNum = 1, + SellingItemID = 1, + SerStruct = "{}" + }, + new + { + OfferRowID = 2, + Cost = 160.0, + Inserted = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4300), + ItemSPP = "{}", + Modified = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4302), + Note = "Persiana per Finestra anta singola 2025", + OfferID = 1, + Qty = 3.0, + RowNum = 1, + SellingItemID = 2, + SerStruct = "{}" + }, + new + { + OfferRowID = 3, + Cost = 200.0, + Inserted = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4307), + ItemSPP = "{}", + Modified = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4309), + Note = "Installazione serramento", + OfferID = 1, + Qty = 3.0, + RowNum = 1, + SellingItemID = 3, + SerStruct = "{}" + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.OrderModel", b => + { + b.Property("OrderID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("OrderID")); + + b.Property("CustomerID") + .HasColumnType("int"); + + b.Property("DealerID") + .HasColumnType("int"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Inserted") + .HasColumnType("datetime(6)"); + + b.Property("Modified") + .HasColumnType("datetime(6)"); + + b.Property("OfferID") + .HasColumnType("int"); + + b.Property("OffertState") + .HasColumnType("int"); + + b.Property("RefNum") + .HasColumnType("int"); + + b.Property("RefRev") + .HasColumnType("int"); + + b.Property("RefYear") + .HasColumnType("int"); + + b.Property("ValidUntil") + .HasColumnType("datetime(6)"); + + b.HasKey("OrderID"); + + b.HasIndex("CustomerID"); + + b.HasIndex("DealerID"); + + b.HasIndex("OfferID"); + + b.ToTable("Order"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.OrderRowModel", b => + { + b.Property("OrderRowID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("OrderRowID")); + + b.Property("Cost") + .HasColumnType("double"); + + b.Property("Inserted") + .HasColumnType("datetime(6)"); + + b.Property("ItemSPP") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Modified") + .HasColumnType("datetime(6)"); + + b.Property("Note") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("OrderID") + .HasColumnType("int"); + + b.Property("Qty") + .HasColumnType("double"); + + b.Property("RowNum") + .HasColumnType("int"); + + b.Property("SellingItemID") + .HasColumnType("int"); + + b.Property("SerStruct") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("OrderRowID"); + + b.HasIndex("OrderID"); + + b.HasIndex("SellingItemID"); + + b.ToTable("OrderRowList"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.PhaseModel", b => + { + b.Property("PhaseID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("PhaseID")); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("PhaseID"); + + b.ToTable("RegPhase"); + + b.HasData( + new + { + PhaseID = 1, + Description = "Taglio tronchetti" + }, + new + { + PhaseID = 2, + Description = "Lavorazione pezzi serramento" + }, + new + { + PhaseID = 3, + Description = "Verniciatura" + }, + new + { + PhaseID = 4, + Description = "Assemblaggio completo" + }, + new + { + PhaseID = 5, + Description = "Assemblaggio Ferramenta" + }, + new + { + PhaseID = 6, + Description = "Installazione e posa in opera" + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.ProductionBatchModel", b => + { + b.Property("ProductionBatchID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProductionBatchID")); + + b.Property("DateEnd") + .HasColumnType("datetime(6)"); + + b.Property("DateStart") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("DueDate") + .HasColumnType("datetime(6)"); + + b.HasKey("ProductionBatchID"); + + b.ToTable("ProductionBatch"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.ProductionItemModel", b => + { + b.Property("ProdItemID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProdItemID")); + + b.Property("ExtItemCode") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ItemCode") + .HasColumnType("int"); + + b.Property("OrderRowID") + .HasColumnType("int"); + + b.Property("ProductionBatchID") + .HasColumnType("int"); + + b.HasKey("ProdItemID"); + + b.HasIndex("OrderRowID"); + + b.HasIndex("ProductionBatchID"); + + b.ToTable("ProductionItem"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.ResourceModel", b => + { + b.Property("ResourceID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ResourceID")); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IsAsset") + .HasColumnType("tinyint(1)"); + + b.Property("IsHuman") + .HasColumnType("tinyint(1)"); + + b.Property("UM") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UnitCost") + .HasColumnType("double"); + + b.HasKey("ResourceID"); + + b.ToTable("RegResource"); + + b.HasData( + new + { + ResourceID = 1, + Description = "Sezionatrice", + IsAsset = true, + IsHuman = false, + UM = "€/h", + UnitCost = 15.0 + }, + new + { + ResourceID = 2, + Description = "Linea SAOMAD WoodPecker Just 3500", + IsAsset = true, + IsHuman = false, + UM = "€/h", + UnitCost = 540.0 + }, + new + { + ResourceID = 3, + Description = "Linea Pantografo", + IsAsset = true, + IsHuman = false, + UM = "€/h", + UnitCost = 250.0 + }, + new + { + ResourceID = 4, + Description = "Stazione Verniciatura", + IsAsset = true, + IsHuman = false, + UM = "€/h", + UnitCost = 10.0 + }, + new + { + ResourceID = 5, + Description = "Verniciatura Manuale", + IsAsset = false, + IsHuman = true, + UM = "€/h", + UnitCost = 40.0 + }, + new + { + ResourceID = 6, + Description = "Montaggio Manuale", + IsAsset = false, + IsHuman = true, + UM = "€/h", + UnitCost = 40.0 + }, + new + { + ResourceID = 7, + Description = "Installatore", + IsAsset = false, + IsHuman = true, + UM = "€/h", + UnitCost = 40.0 + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.SellingItemModel", b => + { + b.Property("SellingItemID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("SellingItemID")); + + b.Property("Cost") + .HasColumnType("double"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ExtItemCode") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IsService") + .HasColumnType("tinyint(1)"); + + b.Property("ItemCode") + .HasColumnType("int"); + + b.Property("ItemSPP") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("JobID") + .HasColumnType("int"); + + b.Property("Margin") + .HasColumnType("double"); + + b.Property("SerStruct") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("SupplCode") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UM") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("SellingItemID"); + + b.HasIndex("JobID"); + + b.ToTable("SellingItem"); + + b.HasData( + new + { + SellingItemID = 1, + Cost = 820.0, + Description = "Finestra anta Singola", + ExtItemCode = "", + IsService = false, + ItemCode = 0, + ItemSPP = "", + JobID = 2, + Margin = 0.20000000000000001, + SerStruct = "", + SupplCode = "", + UM = "#" + }, + new + { + SellingItemID = 2, + Cost = 150.0, + Description = "Persiana anta singola", + ExtItemCode = "", + IsService = false, + ItemCode = 0, + ItemSPP = "", + JobID = 1, + Margin = 0.10000000000000001, + SerStruct = "", + SupplCode = "", + UM = "#" + }, + new + { + SellingItemID = 3, + Cost = 200.0, + Description = "Installazione", + ExtItemCode = "", + IsService = true, + ItemCode = 0, + ItemSPP = "", + JobID = 1, + Margin = 0.29999999999999999, + SerStruct = "", + SupplCode = "", + UM = "#" + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.SupplierModel", b => + { + b.Property("SupplierID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("SupplierID")); + + b.Property("CompanyName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FirstName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("VAT") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("SupplierID"); + + b.ToTable("RegSupplier"); + + b.HasData( + new + { + SupplierID = 1, + CompanyName = "Company One", + FirstName = "Supplier A", + LastName = "Egalware", + VAT = "7294857103879254" + }, + new + { + SupplierID = 2, + CompanyName = "Company Two", + FirstName = "Supplier B", + LastName = "User", + VAT = "7294857103879254" + }, + new + { + SupplierID = 3, + CompanyName = "Company Two", + FirstName = "Supplier C", + LastName = "User Test", + VAT = "7294857103879254" + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.TagsModel", b => + { + b.Property("TagID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("TagID")); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("TagID"); + + b.ToTable("RegTags"); + + b.HasData( + new + { + TagID = 1, + Description = "Tag 01" + }, + new + { + TagID = 2, + Description = "Tag 02" + }, + new + { + TagID = 3, + Description = "Tag 03" + }, + new + { + TagID = 4, + Description = "Tag 04" + }, + new + { + TagID = 5, + Description = "Tag 05" + }); + }); + + modelBuilder.Entity("Lux.Data.DbModel.JobRowItemModel", b => + { + b.HasOne("Lux.Data.DbModel.ItemModel", "ItemNav") + .WithMany() + .HasForeignKey("ItemID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.JobRowModel", "JobRowNav") + .WithMany() + .HasForeignKey("JobRowID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("ItemNav"); + + b.Navigation("JobRowNav"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.JobRowModel", b => + { + b.HasOne("Lux.Data.DbModel.JobModel", "JobNav") + .WithMany() + .HasForeignKey("JobID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.PhaseModel", "PhaseNav") + .WithMany() + .HasForeignKey("PhaseID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.ResourceModel", "resourceNav") + .WithMany() + .HasForeignKey("ResourceID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("JobNav"); + + b.Navigation("PhaseNav"); + + b.Navigation("resourceNav"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.OfferModel", b => + { + b.HasOne("Lux.Data.DbModel.CustomerModel", "CustomerNav") + .WithMany() + .HasForeignKey("CustomerID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.DealerModel", "DealerNav") + .WithMany() + .HasForeignKey("DealerID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("CustomerNav"); + + b.Navigation("DealerNav"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.OfferRowModel", b => + { + b.HasOne("Lux.Data.DbModel.OfferModel", "OfferNav") + .WithMany() + .HasForeignKey("OfferID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.SellingItemModel", "SellingItemNav") + .WithMany() + .HasForeignKey("SellingItemID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("OfferNav"); + + b.Navigation("SellingItemNav"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.OrderModel", b => + { + b.HasOne("Lux.Data.DbModel.CustomerModel", "CustomerNav") + .WithMany() + .HasForeignKey("CustomerID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.DealerModel", "DealerNav") + .WithMany() + .HasForeignKey("DealerID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.OfferModel", "OfferNav") + .WithMany() + .HasForeignKey("OfferID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("CustomerNav"); + + b.Navigation("DealerNav"); + + b.Navigation("OfferNav"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.OrderRowModel", b => + { + b.HasOne("Lux.Data.DbModel.OrderModel", "OrderNav") + .WithMany() + .HasForeignKey("OrderID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.SellingItemModel", "SellingItemNav") + .WithMany() + .HasForeignKey("SellingItemID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("OrderNav"); + + b.Navigation("SellingItemNav"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.ProductionItemModel", b => + { + b.HasOne("Lux.Data.DbModel.OrderRowModel", "OrderRowNav") + .WithMany() + .HasForeignKey("OrderRowID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.ProductionBatchModel", "ProductionBatchNav") + .WithMany() + .HasForeignKey("ProductionBatchID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("OrderRowNav"); + + b.Navigation("ProductionBatchNav"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.SellingItemModel", b => + { + b.HasOne("Lux.Data.DbModel.JobModel", "JobNav") + .WithMany() + .HasForeignKey("JobID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("JobNav"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Lux.Data/Migrations/20250703160708_AddProdBatch.cs b/Lux.Data/Migrations/20250703160708_AddProdBatch.cs new file mode 100644 index 00000000..c088151e --- /dev/null +++ b/Lux.Data/Migrations/20250703160708_AddProdBatch.cs @@ -0,0 +1,140 @@ +using System; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Lux.Data.Migrations +{ + /// + public partial class AddProdBatch : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "ProductionBatch", + columns: table => new + { + ProductionBatchID = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + DueDate = table.Column(type: "datetime(6)", nullable: false), + DateStart = table.Column(type: "datetime(6)", nullable: true), + DateEnd = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ProductionBatch", x => x.ProductionBatchID); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "ProductionItem", + columns: table => new + { + ProdItemID = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + OrderRowID = table.Column(type: "int", nullable: false), + ItemCode = table.Column(type: "int", nullable: false), + ExtItemCode = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ProductionBatchID = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProductionItem", x => x.ProdItemID); + table.ForeignKey( + name: "FK_ProductionItem_OrderRowList_OrderRowID", + column: x => x.OrderRowID, + principalTable: "OrderRowList", + principalColumn: "OrderRowID", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_ProductionItem_ProductionBatch_ProductionBatchID", + column: x => x.ProductionBatchID, + principalTable: "ProductionBatch", + principalColumn: "ProductionBatchID", + onDelete: ReferentialAction.Restrict); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.UpdateData( + table: "Offer", + keyColumn: "OfferID", + keyValue: 1, + columns: new[] { "Inserted", "Modified", "ValidUntil" }, + values: new object[] { new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4269), new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4271), new DateTime(2025, 8, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4265) }); + + migrationBuilder.UpdateData( + table: "OfferRowList", + keyColumn: "OfferRowID", + keyValue: 1, + columns: new[] { "Inserted", "Modified" }, + values: new object[] { new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4291), new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4293) }); + + migrationBuilder.UpdateData( + table: "OfferRowList", + keyColumn: "OfferRowID", + keyValue: 2, + columns: new[] { "Inserted", "Modified" }, + values: new object[] { new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4300), new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4302) }); + + migrationBuilder.UpdateData( + table: "OfferRowList", + keyColumn: "OfferRowID", + keyValue: 3, + columns: new[] { "Inserted", "Modified" }, + values: new object[] { new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4307), new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4309) }); + + migrationBuilder.CreateIndex( + name: "IX_ProductionItem_OrderRowID", + table: "ProductionItem", + column: "OrderRowID"); + + migrationBuilder.CreateIndex( + name: "IX_ProductionItem_ProductionBatchID", + table: "ProductionItem", + column: "ProductionBatchID"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ProductionItem"); + + migrationBuilder.DropTable( + name: "ProductionBatch"); + + migrationBuilder.UpdateData( + table: "Offer", + keyColumn: "OfferID", + keyValue: 1, + columns: new[] { "Inserted", "Modified", "ValidUntil" }, + values: new object[] { new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9450), new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9452), new DateTime(2025, 8, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9439) }); + + migrationBuilder.UpdateData( + table: "OfferRowList", + keyColumn: "OfferRowID", + keyValue: 1, + columns: new[] { "Inserted", "Modified" }, + values: new object[] { new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9478), new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9479) }); + + migrationBuilder.UpdateData( + table: "OfferRowList", + keyColumn: "OfferRowID", + keyValue: 2, + columns: new[] { "Inserted", "Modified" }, + values: new object[] { new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9486), new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9487) }); + + migrationBuilder.UpdateData( + table: "OfferRowList", + keyColumn: "OfferRowID", + keyValue: 3, + columns: new[] { "Inserted", "Modified" }, + values: new object[] { new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9494), new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9496) }); + } + } +} diff --git a/Lux.Data/Migrations/DataLayerContextModelSnapshot.cs b/Lux.Data/Migrations/DataLayerContextModelSnapshot.cs index b8900730..51551288 100644 --- a/Lux.Data/Migrations/DataLayerContextModelSnapshot.cs +++ b/Lux.Data/Migrations/DataLayerContextModelSnapshot.cs @@ -456,13 +456,13 @@ namespace Lux.Data.Migrations CustomerID = 2, DealerID = 2, Description = "Offerta per tre serramenti", - Inserted = new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9450), - Modified = new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9452), + Inserted = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4269), + Modified = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4271), OffertState = 0, RefNum = 1, RefRev = 1, RefYear = 2024, - ValidUntil = new DateTime(2025, 8, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9439) + ValidUntil = new DateTime(2025, 8, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4265) }); }); @@ -520,9 +520,9 @@ namespace Lux.Data.Migrations { OfferRowID = 1, Cost = 950.0, - Inserted = new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9478), + Inserted = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4291), ItemSPP = "{}", - Modified = new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9479), + Modified = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4293), Note = "Finestra anta singola 2025", OfferID = 1, Qty = 3.0, @@ -534,9 +534,9 @@ namespace Lux.Data.Migrations { OfferRowID = 2, Cost = 160.0, - Inserted = new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9486), + Inserted = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4300), ItemSPP = "{}", - Modified = new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9487), + Modified = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4302), Note = "Persiana per Finestra anta singola 2025", OfferID = 1, Qty = 3.0, @@ -548,9 +548,9 @@ namespace Lux.Data.Migrations { OfferRowID = 3, Cost = 200.0, - Inserted = new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9494), + Inserted = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4307), ItemSPP = "{}", - Modified = new DateTime(2025, 7, 3, 17, 38, 38, 470, DateTimeKind.Local).AddTicks(9496), + Modified = new DateTime(2025, 7, 3, 18, 7, 7, 847, DateTimeKind.Local).AddTicks(4309), Note = "Installazione serramento", OfferID = 1, Qty = 3.0, @@ -712,6 +712,62 @@ namespace Lux.Data.Migrations }); }); + modelBuilder.Entity("Lux.Data.DbModel.ProductionBatchModel", b => + { + b.Property("ProductionBatchID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProductionBatchID")); + + b.Property("DateEnd") + .HasColumnType("datetime(6)"); + + b.Property("DateStart") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("DueDate") + .HasColumnType("datetime(6)"); + + b.HasKey("ProductionBatchID"); + + b.ToTable("ProductionBatch"); + }); + + modelBuilder.Entity("Lux.Data.DbModel.ProductionItemModel", b => + { + b.Property("ProdItemID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProdItemID")); + + b.Property("ExtItemCode") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ItemCode") + .HasColumnType("int"); + + b.Property("OrderRowID") + .HasColumnType("int"); + + b.Property("ProductionBatchID") + .HasColumnType("int"); + + b.HasKey("ProdItemID"); + + b.HasIndex("OrderRowID"); + + b.HasIndex("ProductionBatchID"); + + b.ToTable("ProductionItem"); + }); + modelBuilder.Entity("Lux.Data.DbModel.ResourceModel", b => { b.Property("ResourceID") @@ -1137,6 +1193,25 @@ namespace Lux.Data.Migrations b.Navigation("SellingItemNav"); }); + modelBuilder.Entity("Lux.Data.DbModel.ProductionItemModel", b => + { + b.HasOne("Lux.Data.DbModel.OrderRowModel", "OrderRowNav") + .WithMany() + .HasForeignKey("OrderRowID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Lux.Data.DbModel.ProductionBatchModel", "ProductionBatchNav") + .WithMany() + .HasForeignKey("ProductionBatchID") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("OrderRowNav"); + + b.Navigation("ProductionBatchNav"); + }); + modelBuilder.Entity("Lux.Data.DbModel.SellingItemModel", b => { b.HasOne("Lux.Data.DbModel.JobModel", "JobNav")