diff --git a/EgwCoreLib.Lux.Data/Controllers/LuxController.cs b/EgwCoreLib.Lux.Data/Controllers/LuxController.cs
index 374f8880..6c66ace3 100644
--- a/EgwCoreLib.Lux.Data/Controllers/LuxController.cs
+++ b/EgwCoreLib.Lux.Data/Controllers/LuxController.cs
@@ -1730,7 +1730,7 @@ namespace EgwCoreLib.Lux.Data.Controllers
}
///
- /// esegue il cloning completo di un offerta e di TUTTE le relative righe di offerta...
+ /// Esegue il cloning completo di un offerta e di TUTTE le relative righe di offerta...
///
///
///
@@ -1742,14 +1742,15 @@ namespace EgwCoreLib.Lux.Data.Controllers
{
try
{
- DateTime adesso = DateTime.Now;
+ DateTime adesso = DateTime.Now;
// recupero offerta...
var currRec = dbCtx
.DbSetOffer
.Where(x => x.OfferID == rec2clone.OfferID)
.Include(x => x.OfferRowNav)
.FirstOrDefault();
- // ultimo record x calcolo refNum
+
+ // ultimo record OFFERTA x calcolo refNum
var lastRec = dbCtx
.DbSetOffer
.Where(x => x.RefYear == adesso.Year)
@@ -1832,6 +1833,118 @@ namespace EgwCoreLib.Lux.Data.Controllers
return answ;
}
+
+ ///
+ /// Genera un nuovo record ordine come cloning completo di un offerta e di TUTTE le relative righe di offerta + rif offerta
+ ///
+ ///
+ ///
+ internal async Task OrderFromOffer(OfferModel rec2clone)
+ {
+ bool answ = false;
+ //using (DataLayerContext dbCtx = new DataLayerContext(_config))
+ using (DataLayerContext dbCtx = new DataLayerContext())
+ {
+ try
+ {
+ DateTime adesso = DateTime.Now;
+ // recupero offerta...
+ var currRec = dbCtx
+ .DbSetOffer
+ .Where(x => x.OfferID == rec2clone.OfferID)
+ .Include(x => x.OfferRowNav)
+ .FirstOrDefault();
+
+ // ultimo record ORDINE x calcolo refNum
+ var lastRec = dbCtx
+ .DbSetOrder
+ .Where(x => x.RefYear == adesso.Year)
+ .OrderByDescending(x => x.RefNum)
+ .FirstOrDefault();
+ int newRefNum = lastRec != null ? lastRec.RefNum + 1 : 1;
+
+ // se trovo --> duplico!
+ if (currRec != null)
+ {
+ // recupero ultimo num offerta dell'anno corrente...
+ OrderModel newRec = new OrderModel()
+ {
+ ConsNote = rec2clone.ConsNote,
+ CustomerID = rec2clone.CustomerID,
+ DealerID = rec2clone.DealerID,
+ Description = rec2clone.Description,
+ DictPresel = rec2clone.DictPresel,
+ Discount = rec2clone.Discount,
+ DueDateProm = rec2clone.DueDateProm,
+ DueDateReq = rec2clone.DueDateReq,
+ Envir = rec2clone.Envir,
+ Inserted = adesso,
+ Modified = adesso,
+ OfferID = rec2clone.OfferID,
+ RefNum = newRefNum,
+ RefRev = 1,
+ RefYear = adesso.Year,
+ ValidUntil = currRec.ValidUntil,
+ OrderState = OrderStates.Created
+ };
+
+ // sistemo child offer...
+ newRec.OrderRowNav = currRec.OfferRowNav
+ .Select(c => new OrderRowModel()
+ {
+ AwaitBom = c.AwaitBom,
+ AwaitPrice = c.AwaitPrice,
+ BomCost = c.BomCost,
+ BomOk = c.BomOk,
+ BomPrice = c.BomPrice,
+ Envir = c.Envir,
+ FileName = c.FileName,
+ FileResource = c.FileResource,
+ FileSize = c.FileSize,
+ Inserted = adesso,
+ ItemBOM = c.ItemBOM,
+ ItemJCD = c.ItemJCD,
+ ItemOk = c.ItemOk,
+ ItemSteps = c.ItemSteps,
+ ItemTags = c.ItemTags,
+ JobID = c.JobID,
+ Modified = c.Modified,
+ Note = c.Note,
+ Qty = c.Qty,
+ RowNum = c.RowNum,
+ SellingItemID = c.SellingItemID,
+ SerStruct = c.SerStruct,
+ StepCost = c.StepCost,
+ StepFlowTime = c.StepFlowTime,
+ StepLeadTime = c.StepLeadTime,
+ StepPrice = c.StepPrice
+ })
+ .ToList();
+ // sistemo UID...
+ foreach (var item in newRec.OrderRowNav)
+ {
+ item.OrderRowUID = item.OrderRowCode;
+ }
+ // infine aggiungo riga ordine e relativi child
+ dbCtx.DbSetOrder.Add(newRec);
+
+ // genero la lista record delle parts (solo come ID correlati...)
+
+
+ }
+
+ // salvo TUTTI i cambiamenti...
+ var result = await dbCtx.SaveChangesAsync();
+ answ = result > 0;
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione durante OfferClone{Environment.NewLine}{exc}");
+ }
+ }
+ return answ;
+ }
+
///
/// Elenco completo offerte da DB
///
diff --git a/EgwCoreLib.Lux.Data/DbModel/Sales/OfferModel.cs b/EgwCoreLib.Lux.Data/DbModel/Sales/OfferModel.cs
index 56a33300..561496eb 100644
--- a/EgwCoreLib.Lux.Data/DbModel/Sales/OfferModel.cs
+++ b/EgwCoreLib.Lux.Data/DbModel/Sales/OfferModel.cs
@@ -117,6 +117,16 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
{
get => OfferRowNav?.Sum(x => x.Qty) ?? 0;
}
+
+ ///
+ /// Numero ProdItem compresi
+ ///
+ [NotMapped]
+ public double NumProdItems
+ {
+ get => OfferRowNav?.Sum(x => x.ProdItemQty) ?? 0;
+ }
+
///
/// Numero Item compresi
///
diff --git a/EgwCoreLib.Lux.Data/DbModel/Sales/OfferRowModel.cs b/EgwCoreLib.Lux.Data/DbModel/Sales/OfferRowModel.cs
index 780eab9c..72f7be9d 100644
--- a/EgwCoreLib.Lux.Data/DbModel/Sales/OfferRowModel.cs
+++ b/EgwCoreLib.Lux.Data/DbModel/Sales/OfferRowModel.cs
@@ -170,6 +170,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
///
public string ItemTags { get; set; } = "";
+ ///
+ /// Quantità degli item da produrre (es parti del serramento, singole parti BTL...)
+ ///
+ public int ProdItemQty { get; set; } = 0;
+
///
/// Riferimento JobID Ciclo corrente (tra quelli ammissibili dato ItemJCD)
///
diff --git a/EgwCoreLib.Lux.Data/DbModel/Sales/OrderModel.cs b/EgwCoreLib.Lux.Data/DbModel/Sales/OrderModel.cs
index a6444a46..61483032 100644
--- a/EgwCoreLib.Lux.Data/DbModel/Sales/OrderModel.cs
+++ b/EgwCoreLib.Lux.Data/DbModel/Sales/OrderModel.cs
@@ -113,6 +113,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// Sconto applicato (deve essere < del MAX)
///
public double Discount { get; set; } = 0;
+
///
/// Numero Item compresi
///
@@ -121,6 +122,16 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
{
get => OrderRowNav?.Sum(x => x.Qty) ?? 0;
}
+
+ ///
+ /// Numero ProdItem compresi
+ ///
+ [NotMapped]
+ public double NumProdItems
+ {
+ get => OrderRowNav?.Sum(x => x.ProdItemQty) ?? 0;
+ }
+
///
/// Numero Item compresi
///
@@ -129,6 +140,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
{
get => OrderRowNav?.Count ?? 0;
}
+
///
/// Costo totale offerta (rock bottom)
///
diff --git a/EgwCoreLib.Lux.Data/DbModel/Sales/OrderRowModel.cs b/EgwCoreLib.Lux.Data/DbModel/Sales/OrderRowModel.cs
index 39131ab8..b9dfb216 100644
--- a/EgwCoreLib.Lux.Data/DbModel/Sales/OrderRowModel.cs
+++ b/EgwCoreLib.Lux.Data/DbModel/Sales/OrderRowModel.cs
@@ -1,4 +1,5 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
+using EgwCoreLib.Lux.Data.DbModel.Production;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
@@ -171,6 +172,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
///
public string ItemTags { get; set; } = "";
+ ///
+ /// Quantità degli item da produrre (es parti del serramento, singole parti BTL...)
+ ///
+ public int ProdItemQty { get; set; } = 0;
+
///
/// Riferimento JobID Ciclo corrente (tra quelli ammissibili dato ItemJCD)
///
@@ -236,5 +242,10 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
///
[ForeignKey("SellingItemID")]
public virtual SellingItemModel? SellingItemNav { get; set; }
+
+ ///
+ /// Navigazione alle righe ProdItem
+ ///
+ public virtual ICollection ProdItemNav { get; set; } = new List();
}
}
diff --git a/EgwCoreLib.Lux.Data/Migrations/20251114171407_AddProdItemQty.Designer.cs b/EgwCoreLib.Lux.Data/Migrations/20251114171407_AddProdItemQty.Designer.cs
new file mode 100644
index 00000000..9c75b049
--- /dev/null
+++ b/EgwCoreLib.Lux.Data/Migrations/20251114171407_AddProdItemQty.Designer.cs
@@ -0,0 +1,3575 @@
+//
+using System;
+using EgwCoreLib.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 EgwCoreLib.Lux.Data.Migrations
+{
+ [DbContext(typeof(DataLayerContext))]
+ [Migration("20251114171407_AddProdItemQty")]
+ partial class AddProdItemQty
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.21")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Config.EnvirParamModel", b =>
+ {
+ b.Property("EnvirID")
+ .HasColumnType("int");
+
+ b.Property("SerStrucKey")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("EnvirID");
+
+ b.ToTable("conf_envir");
+
+ b.HasData(
+ new
+ {
+ EnvirID = 1,
+ SerStrucKey = "SerializedData"
+ },
+ new
+ {
+ EnvirID = 2,
+ SerStrucKey = "SerializedData"
+ },
+ new
+ {
+ EnvirID = 4,
+ SerStrucKey = "SerializedData"
+ },
+ new
+ {
+ EnvirID = 3,
+ SerStrucKey = "SerializedData"
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Config.GlassModel", b =>
+ {
+ b.Property("GlassID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("GlassID"));
+
+ b.Property("Code")
+ .HasColumnType("longtext");
+
+ b.Property("Description")
+ .HasColumnType("longtext");
+
+ b.Property("Thickness")
+ .HasColumnType("double");
+
+ b.HasKey("GlassID");
+
+ b.ToTable("conf_glass");
+
+ b.HasData(
+ new
+ {
+ GlassID = 1,
+ Code = "0001",
+ Description = "Vetro BE 2S 4/12/4",
+ Thickness = 20.0
+ },
+ new
+ {
+ GlassID = 2,
+ Code = "0002",
+ Description = "Vetro BE 2S 4/16/4",
+ Thickness = 24.0
+ },
+ new
+ {
+ GlassID = 3,
+ Code = "0003",
+ Description = "Vetro BE 3S 4/12/4/12/4",
+ Thickness = 36.0
+ },
+ new
+ {
+ GlassID = 4,
+ Code = "0004",
+ Description = "Vetro BE 3S 4/16/4/16/4",
+ Thickness = 44.0
+ },
+ new
+ {
+ GlassID = 5,
+ Code = "0005",
+ Description = "Vetro BE 2S 4T/12/4T",
+ Thickness = 20.0
+ },
+ new
+ {
+ GlassID = 6,
+ Code = "0006",
+ Description = "Vetro BE 2S 4T/16/4T",
+ Thickness = 24.0
+ },
+ new
+ {
+ GlassID = 7,
+ Code = "0007",
+ Description = "Vetro BE 3S 4T/12/4T/12/4T",
+ Thickness = 36.0
+ },
+ new
+ {
+ GlassID = 8,
+ Code = "0008",
+ Description = "Vetro BE 3S 4T/16/4T/16/4T",
+ Thickness = 44.0
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Config.ProfileModel", b =>
+ {
+ b.Property("ProfileID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProfileID"));
+
+ b.Property("Code")
+ .HasColumnType("longtext");
+
+ b.Property("Description")
+ .HasColumnType("longtext");
+
+ b.Property("Thickness")
+ .HasColumnType("double");
+
+ b.HasKey("ProfileID");
+
+ b.ToTable("conf_profile");
+
+ b.HasData(
+ new
+ {
+ ProfileID = 1,
+ Code = "0001",
+ Description = "Profilo60",
+ Thickness = 60.0
+ },
+ new
+ {
+ ProfileID = 2,
+ Code = "0002",
+ Description = "Profilo78",
+ Thickness = 78.0
+ },
+ new
+ {
+ ProfileID = 3,
+ Code = "0003",
+ Description = "Profilo90",
+ Thickness = 90.0
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Config.WoodModel", b =>
+ {
+ b.Property("WoodID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("WoodID"));
+
+ b.Property("Code")
+ .HasColumnType("longtext");
+
+ b.Property("Description")
+ .HasColumnType("longtext");
+
+ b.Property("Type")
+ .HasColumnType("int");
+
+ b.HasKey("WoodID");
+
+ b.ToTable("conf_wood");
+
+ b.HasData(
+ new
+ {
+ WoodID = 1,
+ Code = "0001",
+ Description = "Abete",
+ Type = 1
+ },
+ new
+ {
+ WoodID = 2,
+ Code = "0002",
+ Description = "Acero",
+ Type = 1
+ },
+ new
+ {
+ WoodID = 3,
+ Code = "0003",
+ Description = "Pino",
+ Type = 2
+ },
+ new
+ {
+ WoodID = 4,
+ Code = "0004",
+ Description = "Tek",
+ Type = 3
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Cost.CostDriverModel", b =>
+ {
+ b.Property("CostDriverID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CostDriverID"));
+
+ b.Property("Descript")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Unit")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("CostDriverID");
+
+ b.ToTable("cost_driver");
+
+ b.HasData(
+ new
+ {
+ CostDriverID = 1,
+ Descript = "Ore lavorate",
+ Name = "WorkHour",
+ Unit = "h"
+ },
+ new
+ {
+ CostDriverID = 2,
+ Descript = "Metri prodotto",
+ Name = "Meter",
+ Unit = "m"
+ },
+ new
+ {
+ CostDriverID = 3,
+ Descript = "Unità prodotto",
+ Name = "Unit",
+ Unit = "#"
+ },
+ new
+ {
+ CostDriverID = 4,
+ Descript = "Volume prodotto",
+ Name = "Volume",
+ Unit = "m3"
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Cost.ResourceModel", b =>
+ {
+ b.Property("ResourceID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ResourceID"));
+
+ b.Property("CodResource")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CostDriverBudget")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("CostDriverID")
+ .HasColumnType("int");
+
+ b.Property("EBTPerc")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("FixedCost")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("LaborCost")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("OverHeadCost")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("OverHeadPerc")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("PriceMargin")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("VariableCost")
+ .HasColumnType("decimal(65,30)");
+
+ b.HasKey("ResourceID");
+
+ b.HasIndex("CostDriverID");
+
+ b.ToTable("cost_resource");
+
+ b.HasData(
+ new
+ {
+ ResourceID = 1,
+ CodResource = "0000",
+ CostDriverBudget = 1m,
+ CostDriverID = 3,
+ EBTPerc = 0.15m,
+ FixedCost = 50m,
+ LaborCost = 100m,
+ Name = "Item Generico",
+ OverHeadCost = 100m,
+ OverHeadPerc = 0.15m,
+ PriceMargin = 0.2m,
+ VariableCost = 50m
+ },
+ new
+ {
+ ResourceID = 2,
+ CodResource = "0010",
+ CostDriverBudget = 2200m,
+ CostDriverID = 3,
+ EBTPerc = 0.15m,
+ FixedCost = 200000m,
+ LaborCost = 200000m,
+ Name = "Serramento (media annua globale)",
+ OverHeadCost = 100000m,
+ OverHeadPerc = 0.15m,
+ PriceMargin = 0.2m,
+ VariableCost = 200000m
+ },
+ new
+ {
+ ResourceID = 3,
+ CodResource = "0110",
+ CostDriverBudget = 880m,
+ CostDriverID = 1,
+ EBTPerc = 0.15m,
+ FixedCost = 12000m,
+ LaborCost = 30m,
+ Name = "Sezionatrice",
+ OverHeadCost = 5000m,
+ OverHeadPerc = 0.15m,
+ PriceMargin = 0.2m,
+ VariableCost = 6000m
+ },
+ new
+ {
+ ResourceID = 4,
+ CodResource = "0120.01",
+ CostDriverBudget = 1760m,
+ CostDriverID = 1,
+ EBTPerc = 0.15m,
+ FixedCost = 100000m,
+ LaborCost = 40m,
+ Name = "Linea SAOMAD WoodPecker Just 3500",
+ OverHeadCost = 15000m,
+ OverHeadPerc = 0.15m,
+ PriceMargin = 0.2m,
+ VariableCost = 30000m
+ },
+ new
+ {
+ ResourceID = 5,
+ CodResource = "0120.02",
+ CostDriverBudget = 1760m,
+ CostDriverID = 1,
+ EBTPerc = 0.15m,
+ FixedCost = 24000m,
+ LaborCost = 35m,
+ Name = "Linea Pantografo",
+ OverHeadCost = 5000m,
+ OverHeadPerc = 0.15m,
+ PriceMargin = 0.2m,
+ VariableCost = 6000m
+ },
+ new
+ {
+ ResourceID = 6,
+ CodResource = "0130.01",
+ CostDriverBudget = 880m,
+ CostDriverID = 1,
+ EBTPerc = 0.15m,
+ FixedCost = 24000m,
+ LaborCost = 30m,
+ Name = "Stazione Verniciatura",
+ OverHeadCost = 3000m,
+ OverHeadPerc = 0.15m,
+ PriceMargin = 0.2m,
+ VariableCost = 6000m
+ },
+ new
+ {
+ ResourceID = 7,
+ CodResource = "0130.02",
+ CostDriverBudget = 220m,
+ CostDriverID = 1,
+ EBTPerc = 0.15m,
+ FixedCost = 6000m,
+ LaborCost = 30m,
+ Name = "Verniciatura Manuale",
+ OverHeadCost = 3000m,
+ OverHeadPerc = 0.15m,
+ PriceMargin = 0.2m,
+ VariableCost = 2000m
+ },
+ new
+ {
+ ResourceID = 8,
+ CodResource = "0140",
+ CostDriverBudget = 3520m,
+ CostDriverID = 1,
+ EBTPerc = 0.15m,
+ FixedCost = 500m,
+ LaborCost = 30m,
+ Name = "Montaggio Manuale",
+ OverHeadCost = 500m,
+ OverHeadPerc = 0.15m,
+ PriceMargin = 0.2m,
+ VariableCost = 500m
+ },
+ new
+ {
+ ResourceID = 9,
+ CodResource = "0150",
+ CostDriverBudget = 3520m,
+ CostDriverID = 1,
+ EBTPerc = 0.15m,
+ FixedCost = 0m,
+ LaborCost = 40m,
+ Name = "Installatore",
+ OverHeadCost = 0m,
+ OverHeadPerc = 0.15m,
+ PriceMargin = 0.2m,
+ VariableCost = 3000m
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Items.ItemGroupModel", b =>
+ {
+ b.Property("CodGroup")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("CodGroup");
+
+ b.ToTable("item_group");
+
+ b.HasData(
+ new
+ {
+ CodGroup = "BeamTrunk",
+ Description = "Barre legno per lavorazione Travi"
+ },
+ new
+ {
+ CodGroup = "WindowTrunk",
+ Description = "Barre legno per lavorazione Finestre"
+ },
+ new
+ {
+ CodGroup = "WindowGlass",
+ Description = "Vetri serramento"
+ },
+ new
+ {
+ CodGroup = "WindowVarnish",
+ Description = "Vernici per legno"
+ },
+ new
+ {
+ CodGroup = "WindowHardware",
+ Description = "Ferramenta serramento"
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Items.ItemModel", b =>
+ {
+ b.Property("ItemID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ItemID"));
+
+ b.Property("CodGroup")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ 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("ItemIDParent")
+ .HasColumnType("int");
+
+ b.Property("ItemType")
+ .HasColumnType("int");
+
+ b.Property("Margin")
+ .HasColumnType("double");
+
+ b.Property("QtyMax")
+ .HasColumnType("double");
+
+ b.Property("QtyMin")
+ .HasColumnType("double");
+
+ b.Property("SupplCode")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("UM")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("ItemID");
+
+ b.HasIndex("CodGroup");
+
+ b.ToTable("item_item");
+
+ b.HasData(
+ new
+ {
+ ItemID = 1,
+ CodGroup = "WindowTrunk",
+ Cost = 20.0,
+ Description = "BARRA-60x80 generica",
+ ExtItemCode = "",
+ IsService = false,
+ ItemCode = 1001,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.29999999999999999,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "BARR.001",
+ UM = "#"
+ },
+ new
+ {
+ ItemID = 2,
+ CodGroup = "WindowTrunk",
+ Cost = 16.5,
+ Description = "Barra 60x80, lunghezza 12m",
+ ExtItemCode = "BARRA-60x80x12000",
+ IsService = false,
+ ItemCode = 1002,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.20999999999999999,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "ABC.00123.12000",
+ UM = "#"
+ },
+ new
+ {
+ ItemID = 3,
+ CodGroup = "WindowTrunk",
+ Cost = 17.5,
+ Description = "Barra 60x80, lunghezza 8m",
+ ExtItemCode = "BARRA-60x80x8000",
+ IsService = false,
+ ItemCode = 1003,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.22,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "ABC.00123.8000",
+ UM = "#"
+ },
+ new
+ {
+ ItemID = 4,
+ CodGroup = "WindowTrunk",
+ Cost = 15.5,
+ Description = "Barra 60x80, lunghezza 16m",
+ ExtItemCode = "BARRA-60x80x16000",
+ IsService = false,
+ ItemCode = 1004,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.20000000000000001,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "ABC.00123.16000",
+ UM = "#"
+ },
+ new
+ {
+ ItemID = 5,
+ CodGroup = "WindowGlass",
+ Cost = 300.0,
+ Description = "Vetro triplo, basso indice termico, 800x1000",
+ ExtItemCode = "VETRO-3L-THERMO-800x1000",
+ IsService = false,
+ ItemCode = 2001,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.20000000000000001,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "V3T.800.1000",
+ UM = "m2"
+ },
+ new
+ {
+ ItemID = 6,
+ CodGroup = "WindowGlass",
+ Cost = 200.0,
+ Description = "Vetro doppio, 800x1000",
+ ExtItemCode = "VETRO-2L-800x1000",
+ IsService = false,
+ ItemCode = 2002,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.14999999999999999,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "V2.800.1000",
+ UM = "m2"
+ },
+ new
+ {
+ ItemID = 7,
+ CodGroup = "WindowGlass",
+ Cost = 250.0,
+ Description = "Vetro triplo, 800x1000",
+ ExtItemCode = "VETRO-3L-800x1000",
+ IsService = false,
+ ItemCode = 2003,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.17999999999999999,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "V3.800.1000",
+ UM = "m2"
+ },
+ new
+ {
+ ItemID = 8,
+ CodGroup = "WindowVarnish",
+ Cost = 20.0,
+ Description = "Vernice trasparente",
+ ExtItemCode = "VERN-TRASP",
+ IsService = false,
+ ItemCode = 3001,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.20000000000000001,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "VT.STD",
+ UM = "l"
+ },
+ new
+ {
+ ItemID = 9,
+ CodGroup = "WindowHardware",
+ Cost = 65.0,
+ Description = "Kit standard completo AGB tipo 001",
+ ExtItemCode = "KIT-001",
+ IsService = false,
+ ItemCode = 5001,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.20000000000000001,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "AGB-KIT-001",
+ UM = "#"
+ },
+ new
+ {
+ ItemID = 10,
+ CodGroup = "WindowHardware",
+ Cost = 10.0,
+ Description = "Cerniera AGB tipo 001",
+ ExtItemCode = "CERN-001",
+ IsService = false,
+ ItemCode = 5002,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.20000000000000001,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "AGB-CERN-001",
+ UM = "#"
+ },
+ new
+ {
+ ItemID = 11,
+ CodGroup = "WindowHardware",
+ Cost = 15.0,
+ Description = "Serratura AGB tipo 001",
+ ExtItemCode = "SERR-001",
+ IsService = false,
+ ItemCode = 5003,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.20000000000000001,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "AGB-SERR-001",
+ UM = "#"
+ },
+ new
+ {
+ ItemID = 12,
+ CodGroup = "WindowHardware",
+ Cost = 25.0,
+ Description = "Maniglia AGB tipo 001",
+ ExtItemCode = "MAN-001",
+ IsService = false,
+ ItemCode = 5004,
+ ItemIDParent = 0,
+ ItemType = 1,
+ Margin = 0.20000000000000001,
+ QtyMax = 0.0,
+ QtyMin = 0.0,
+ SupplCode = "AGB-MAN-001",
+ UM = "#"
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Items.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("Envir")
+ .HasColumnType("int");
+
+ b.Property("ExtItemCode")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("IsService")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("ItemCode")
+ .HasColumnType("int");
+
+ b.Property("ItemSteps")
+ .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("item_selling_item");
+
+ b.HasData(
+ new
+ {
+ SellingItemID = 1,
+ Cost = 500.0,
+ Description = "Finestra Anta Singola",
+ Envir = 1,
+ ExtItemCode = "",
+ IsService = false,
+ ItemCode = 0,
+ ItemSteps = "",
+ JobID = 2,
+ Margin = 0.20000000000000001,
+ SerStruct = "{\"ProfilePath\": \"Profilo78\",\"Material\": \"Pino\",\"ColorMaterial\": \"Black\",\"Glass\": \"Vetro BE 2S 4T/16/4T\",\"AreaList\": [{\"Shape\": \"RECTANGLE\",\"DimensionList\": [{\"Index\": 1,\"Name\": \"Width\",\"Value\": 800.0},{\"Index\": 2,\"Name\": \"Height\",\"Value\": 1200.0}],\"JointList\": [{\"Index\": 1,\"JointType\": \"FULL_H\"},{\"Index\": 2,\"JointType\": \"FULL_H\"},{\"Index\": 3,\"JointType\": \"FULL_H\"},{\"Index\": 4,\"JointType\": \"FULL_H\"}],\"BottomRail\": false,\"BottomRailQty\": 0,\"GroupId\": 1,\"AreaList\": [{\"IsSashVertical\": true,\"SashList\": [{\"SashId\": 1,\"OpeningType\": \"TILTTURN_LEFT\",\"HasHandle\": true,\"Dimension\": 100.0}],\"SashType\": \"NULL\",\"JointList\": [{\"Index\": 1,\"JointType\": \"FULL_H\"},{\"Index\": 2,\"JointType\": \"FULL_H\"},{\"Index\": 3,\"JointType\": \"FULL_H\"},{\"Index\": 4,\"JointType\": \"FULL_H\"}],\"Hardware\": \"000635\",\"HwOptionList\": [{\"Name\": \"Entrata\",\"Value\": \"15\"},{\"Name\": \"LavManigliaPassante\",\"Value\": \"false\"},{\"Name\": \"PosizioneForoCilindro\",\"Value\": \"sotto\"},{\"Name\": \"Deviatore\",\"Value\": \"false\"},{\"Name\": \"ModelloCilindro\",\"Value\": \"c999\"},{\"Name\": \"LavCilindroPassante\",\"Value\": \"false\"},{\"Name\": \"HMan\",\"Value\": \"400\"}],\"GroupId\": 2,\"AreaList\": [{\"FillType\": \"GLASS\",\"GroupId\": 3,\"AreaList\": [],\"AreaType\": \"FILL\"}],\"AreaType\": \"SASH\"}],\"AreaType\": \"FRAME\"}]}",
+ SupplCode = "",
+ UM = "#"
+ },
+ new
+ {
+ SellingItemID = 2,
+ Cost = 300.0,
+ Description = "Finestra Vetro Fisso ",
+ Envir = 1,
+ ExtItemCode = "",
+ IsService = false,
+ ItemCode = 0,
+ ItemSteps = "",
+ JobID = 2,
+ Margin = 0.20000000000000001,
+ SerStruct = "{\"ProfilePath\": \"Profilo78\",\"Material\": \"Pino\",\"ColorMaterial\": \"Black\",\"Glass\": \"Vetro BE 2S 4T/16/4T\",\"AreaList\": [{\"Shape\": \"RECTANGLE\",\"DimensionList\": [{\"Index\": 1,\"Name\": \"Width\",\"Value\": 800.0},{\"Index\": 2,\"Name\": \"Height\",\"Value\": 1200.0}],\"JointList\": [{\"Index\": 1,\"JointType\": \"FULL_H\"},{\"Index\": 2,\"JointType\": \"FULL_H\"},{\"Index\": 3,\"JointType\": \"FULL_H\"},{\"Index\": 4,\"JointType\": \"FULL_H\"}],\"BottomRail\": false,\"BottomRailQty\": 0,\"GroupId\": 1,\"AreaList\": [{\"IsSashVertical\": true,\"SashList\": [{\"SashId\": 1,\"OpeningType\": \"TILTTURN_LEFT\",\"HasHandle\": true,\"Dimension\": 100.0}],\"SashType\": \"NULL\",\"JointList\": [{\"Index\": 1,\"JointType\": \"FULL_H\"},{\"Index\": 2,\"JointType\": \"FULL_H\"},{\"Index\": 3,\"JointType\": \"FULL_H\"},{\"Index\": 4,\"JointType\": \"FULL_H\"}],\"Hardware\": \"000635\",\"HwOptionList\": [{\"Name\": \"Entrata\",\"Value\": \"15\"},{\"Name\": \"LavManigliaPassante\",\"Value\": \"false\"},{\"Name\": \"PosizioneForoCilindro\",\"Value\": \"sotto\"},{\"Name\": \"Deviatore\",\"Value\": \"false\"},{\"Name\": \"ModelloCilindro\",\"Value\": \"c999\"},{\"Name\": \"LavCilindroPassante\",\"Value\": \"false\"},{\"Name\": \"HMan\",\"Value\": \"400\"}],\"GroupId\": 2,\"AreaList\": [{\"FillType\": \"GLASS\",\"GroupId\": 3,\"AreaList\": [],\"AreaType\": \"FILL\"}],\"AreaType\": \"SASH\"}],\"AreaType\": \"FRAME\"}]}",
+ SupplCode = "",
+ UM = "#"
+ },
+ new
+ {
+ SellingItemID = 3,
+ Cost = 150.0,
+ Description = "Persiana anta singola",
+ Envir = 1,
+ ExtItemCode = "",
+ IsService = false,
+ ItemCode = 0,
+ ItemSteps = "",
+ JobID = 1,
+ Margin = 0.10000000000000001,
+ SerStruct = "",
+ SupplCode = "",
+ UM = "#"
+ },
+ new
+ {
+ SellingItemID = 4,
+ Cost = 200.0,
+ Description = "Installazione",
+ Envir = 1,
+ ExtItemCode = "",
+ IsService = true,
+ ItemCode = 0,
+ ItemSteps = "",
+ JobID = 1,
+ Margin = 0.29999999999999999,
+ SerStruct = "",
+ SupplCode = "",
+ UM = "#"
+ },
+ new
+ {
+ SellingItemID = 5,
+ Cost = 1000.0,
+ Description = "Trave lamellare",
+ Envir = 2,
+ ExtItemCode = "",
+ IsService = false,
+ ItemCode = 0,
+ ItemSteps = "",
+ JobID = 3,
+ Margin = 0.29999999999999999,
+ SerStruct = "",
+ SupplCode = "",
+ UM = "#"
+ },
+ new
+ {
+ SellingItemID = 6,
+ Cost = 500.0,
+ Description = "Cabinet",
+ Envir = 4,
+ ExtItemCode = "",
+ IsService = false,
+ ItemCode = 0,
+ ItemSteps = "",
+ JobID = 4,
+ Margin = 0.29999999999999999,
+ SerStruct = "",
+ SupplCode = "",
+ UM = "#"
+ },
+ new
+ {
+ SellingItemID = 7,
+ Cost = 2000.0,
+ Description = "Parete",
+ Envir = 3,
+ ExtItemCode = "",
+ IsService = false,
+ ItemCode = 0,
+ ItemSteps = "",
+ JobID = 5,
+ Margin = 0.29999999999999999,
+ SerStruct = "",
+ SupplCode = "",
+ UM = "#"
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Items.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("item_supplier");
+
+ 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("EgwCoreLib.Lux.Data.DbModel.Production.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("production_batch");
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Production.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("production_item");
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Production.ProductionItemStepModel", b =>
+ {
+ b.Property("ProdItemStepID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProdItemStepID"));
+
+ b.Property("DateEnd")
+ .HasColumnType("datetime(6)");
+
+ b.Property("DateStart")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Index")
+ .HasColumnType("int");
+
+ b.Property("PhaseID")
+ .HasColumnType("int");
+
+ b.Property("ProdItemID")
+ .HasColumnType("int");
+
+ b.Property("Qty")
+ .HasColumnType("double");
+
+ b.Property("ResourceID")
+ .HasColumnType("int");
+
+ b.Property("WorkTime")
+ .HasColumnType("double");
+
+ b.HasKey("ProdItemStepID");
+
+ b.HasIndex("PhaseID");
+
+ b.HasIndex("ProdItemID");
+
+ b.HasIndex("ResourceID");
+
+ b.ToTable("production_item_step");
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Sales.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("sales_customer");
+
+ 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("EgwCoreLib.Lux.Data.DbModel.Sales.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("sales_dealer");
+
+ 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("EgwCoreLib.Lux.Data.DbModel.Sales.OfferModel", b =>
+ {
+ b.Property("OfferID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("OfferID"));
+
+ b.Property("ConsNote")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CustomerID")
+ .HasColumnType("int");
+
+ b.Property("DealerID")
+ .HasColumnType("int");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("DictPresel")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Discount")
+ .HasColumnType("double");
+
+ b.Property("DueDateProm")
+ .HasColumnType("datetime(6)");
+
+ b.Property("DueDateReq")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Envir")
+ .HasColumnType("int");
+
+ 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("sales_offer");
+
+ b.HasData(
+ new
+ {
+ OfferID = 1,
+ ConsNote = "",
+ CustomerID = 2,
+ DealerID = 2,
+ Description = "Offerta per tre serramenti",
+ DictPresel = "",
+ Discount = 0.0,
+ DueDateProm = new DateTime(2026, 1, 13, 0, 0, 0, 0, DateTimeKind.Local),
+ DueDateReq = new DateTime(2025, 12, 14, 0, 0, 0, 0, DateTimeKind.Local),
+ Envir = 1,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9203),
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9204),
+ OffertState = 0,
+ RefNum = 1,
+ RefRev = 1,
+ RefYear = 2025,
+ ValidUntil = new DateTime(2025, 12, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9200)
+ },
+ new
+ {
+ OfferID = 2,
+ ConsNote = "",
+ CustomerID = 2,
+ DealerID = 2,
+ Description = "Offerta BEAM",
+ DictPresel = "",
+ Discount = 0.0,
+ DueDateProm = new DateTime(2026, 1, 13, 0, 0, 0, 0, DateTimeKind.Local),
+ DueDateReq = new DateTime(2025, 12, 14, 0, 0, 0, 0, DateTimeKind.Local),
+ Envir = 2,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9219),
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9220),
+ OffertState = 0,
+ RefNum = 2,
+ RefRev = 1,
+ RefYear = 2025,
+ ValidUntil = new DateTime(2025, 12, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9217)
+ },
+ new
+ {
+ OfferID = 3,
+ ConsNote = "",
+ CustomerID = 2,
+ DealerID = 2,
+ Description = "Offerta Cabinet",
+ DictPresel = "",
+ Discount = 0.0,
+ DueDateProm = new DateTime(2026, 1, 13, 0, 0, 0, 0, DateTimeKind.Local),
+ DueDateReq = new DateTime(2025, 12, 14, 0, 0, 0, 0, DateTimeKind.Local),
+ Envir = 4,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9228),
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9230),
+ OffertState = 0,
+ RefNum = 3,
+ RefRev = 1,
+ RefYear = 2025,
+ ValidUntil = new DateTime(2025, 12, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9227)
+ },
+ new
+ {
+ OfferID = 4,
+ ConsNote = "",
+ CustomerID = 2,
+ DealerID = 2,
+ Description = "Offerta Wall",
+ DictPresel = "",
+ Discount = 0.0,
+ DueDateProm = new DateTime(2026, 1, 13, 0, 0, 0, 0, DateTimeKind.Local),
+ DueDateReq = new DateTime(2025, 12, 14, 0, 0, 0, 0, DateTimeKind.Local),
+ Envir = 3,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9238),
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9239),
+ OffertState = 0,
+ RefNum = 4,
+ RefRev = 1,
+ RefYear = 2025,
+ ValidUntil = new DateTime(2025, 12, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9236)
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Sales.OfferRowModel", b =>
+ {
+ b.Property("OfferRowID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("OfferRowID"));
+
+ b.Property("AwaitBom")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("AwaitPrice")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("BomCost")
+ .HasColumnType("double");
+
+ b.Property("BomOk")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("BomPrice")
+ .HasColumnType("double");
+
+ b.Property("Envir")
+ .HasColumnType("int");
+
+ b.Property("FileName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("FileResource")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("FileSize")
+ .HasColumnType("bigint");
+
+ b.Property("Inserted")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ItemBOM")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ItemJCD")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ItemOk")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("ItemSteps")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ItemTags")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("JobID")
+ .HasColumnType("int");
+
+ b.Property("Modified")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Note")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("OfferID")
+ .HasColumnType("int");
+
+ b.Property("OfferRowUID")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ProdItemQty")
+ .HasColumnType("int");
+
+ b.Property("Qty")
+ .HasColumnType("double");
+
+ b.Property("RowNum")
+ .HasColumnType("int");
+
+ b.Property("SellingItemID")
+ .HasColumnType("int");
+
+ b.Property("SerStruct")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StepCost")
+ .HasColumnType("double");
+
+ b.Property("StepFlowTime")
+ .HasColumnType("double");
+
+ b.Property("StepLeadTime")
+ .HasColumnType("double");
+
+ b.Property("StepPrice")
+ .HasColumnType("double");
+
+ b.HasKey("OfferRowID");
+
+ b.HasIndex("OfferID");
+
+ b.HasIndex("SellingItemID");
+
+ b.ToTable("sales_offer_row");
+
+ b.HasData(
+ new
+ {
+ OfferRowID = 2,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 900.0,
+ BomOk = true,
+ BomPrice = 950.0,
+ Envir = 1,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9363),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9365),
+ Note = "Finestra Anta Singola 2025",
+ OfferID = 1,
+ OfferRowUID = "SOR.25.00000002",
+ ProdItemQty = 0,
+ Qty = 3.0,
+ RowNum = 1,
+ SellingItemID = 1,
+ SerStruct = "{\"ProfilePath\": \"Profilo78\",\"Material\": \"Pino\",\"ColorMaterial\": \"Black\",\"Glass\": \"Vetro BE 2S 4T/16/4T\",\"AreaList\": [{\"Shape\": \"RECTANGLE\",\"DimensionList\": [{\"Index\": 1,\"Name\": \"Width\",\"Value\": 800.0},{\"Index\": 2,\"Name\": \"Height\",\"Value\": 1200.0}],\"JointList\": [{\"Index\": 1,\"JointType\": \"FULL_H\"},{\"Index\": 2,\"JointType\": \"FULL_H\"},{\"Index\": 3,\"JointType\": \"FULL_H\"},{\"Index\": 4,\"JointType\": \"FULL_H\"}],\"BottomRail\": false,\"BottomRailQty\": 0,\"GroupId\": 1,\"AreaList\": [{\"IsSashVertical\": true,\"SashList\": [{\"SashId\": 1,\"OpeningType\": \"TILTTURN_LEFT\",\"HasHandle\": true,\"Dimension\": 100.0}],\"SashType\": \"NULL\",\"JointList\": [{\"Index\": 1,\"JointType\": \"FULL_H\"},{\"Index\": 2,\"JointType\": \"FULL_H\"},{\"Index\": 3,\"JointType\": \"FULL_H\"},{\"Index\": 4,\"JointType\": \"FULL_H\"}],\"Hardware\": \"000635\",\"HwOptionList\": [{\"Name\": \"Entrata\",\"Value\": \"15\"},{\"Name\": \"LavManigliaPassante\",\"Value\": \"false\"},{\"Name\": \"PosizioneForoCilindro\",\"Value\": \"sotto\"},{\"Name\": \"Deviatore\",\"Value\": \"false\"},{\"Name\": \"ModelloCilindro\",\"Value\": \"c999\"},{\"Name\": \"LavCilindroPassante\",\"Value\": \"false\"},{\"Name\": \"HMan\",\"Value\": \"400\"}],\"GroupId\": 2,\"AreaList\": [{\"FillType\": \"GLASS\",\"GroupId\": 3,\"AreaList\": [],\"AreaType\": \"FILL\"}],\"AreaType\": \"SASH\"}],\"AreaType\": \"FRAME\"}]}",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ },
+ new
+ {
+ OfferRowID = 1,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 900.0,
+ BomOk = true,
+ BomPrice = 950.0,
+ Envir = 1,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9378),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9379),
+ Note = "Finestra Vetro Fisso 2025",
+ OfferID = 1,
+ OfferRowUID = "SOR.25.00000001",
+ ProdItemQty = 0,
+ Qty = 3.0,
+ RowNum = 2,
+ SellingItemID = 2,
+ SerStruct = "{\"ProfilePath\": \"Profilo78\",\"Material\": \"Pino\",\"ColorMaterial\": \"Black\",\"Glass\": \"Vetro BE 2S 4T/16/4T\",\"AreaList\": [{\"Shape\": \"RECTANGLE\",\"DimensionList\": [{\"Index\": 1,\"Name\": \"Width\",\"Value\": 800.0},{\"Index\": 2,\"Name\": \"Height\",\"Value\": 1200.0}],\"JointList\": [{\"Index\": 1,\"JointType\": \"FULL_H\"},{\"Index\": 2,\"JointType\": \"FULL_H\"},{\"Index\": 3,\"JointType\": \"FULL_H\"},{\"Index\": 4,\"JointType\": \"FULL_H\"}],\"BottomRail\": false,\"BottomRailQty\": 0,\"GroupId\": 1,\"AreaList\": [{\"IsSashVertical\": true,\"SashList\": [{\"SashId\": 1,\"OpeningType\": \"TILTTURN_LEFT\",\"HasHandle\": true,\"Dimension\": 100.0}],\"SashType\": \"NULL\",\"JointList\": [{\"Index\": 1,\"JointType\": \"FULL_H\"},{\"Index\": 2,\"JointType\": \"FULL_H\"},{\"Index\": 3,\"JointType\": \"FULL_H\"},{\"Index\": 4,\"JointType\": \"FULL_H\"}],\"Hardware\": \"000635\",\"HwOptionList\": [{\"Name\": \"Entrata\",\"Value\": \"15\"},{\"Name\": \"LavManigliaPassante\",\"Value\": \"false\"},{\"Name\": \"PosizioneForoCilindro\",\"Value\": \"sotto\"},{\"Name\": \"Deviatore\",\"Value\": \"false\"},{\"Name\": \"ModelloCilindro\",\"Value\": \"c999\"},{\"Name\": \"LavCilindroPassante\",\"Value\": \"false\"},{\"Name\": \"HMan\",\"Value\": \"400\"}],\"GroupId\": 2,\"AreaList\": [{\"FillType\": \"GLASS\",\"GroupId\": 3,\"AreaList\": [],\"AreaType\": \"FILL\"}],\"AreaType\": \"SASH\"}],\"AreaType\": \"FRAME\"}]}",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ },
+ new
+ {
+ OfferRowID = 3,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 160.0,
+ BomOk = true,
+ BomPrice = 200.0,
+ Envir = 1,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9390),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9392),
+ Note = "Persiana per Finestra anta singola 2025",
+ OfferID = 1,
+ OfferRowUID = "SOR.25.00000003",
+ ProdItemQty = 0,
+ Qty = 3.0,
+ RowNum = 3,
+ SellingItemID = 3,
+ SerStruct = "{}",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ },
+ new
+ {
+ OfferRowID = 4,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 200.0,
+ BomOk = true,
+ BomPrice = 250.0,
+ Envir = 1,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9403),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9404),
+ Note = "Installazione serramento",
+ OfferID = 1,
+ OfferRowUID = "SOR.25.00000004",
+ ProdItemQty = 0,
+ Qty = 3.0,
+ RowNum = 4,
+ SellingItemID = 4,
+ SerStruct = "{}",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ },
+ new
+ {
+ OfferRowID = 5,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 800.0,
+ BomOk = true,
+ BomPrice = 1150.0,
+ Envir = 2,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9435),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9436),
+ Note = "Demo file 01",
+ OfferID = 2,
+ OfferRowUID = "SOR.25.00000005",
+ ProdItemQty = 0,
+ Qty = 10.0,
+ RowNum = 1,
+ SellingItemID = 5,
+ SerStruct = "",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ },
+ new
+ {
+ OfferRowID = 6,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 600.0,
+ BomOk = true,
+ BomPrice = 950.0,
+ Envir = 2,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9447),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9449),
+ Note = "Demo file 02",
+ OfferID = 2,
+ OfferRowUID = "SOR.25.00000006",
+ ProdItemQty = 0,
+ Qty = 4.0,
+ RowNum = 1,
+ SellingItemID = 5,
+ SerStruct = "",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ },
+ new
+ {
+ OfferRowID = 7,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 200.0,
+ BomOk = true,
+ BomPrice = 250.0,
+ Envir = 3,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9477),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9479),
+ Note = "Demo file 01",
+ OfferID = 3,
+ OfferRowUID = "SOR.25.00000007",
+ ProdItemQty = 0,
+ Qty = 4.0,
+ RowNum = 1,
+ SellingItemID = 6,
+ SerStruct = "",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ },
+ new
+ {
+ OfferRowID = 8,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 50.0,
+ BomOk = true,
+ BomPrice = 80.0,
+ Envir = 3,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9489),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9491),
+ Note = "Demo file 02",
+ OfferID = 3,
+ OfferRowUID = "SOR.25.00000008",
+ ProdItemQty = 0,
+ Qty = 12.0,
+ RowNum = 1,
+ SellingItemID = 6,
+ SerStruct = "",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ },
+ new
+ {
+ OfferRowID = 9,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 800.0,
+ BomOk = true,
+ BomPrice = 1150.0,
+ Envir = 4,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 595, DateTimeKind.Local).AddTicks(9518),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 596, DateTimeKind.Local).AddTicks(54),
+ Note = "Demo file 01",
+ OfferID = 4,
+ OfferRowUID = "SOR.25.00000009",
+ ProdItemQty = 0,
+ Qty = 6.0,
+ RowNum = 1,
+ SellingItemID = 7,
+ SerStruct = "",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ },
+ new
+ {
+ OfferRowID = 10,
+ AwaitBom = false,
+ AwaitPrice = false,
+ BomCost = 600.0,
+ BomOk = true,
+ BomPrice = 950.0,
+ Envir = 4,
+ FileName = "",
+ FileResource = "",
+ FileSize = 0L,
+ Inserted = new DateTime(2025, 11, 14, 18, 14, 6, 596, DateTimeKind.Local).AddTicks(68),
+ ItemBOM = "",
+ ItemJCD = "",
+ ItemOk = true,
+ ItemSteps = "{}",
+ ItemTags = "",
+ JobID = 0,
+ Modified = new DateTime(2025, 11, 14, 18, 14, 6, 596, DateTimeKind.Local).AddTicks(70),
+ Note = "Demo file 02",
+ OfferID = 4,
+ OfferRowUID = "SOR.25.0000000A",
+ ProdItemQty = 0,
+ Qty = 4.0,
+ RowNum = 1,
+ SellingItemID = 7,
+ SerStruct = "",
+ StepCost = 0.0,
+ StepFlowTime = 0.0,
+ StepLeadTime = 0.0,
+ StepPrice = 0.0
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Sales.OrderModel", b =>
+ {
+ b.Property("OrderID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("OrderID"));
+
+ b.Property("ConsNote")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CustomerID")
+ .HasColumnType("int");
+
+ b.Property("DealerID")
+ .HasColumnType("int");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("DictPresel")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Discount")
+ .HasColumnType("double");
+
+ b.Property("DueDateProm")
+ .HasColumnType("datetime(6)");
+
+ b.Property("DueDateReq")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Envir")
+ .HasColumnType("int");
+
+ b.Property("Inserted")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Modified")
+ .HasColumnType("datetime(6)");
+
+ b.Property("OfferID")
+ .HasColumnType("int");
+
+ b.Property("OrderState")
+ .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("sales_order");
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Sales.OrderRowModel", b =>
+ {
+ b.Property("OrderRowID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("OrderRowID"));
+
+ b.Property("AwaitBom")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("AwaitPrice")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("BomCost")
+ .HasColumnType("double");
+
+ b.Property("BomOk")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("BomPrice")
+ .HasColumnType("double");
+
+ b.Property("Envir")
+ .HasColumnType("int");
+
+ b.Property("FileName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("FileResource")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("FileSize")
+ .HasColumnType("bigint");
+
+ b.Property("Inserted")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ItemBOM")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ItemJCD")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ItemOk")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("ItemSteps")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ItemTags")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("JobID")
+ .HasColumnType("int");
+
+ b.Property("Modified")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Note")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("OrderID")
+ .HasColumnType("int");
+
+ b.Property("OrderRowUID")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ProdItemQty")
+ .HasColumnType("int");
+
+ b.Property("Qty")
+ .HasColumnType("double");
+
+ b.Property("RowNum")
+ .HasColumnType("int");
+
+ b.Property("SellingItemID")
+ .HasColumnType("int");
+
+ b.Property("SerStruct")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StepCost")
+ .HasColumnType("double");
+
+ b.Property("StepFlowTime")
+ .HasColumnType("double");
+
+ b.Property("StepLeadTime")
+ .HasColumnType("double");
+
+ b.Property("StepPrice")
+ .HasColumnType("double");
+
+ b.HasKey("OrderRowID");
+
+ b.HasIndex("OrderID");
+
+ b.HasIndex("SellingItemID");
+
+ b.ToTable("sales_order_row");
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Stock.StockMovModel", b =>
+ {
+ b.Property("StockMovID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("StockMovID"));
+
+ b.Property("CodDoc")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("DtCreate")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp")
+ .HasDefaultValueSql("CURRENT_TIMESTAMP");
+
+ b.Property("DtMod")
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("timestamp")
+ .HasDefaultValueSql("CURRENT_TIMESTAMP");
+
+ MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("DtMod"));
+
+ b.Property("MovCod")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("Note")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("QtyRec")
+ .HasColumnType("double");
+
+ b.Property("StockStatusId")
+ .HasColumnType("int");
+
+ b.Property("UnitVal")
+ .HasColumnType("double");
+
+ b.Property("UserId")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("StockMovID");
+
+ b.HasIndex("MovCod");
+
+ b.HasIndex("StockStatusId");
+
+ b.ToTable("stock_mov");
+
+ b.HasData(
+ new
+ {
+ StockMovID = 1,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1307),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1363),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 5.0,
+ StockStatusId = 1,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ },
+ new
+ {
+ StockMovID = 2,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1366),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1367),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 8.0,
+ StockStatusId = 2,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ },
+ new
+ {
+ StockMovID = 3,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1370),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1371),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 5.0,
+ StockStatusId = 3,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ },
+ new
+ {
+ StockMovID = 4,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1373),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1374),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 1.0,
+ StockStatusId = 4,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ },
+ new
+ {
+ StockMovID = 5,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1377),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1378),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 10.0,
+ StockStatusId = 5,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ },
+ new
+ {
+ StockMovID = 6,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1380),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1382),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 1.0,
+ StockStatusId = 6,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ },
+ new
+ {
+ StockMovID = 7,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1384),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1385),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 50.0,
+ StockStatusId = 7,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ },
+ new
+ {
+ StockMovID = 8,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1387),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1388),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 1.0,
+ StockStatusId = 8,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ },
+ new
+ {
+ StockMovID = 9,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1391),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1392),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 1.0,
+ StockStatusId = 9,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ },
+ new
+ {
+ StockMovID = 10,
+ CodDoc = "",
+ DtCreate = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1394),
+ DtMod = new DateTime(2025, 11, 14, 18, 14, 6, 592, DateTimeKind.Local).AddTicks(1396),
+ MovCod = "CAR",
+ Note = "DEMO",
+ QtyRec = 1.0,
+ StockStatusId = 10,
+ UnitVal = 0.0,
+ UserId = "samuele.locatelli@egalware.com"
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Stock.StockStatusModel", b =>
+ {
+ b.Property("StockStatusId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("StockStatusId"));
+
+ b.Property("IsDeleted")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("IsRemn")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("ItemID")
+ .HasColumnType("int");
+
+ b.Property("Location")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("QtyAvail")
+ .HasColumnType("double");
+
+ b.HasKey("StockStatusId");
+
+ b.HasIndex("ItemID");
+
+ b.ToTable("stock_status");
+
+ b.HasData(
+ new
+ {
+ StockStatusId = 1,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 1,
+ Location = "B001-001-003",
+ QtyAvail = 5.0
+ },
+ new
+ {
+ StockStatusId = 2,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 2,
+ Location = "B001-001-002",
+ QtyAvail = 8.0
+ },
+ new
+ {
+ StockStatusId = 3,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 3,
+ Location = "B001-001-001",
+ QtyAvail = 5.0
+ },
+ new
+ {
+ StockStatusId = 4,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 4,
+ Location = "V002-001-001",
+ QtyAvail = 1.0
+ },
+ new
+ {
+ StockStatusId = 5,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 5,
+ Location = "V001-001-002",
+ QtyAvail = 10.0
+ },
+ new
+ {
+ StockStatusId = 6,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 6,
+ Location = "V001-001-003",
+ QtyAvail = 1.0
+ },
+ new
+ {
+ StockStatusId = 7,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 8,
+ Location = "V001-001-003",
+ QtyAvail = 50.0
+ },
+ new
+ {
+ StockStatusId = 8,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 11,
+ Location = "S001-002-001",
+ QtyAvail = 1.0
+ },
+ new
+ {
+ StockStatusId = 9,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 9,
+ Location = "S001-002-001",
+ QtyAvail = 1.0
+ },
+ new
+ {
+ StockStatusId = 10,
+ IsDeleted = false,
+ IsRemn = false,
+ ItemID = 10,
+ Location = "S001-001-001",
+ QtyAvail = 1.0
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Task.JobDriverConfigModel", b =>
+ {
+ b.Property("JobDriverConfID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("JobDriverConfID"));
+
+ b.Property("CostDriverID")
+ .HasColumnType("int");
+
+ b.Property("DefaultVal")
+ .HasColumnType("double");
+
+ b.Property("Intercept")
+ .HasColumnType("double");
+
+ b.Property("JobDriverID")
+ .HasColumnType("int");
+
+ b.Property("JobID")
+ .HasColumnType("int");
+
+ b.Property("Note")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Regress")
+ .HasColumnType("double");
+
+ b.HasKey("JobDriverConfID");
+
+ b.HasIndex("CostDriverID");
+
+ b.HasIndex("JobDriverID");
+
+ b.HasIndex("JobID");
+
+ b.ToTable("task_job_driver_config");
+
+ b.HasData(
+ new
+ {
+ JobDriverConfID = 1,
+ CostDriverID = 3,
+ DefaultVal = 1.0,
+ Intercept = 0.0,
+ JobDriverID = 3,
+ JobID = 6,
+ Note = "Numero prodotti",
+ Regress = 1.0
+ },
+ new
+ {
+ JobDriverConfID = 2,
+ CostDriverID = 3,
+ DefaultVal = 1.0,
+ Intercept = 0.0,
+ JobDriverID = 3,
+ JobID = 7,
+ Note = "Numero prodotti",
+ Regress = 1.0
+ },
+ new
+ {
+ JobDriverConfID = 3,
+ CostDriverID = 1,
+ DefaultVal = 5.0,
+ Intercept = 0.0,
+ JobDriverID = 1,
+ JobID = 7,
+ Note = "Ore Equivalenti",
+ Regress = 0.016666666666666666
+ },
+ new
+ {
+ JobDriverConfID = 4,
+ CostDriverID = 3,
+ DefaultVal = 1.0,
+ Intercept = 0.0,
+ JobDriverID = 3,
+ JobID = 2,
+ Note = "Numero prodotti",
+ Regress = 1.0
+ },
+ new
+ {
+ JobDriverConfID = 5,
+ CostDriverID = 1,
+ DefaultVal = 5.0,
+ Intercept = 0.0,
+ JobDriverID = 1,
+ JobID = 2,
+ Note = "Ore Equivalenti",
+ Regress = 0.016666666666666666
+ },
+ new
+ {
+ JobDriverConfID = 6,
+ CostDriverID = 1,
+ DefaultVal = 8.0,
+ Intercept = 0.0,
+ JobDriverID = 4,
+ JobID = 2,
+ Note = "Ore Extra per complex Articolo (1 min/pezzo)",
+ Regress = 0.016666666666666666
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Task.JobDriverModel", b =>
+ {
+ b.Property("JobDriverID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("JobDriverID"));
+
+ b.Property("Descript")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("JobDriverID");
+
+ b.ToTable("task_job_driver");
+
+ b.HasData(
+ new
+ {
+ JobDriverID = 1,
+ Descript = "Tempo netto di lavorazione, in minuti",
+ Name = "LeadTime"
+ },
+ new
+ {
+ JobDriverID = 2,
+ Descript = "Tempo di attraversamento complessivo del processo, in giorni lavorativi",
+ Name = "FlowTime"
+ },
+ new
+ {
+ JobDriverID = 3,
+ Descript = "Numero Articoli/Prodotti",
+ Name = "NumArticoli"
+ },
+ new
+ {
+ JobDriverID = 4,
+ Descript = "Numero Items per Articolo",
+ Name = "NumItems"
+ },
+ new
+ {
+ JobDriverID = 5,
+ Descript = "Indice complex lavorazioni",
+ Name = "WorkCompScore"
+ },
+ new
+ {
+ JobDriverID = 6,
+ Descript = "Indice complex materiali",
+ Name = "MaterialCompScore"
+ },
+ new
+ {
+ JobDriverID = 7,
+ Descript = "Indice complex generale",
+ Name = "GeneralScore"
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Task.JobStepItemModel", b =>
+ {
+ b.Property("JobStepItemID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("JobStepItemID"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Index")
+ .HasColumnType("int");
+
+ b.Property("ItemID")
+ .HasColumnType("int");
+
+ b.Property("JobStepID")
+ .HasColumnType("int");
+
+ b.Property("Qty")
+ .HasColumnType("double");
+
+ b.HasKey("JobStepItemID");
+
+ b.HasIndex("ItemID");
+
+ b.HasIndex("JobStepID");
+
+ b.ToTable("task_job_step_item");
+
+ b.HasData(
+ new
+ {
+ JobStepItemID = 1,
+ Description = "Grezzo legno abete",
+ Index = 1,
+ ItemID = 1,
+ JobStepID = 1,
+ Qty = 1.0
+ },
+ new
+ {
+ JobStepItemID = 2,
+ Description = "Vernice trasparente standard 1L",
+ Index = 2,
+ ItemID = 8,
+ JobStepID = 3,
+ Qty = 0.10000000000000001
+ },
+ new
+ {
+ JobStepItemID = 3,
+ Description = "Ferramenta AGB - rif. AGFD.00000.00000",
+ Index = 3,
+ ItemID = 9,
+ JobStepID = 4,
+ Qty = 1.0
+ });
+ });
+
+ modelBuilder.Entity("EgwCoreLib.Lux.Data.DbModel.Task.JobStepModel", b =>
+ {
+ b.Property("JobStepID")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("JobStepID"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Index")
+ .HasColumnType("int");
+
+ b.Property("JobID")
+ .HasColumnType("int");
+
+ b.Property("PhaseID")
+ .HasColumnType("int");
+
+ b.Property