using EgwCoreLib.Lux.Data.DbModel.Config; using EgwCoreLib.Lux.Data.DbModel.Cost; using EgwCoreLib.Lux.Data.DbModel.Items; using EgwCoreLib.Lux.Data.DbModel.Sales; using EgwCoreLib.Lux.Data.DbModel.Stock; using EgwCoreLib.Lux.Data.DbModel.Task; using EgwCoreLib.Lux.Data.DbModel.Utils; using Microsoft.EntityFrameworkCore; namespace EgwCoreLib.Lux.Data { public static class ModelBuilderExtensions { #region Public Methods /// /// Estensione per seed iniziale dei dati nel DB /// /// public static void Seed(this ModelBuilder modelBuilder) { // inizializzazione dei valori di default x Ruoli/Tags modelBuilder.Entity().HasData( new TagsModel { TagID = 1, Description = "Tag 01" }, new TagsModel { TagID = 2, Description = "Tag 02" }, new TagsModel { TagID = 3, Description = "Tag 03" }, new TagsModel { TagID = 4, Description = "Tag 04" }, new TagsModel { TagID = 5, Description = "Tag 05" } ); // init classi generiche x gestione liste modelBuilder.Entity().HasData( new GenClassModel { ClassCod = "ShapeList", Description = "Elenco Shape Gestite" }, new GenClassModel { ClassCod = "WoodCol", Description = "Elenco Colori Legno" } ); // init dati x invio serializzazioni da environment modelBuilder.Entity().HasData( new EnvirParamModel { EnvirID = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW, SerStrucKey = "Jwd" }, new EnvirParamModel { EnvirID = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.BEAM, SerStrucKey = "Btl" }, new EnvirParamModel { EnvirID = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.CABINET, SerStrucKey = "Btl" }, new EnvirParamModel { EnvirID = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WALL, SerStrucKey = "Btl" } ); modelBuilder.Entity().HasData( new GenValueModel { GenValID = 1, Ordinal = 1, ClassCod = "WoodCol", ValString = "Blue" }, new GenValueModel { GenValID = 2, Ordinal = 2, ClassCod = "WoodCol", ValString = "White" }, new GenValueModel { GenValID = 3, Ordinal = 3, ClassCod = "WoodCol", ValString = "Red" }, new GenValueModel { GenValID = 4, Ordinal = 4, ClassCod = "WoodCol", ValString = "Black" }, new GenValueModel { GenValID = 5, Ordinal = 1, ClassCod = "ShapeList", ValString = "Rectangle" }, new GenValueModel { GenValID = 6, Ordinal = 2, ClassCod = "ShapeList", ValString = "Trapezoid" }, new GenValueModel { GenValID = 7, Ordinal = 3, ClassCod = "ShapeList", ValString = "Triangular" }, new GenValueModel { GenValID = 8, Ordinal = 4, ClassCod = "ShapeList", ValString = "Arc" }, new GenValueModel { GenValID = 9, Ordinal = 5, ClassCod = "ShapeList", ValString = "FullArc" }, new GenValueModel { GenValID = 10, Ordinal = 6, ClassCod = "ShapeList", ValString = "SemiFullArc" }, new GenValueModel { GenValID = 11, Ordinal = 7, ClassCod = "ShapeList", ValString = "SemiArc" }, new GenValueModel { GenValID = 12, Ordinal = 8, ClassCod = "ShapeList", ValString = "Circle" } ); modelBuilder.Entity().HasData( new GlassModel { GlassID = 1, Code = "0001", Description = "Vetro BE 2S 4/12/4", Thickness = 20 }, new GlassModel { GlassID = 2, Code = "0002", Description = "Vetro BE 2S 4/16/4", Thickness = 24 }, new GlassModel { GlassID = 3, Code = "0003", Description = "Vetro BE 3S 4/12/4/12/4", Thickness = 36 }, new GlassModel { GlassID = 4, Code = "0004", Description = "Vetro BE 3S 4/16/4/16/4", Thickness = 44 }, new GlassModel { GlassID = 5, Code = "0005", Description = "Vetro BE 2S 4T/12/4T", Thickness = 20 }, new GlassModel { GlassID = 6, Code = "0006", Description = "Vetro BE 2S 4T/16/4T", Thickness = 24 }, new GlassModel { GlassID = 7, Code = "0007", Description = "Vetro BE 3S 4T/12/4T/12/4T", Thickness = 36 }, new GlassModel { GlassID = 8, Code = "0008", Description = "Vetro BE 3S 4T/16/4T/16/4T", Thickness = 44 } ); modelBuilder.Entity().HasData( new ProfileModel { ProfileID = 1, Code = "0001", Description = "Profilo60", Thickness = 60 }, new ProfileModel { ProfileID = 2, Code = "0002", Description = "Profilo78", Thickness = 78 }, new ProfileModel { ProfileID = 3, Code = "0003", Description = "Profilo90", Thickness = 90 } ); modelBuilder.Entity().HasData( new WoodModel { WoodID = 1, Code = "0001", Description = "Abete", Type = 1 }, new WoodModel { WoodID = 2, Code = "0002", Description = "Acero", Type = 1 }, new WoodModel { WoodID = 3, Code = "0003", Description = "Pino", Type = 2 }, new WoodModel { WoodID = 4, Code = "0004", Description = "Tek", Type = 3 } ); // valori base classi generiche // inizializzazione dei valori di default x Customer modelBuilder.Entity().HasData( new CustomerModel { CustomerID = 1, FirstName = "Customer A", LastName = "Egalware", VAT = "1234567890123456" }, new CustomerModel { CustomerID = 2, FirstName = "Customer B", LastName = "User", VAT = "1234567890123456" }, new CustomerModel { CustomerID = 3, FirstName = "Customer C", LastName = "User Test", VAT = "1234567890123456" } ); // inizializzazione dei valori di default x Dealer modelBuilder.Entity().HasData( new DealerModel { DealerID = 1, CompanyName = "Company First", FirstName = "Dealer A", LastName = "Egalware", VAT = "9587362514671527" }, new DealerModel { DealerID = 2, CompanyName = "Company First", FirstName = "Dealer B", LastName = "User", VAT = "9587362514671527" }, new DealerModel { DealerID = 3, CompanyName = "Company Second", FirstName = "Dealer C", LastName = "User Test", VAT = "9587362514671527" } ); // inizializzazione dei valori di default x Supplier modelBuilder.Entity().HasData( new SupplierModel { SupplierID = 1, CompanyName = "Company One", FirstName = "Supplier A", LastName = "Egalware", VAT = "7294857103879254" }, new SupplierModel { SupplierID = 2, CompanyName = "Company Two", FirstName = "Supplier B", LastName = "User", VAT = "7294857103879254" }, new SupplierModel { SupplierID = 3, CompanyName = "Company Two", FirstName = "Supplier C", LastName = "User Test", VAT = "7294857103879254" } ); // inizializzazione dei valori di default x gruppi item modelBuilder.Entity().HasData( new ItemGroupModel { CodGroup = "WindowTrunk", Description = "Barre legno per lavorazione" }, new ItemGroupModel { CodGroup = "WindowGlass", Description = "Vetri serramento" }, new ItemGroupModel { CodGroup = "WindowVarnish", Description = "Vernici per legno" }, new ItemGroupModel { CodGroup = "WindowHardware", Description = "Ferramenta serramento" } ); // inizializzazione tipo mov mag modelBuilder.Entity().HasData( new MovTypeModel { MovCod = "CAR", Description = "Carico a magazzino" }, new MovTypeModel { MovCod = "MOV", Description = "Movimento interno (spostamento)" }, new MovTypeModel { MovCod = "ND", Description = "Non Definito" }, new MovTypeModel { MovCod = "OFOR", Description = "Ordine Fornitore" }, new MovTypeModel { MovCod = "RETT", Description = "Rettifica magazzino" }, new MovTypeModel { MovCod = "SCAR", Description = "Scarico da magazzino" } ); // inizializzazione dei valori di default x Item di magazzino modelBuilder.Entity().HasData( // barre grezzo new ItemModel { ItemID = 1, CodGroup = "WindowTrunk", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 1001, Description = "BARRA-60x80 generica", SupplCode = "BARR.001", Cost = 20, Margin = 0.3, UM = "#" }, new ItemModel { ItemID = 2, CodGroup = "WindowTrunk", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 1002, ExtItemCode = "BARRA-60x80x12000", SupplCode = "ABC.00123.12000", Description = "Barra 60x80, lunghezza 12m", Cost = 16.5, Margin = 0.21, UM = "#" }, new ItemModel { ItemID = 3, CodGroup = "WindowTrunk", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 1003, ExtItemCode = "BARRA-60x80x8000", SupplCode = "ABC.00123.8000", Description = "Barra 60x80, lunghezza 8m", Cost = 17.5, Margin = 0.22, UM = "#" }, new ItemModel { ItemID = 4, CodGroup = "WindowTrunk", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 1004, ExtItemCode = "BARRA-60x80x16000", SupplCode = "ABC.00123.16000", Description = "Barra 60x80, lunghezza 16m", Cost = 15.5, Margin = 0.2, UM = "#" }, // vetri new ItemModel { ItemID = 5, CodGroup = "WindowGlass", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 2001, ExtItemCode = "VETRO-3L-THERMO-800x1000", SupplCode = "V3T.800.1000", Description = "Vetro triplo, basso indice termico, 800x1000", Cost = 300, Margin = 0.20, UM = "m2" }, new ItemModel { ItemID = 6, CodGroup = "WindowGlass", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 2002, ExtItemCode = "VETRO-2L-800x1000", SupplCode = "V2.800.1000", Description = "Vetro doppio, 800x1000", Cost = 200, Margin = 0.15, UM = "m2" }, new ItemModel { ItemID = 7, CodGroup = "WindowGlass", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 2003, ExtItemCode = "VETRO-3L-800x1000", SupplCode = "V3.800.1000", Description = "Vetro triplo, 800x1000", Cost = 250, Margin = 0.18, UM = "m2" }, // vernici new ItemModel { ItemID = 8, CodGroup = "WindowVarnish", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 3001, ExtItemCode = "VERN-TRASP", SupplCode = "VT.STD", Description = "Vernice trasparente", Cost = 20, Margin = 0.20, UM = "l" }, // ferramenta new ItemModel { ItemID = 9, CodGroup = "WindowHardware", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 5001, ExtItemCode = "KIT-001", SupplCode = "AGB-KIT-001", Description = "Kit standard completo AGB tipo 001", Cost = 65, Margin = 0.20, UM = "#" }, new ItemModel { ItemID = 10, CodGroup = "WindowHardware", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 5002, ExtItemCode = "CERN-001", SupplCode = "AGB-CERN-001", Description = "Cerniera AGB tipo 001", Cost = 10, Margin = 0.20, UM = "#" }, new ItemModel { ItemID = 11, CodGroup = "WindowHardware", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 5003, ExtItemCode = "SERR-001", SupplCode = "AGB-SERR-001", Description = "Serratura AGB tipo 001", Cost = 15, Margin = 0.20, UM = "#" }, new ItemModel { ItemID = 12, CodGroup = "WindowHardware", ItemType = Core.Enums.ItemClassType.Buy, IsService = false, ItemCode = 5004, ExtItemCode = "MAN-001", SupplCode = "AGB-MAN-001", Description = "Maniglia AGB tipo 001", Cost = 25, Margin = 0.20, UM = "#" } ); // inizializzazione dei valori di default x Item di giacenza modelBuilder.Entity().HasData( // giacenza barre grezzo new StockStatusModel { StockStatusId = 1, ItemID = 1, QtyAvail = 5, IsDeleted = false, IsRemn = false, Location = "B001-001-003" }, new StockStatusModel { StockStatusId = 2, ItemID = 2, QtyAvail = 8, IsDeleted = false, IsRemn = false, Location = "B001-001-002" }, new StockStatusModel { StockStatusId = 3, ItemID = 3, QtyAvail = 5, IsDeleted = false, IsRemn = false, Location = "B001-001-001" }, // giacenza vetri new StockStatusModel { StockStatusId = 4, ItemID = 4, QtyAvail = 1, IsDeleted = false, IsRemn = false, Location = "V002-001-001" }, new StockStatusModel { StockStatusId = 5, ItemID = 5, QtyAvail = 10, IsDeleted = false, IsRemn = false, Location = "V001-001-002" }, new StockStatusModel { StockStatusId = 6, ItemID = 6, QtyAvail = 1, IsDeleted = false, IsRemn = false, Location = "V001-001-003" }, // giacenza vernici new StockStatusModel { StockStatusId = 7, ItemID = 8, QtyAvail = 50, IsDeleted = false, IsRemn = false, Location = "V001-001-003" }, // giacenza ferramenta new StockStatusModel { StockStatusId = 8, ItemID = 11, QtyAvail = 1, IsDeleted = false, IsRemn = false, Location = "S001-002-001" }, new StockStatusModel { StockStatusId = 9, ItemID = 9, QtyAvail = 1, IsDeleted = false, IsRemn = false, Location = "S001-002-001" }, new StockStatusModel { StockStatusId = 10, ItemID = 10, QtyAvail = 1, IsDeleted = false, IsRemn = false, Location = "S001-001-001" } ); // inizializzazione dei valori di default x movimenti giacenze magazzino modelBuilder.Entity().HasData( // giacenza barre grezzo new StockMovModel { StockMovID = 1, StockStatusId = 1, QtyRec = 5, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" }, new StockMovModel { StockMovID = 2, StockStatusId = 2, QtyRec = 8, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" }, new StockMovModel { StockMovID = 3, StockStatusId = 3, QtyRec = 5, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" }, // giacenza vetri new StockMovModel { StockMovID = 4, StockStatusId = 4, QtyRec = 1, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" }, new StockMovModel { StockMovID = 5, StockStatusId = 5, QtyRec = 10, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" }, new StockMovModel { StockMovID = 6, StockStatusId = 6, QtyRec = 1, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" }, // giacenza vernici new StockMovModel { StockMovID = 7, StockStatusId = 7, QtyRec = 50, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" }, // giacenza ferramenta new StockMovModel { StockMovID = 8, StockStatusId = 8, QtyRec = 1, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" }, new StockMovModel { StockMovID = 9, StockStatusId = 9, QtyRec = 1, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" }, new StockMovModel { StockMovID = 10, StockStatusId = 10, QtyRec = 1, MovCod = "CAR", UserId = "samuele.locatelli@egalware.com", Note = "DEMO" } ); // init JobDrivers modelBuilder.Entity().HasData( // Risorsa principale di calcolo produttività/costi new JobDriverModel() { JobDriverID = 1, Name = "LeadTime", Descript = "Tempo netto di lavorazione, in minuti" }, new JobDriverModel() { JobDriverID = 2, Name = "FlowTime", Descript = "Tempo di attraversamento complessivo del processo, in giorni lavorativi" }, new JobDriverModel() { JobDriverID = 3, Name = "NumArticoli", Descript = "Numero Articoli/Prodotti" }, new JobDriverModel() { JobDriverID = 4, Name = "NumItems", Descript = "Numero Items per Articolo" }, new JobDriverModel() { JobDriverID = 5, Name = "WorkCompScore", Descript = "Indice complex lavorazioni" }, new JobDriverModel() { JobDriverID = 6, Name = "MaterialCompScore", Descript = "Indice complex materiali" }, new JobDriverModel() { JobDriverID = 7, Name = "GeneralScore", Descript = "Indice complex generale" } ); // init cost drivers modelBuilder.Entity().HasData( // Risorsa principale di calcolo produttività/costi new CostDriverModel() { CostDriverID = 1, Name = "WorkHour", Unit = "h", Descript = "Ore lavorate per step/fase" }, new CostDriverModel() { CostDriverID = 2, Name = "Meter", Unit = "m", Descript = "Metri prodotti per step/fase" }, new CostDriverModel() { CostDriverID = 3, Name = "Unit", Unit = "#", Descript = "Numero unità prodotte (lavorate) per step/fase" } ); // inizializzazione risorse modelBuilder.Entity().HasData( new ResourceModel { ResourceID = 1, Name = "Sezionatrice", FixedCost = 12000, VariableCost = 6000, OverHeadCost = 5000, CostDriverID = 1, CostDriverBudget = 220 * 4, LaborCost = 30, OverHeadPerc = 0.15M, EBTPerc = 0.15M }, new ResourceModel { ResourceID = 2, Name = "Linea SAOMAD WoodPecker Just 3500", FixedCost = 100000, VariableCost = 30000, OverHeadCost = 15000, CostDriverID = 1, CostDriverBudget = 220 * 8, LaborCost = 40, OverHeadPerc = 0.15M, EBTPerc = 0.15M }, new ResourceModel { ResourceID = 3, Name = "Linea Pantografo", FixedCost = 24000, VariableCost = 6000, OverHeadCost = 5000, CostDriverID = 1, CostDriverBudget = 220 * 8, LaborCost = 35, OverHeadPerc = 0.15M, EBTPerc = 0.15M }, new ResourceModel { ResourceID = 4, Name = "Stazione Verniciatura", FixedCost = 24000, VariableCost = 6000, OverHeadCost = 3000, CostDriverID = 1, CostDriverBudget = 220 * 4, LaborCost = 30, OverHeadPerc = 0.15M, EBTPerc = 0.15M }, new ResourceModel { ResourceID = 5, Name = "Verniciatura Manuale", FixedCost = 6000, VariableCost = 2000, OverHeadCost = 3000, CostDriverID = 1, CostDriverBudget = 220 * 1, LaborCost = 30, OverHeadPerc = 0.15M, EBTPerc = 0.15M }, new ResourceModel { ResourceID = 6, Name = "Montaggio Manuale", FixedCost = 500, VariableCost = 500, OverHeadCost = 500, CostDriverID = 1, CostDriverBudget = 220 * 8 * 2, LaborCost = 30, OverHeadPerc = 0.15M, EBTPerc = 0.15M }, new ResourceModel { ResourceID = 7, Name = "Installatore", FixedCost = 0, VariableCost = 3000, OverHeadCost = 0, CostDriverID = 1, CostDriverBudget = 220 * 8 * 2, LaborCost = 40, OverHeadPerc = 0.15M, EBTPerc = 0.15M } ); // inizializzazione fasi modelBuilder.Entity().HasData( new PhaseModel { PhaseID = 1, Description = "Taglio tronchetti" }, new PhaseModel { PhaseID = 2, Description = "Lavorazione pezzi serramento" }, new PhaseModel { PhaseID = 3, Description = "Verniciatura" }, new PhaseModel { PhaseID = 4, Description = "Assemblaggio completo" }, new PhaseModel { PhaseID = 5, Description = "Assemblaggio Ferramenta" }, new PhaseModel { PhaseID = 6, Description = "Installazione e posa in opera" } ); // inizializzazione cicli di lavoro modelBuilder.Entity().HasData( new JobTaskModel { JobID = 1, Description = "Rivendita / servizi", Ordinal = 4, Lock = true }, new JobTaskModel { JobID = 2, Description = "Serramento Legno - Ciclo Completo con installazione", Ordinal = 3, Lock = true }, new JobTaskModel { JobID = 3, Description = "Realizzazione Trave", Ordinal = 5, Lock = true }, new JobTaskModel { JobID = 4, Description = "Realizzazione Cabinet", Ordinal = 6, Lock = true }, new JobTaskModel { JobID = 5, Description = "Realizzazione Parete", Ordinal = 7, Lock = true }, new JobTaskModel { JobID = 6, Description = "Serramento - ciclo base", Ordinal = 1, Lock = true }, new JobTaskModel { JobID = 7, Description = "Serramento - ciclo intermedio", Ordinal = 2, Lock = true } ); // init JobDriverConfig modelBuilder.Entity().HasData( new JobDriverConfigModel() { JobDriverConfID = 1, JobID = 6, JobDriverID = 3, CostDriverID = 3, Note = "Numero prodotti", Intercept = 0, Regress = 1 }, new JobDriverConfigModel() { JobDriverConfID = 2, JobID = 7, JobDriverID = 3, CostDriverID = 3, Note = "Numero prodotti", Intercept = 0, Regress = 1 }, new JobDriverConfigModel() { JobDriverConfID = 3, JobID = 7, JobDriverID = 1, CostDriverID = 1, Note = "Ore Equivalenti", Intercept = 0, Regress = 1.0 / 60.0, DefaultVal = 5 }, new JobDriverConfigModel() { JobDriverConfID = 4, JobID = 2, JobDriverID = 3, CostDriverID = 3, Note = "Numero prodotti", Intercept = 0, Regress = 1 }, new JobDriverConfigModel() { JobDriverConfID = 5, JobID = 2, JobDriverID = 1, CostDriverID = 1, Note = "Ore Equivalenti", Intercept = 0, Regress = 1.0 / 60.0, DefaultVal = 5 }, new JobDriverConfigModel() { JobDriverConfID = 6, JobID = 2, JobDriverID = 4, CostDriverID = 1, Note = "Ore Extra per complex Articolo (1 min/pezzo)", Intercept = 0, Regress = 1.0 / 60.0, DefaultVal = 8 } ); // init righe ciclo (fasi di ciclo) modelBuilder.Entity().HasData( // per fare 1 finestra singola/semplice taglio 4 tronchetti telaio + 4 tronchetti finestra, considero 1 perché mi arriva dal sistema preventivo/motore new JobStepModel { JobStepID = 1, JobID = 2, Index = 1, CostDriverID = 3, PhaseID = 1, ProductivityRate = 1, ResourceID = 1 }, // taglio profilo su linea saomad, considero 1 perché mi arriva dal sistema preventivo/motore new JobStepModel { JobStepID = 2, JobID = 2, Index = 2, CostDriverID = 2, PhaseID = 2, ProductivityRate = 1, ResourceID = 2 }, // verniciatura automatica, considero 1 perché mi arriva dal sistema preventivo/motore new JobStepModel { JobStepID = 3, JobID = 2, Index = 3, CostDriverID = 3, PhaseID = 3, ProductivityRate = 1, ResourceID = 4 }, // assemblaggio new JobStepModel { JobStepID = 4, JobID = 2, Index = 4, CostDriverID = 3, PhaseID = 4, ProductivityRate = 1, ResourceID = 6 }, // installazione new JobStepModel { JobStepID = 5, JobID = 2, Index = 5, CostDriverID = 3, PhaseID = 6, ProductivityRate = 1, ResourceID = 7 } ); // init item righe ciclo (articoli + prodotti delle fasi del ciclo) modelBuilder.Entity().HasData( // eventuale scarto del materiale tra grezzo e finito--> porta ad un numero >1 (QUI NON USATO, ho il valore calcolato dal motore) new JobStepItemModel { JobStepItemID = 1, JobStepID = 1, Index = 1, ItemID = 1, Qty = 1, Description = "Grezzo legno abete" }, // 1/10 litro di vernice per metro lineare prodotto new JobStepItemModel { JobStepItemID = 2, JobStepID = 3, Index = 2, ItemID = 8, Qty = 0.1, Description = "Vernice trasparente standard 1L" }, // uso un KIT intero (vs specifico n prodotti singoli) x questo modello; se dal preventivo arrivano n pezzi spcifici, qui li esplodiamo new JobStepItemModel { JobStepItemID = 3, JobStepID = 4, Index = 3, ItemID = 9, Qty = 1, Description = "Ferramenta AGB - rif. AGFD.00000.00000" } ); // JWD finestra cVetro Fisso / Cieca string jwdVetroFisso = "{\"ProfilePath\":\"Profilo78\",\"Material\":\"Abete\",\"ColorMaterial\":\"White\",\"Glass\":\"Vetro BE 2S 4/12/4\",\"AreaList\":[{\"Shape\":\"RECTANGLE\",\"DimensionList\":[{\"nIndex\":1,\"sName\":\"Width\",\"dValue\":800.0},{\"nIndex\":2,\"sName\":\"Height\",\"dValue\":1200.0}],\"JointList\":[{\"nIndex\":1,\"JointType\":\"FULL_H\"},{\"nIndex\":2,\"JointType\":\"FULL_H\"},{\"nIndex\":3,\"JointType\":\"FULL_H\"},{\"nIndex\":4,\"JointType\":\"FULL_H\"}],\"BottomRail\":false,\"BottomRailQty\":0,\"IdGroup\":1,\"AreaList\":[{\"FillType\":\"GLASS\",\"IdGroup\":4,\"AreaList\":[],\"AreaType\":\"FILL\"}],\"AreaType\":\"FRAME\"}]}"; // JWD finestra 1 Anta 800x1200 string jwdAntaSingola = "{\"ProfilePath\":\"Profilo78\",\"Material\":\"Abete\",\"ColorMaterial\":\"White\",\"Glass\":\"Vetro BE 2S 4/12/4\",\"AreaList\":[{\"Shape\":\"RECTANGLE\",\"DimensionList\":[{\"nIndex\":1,\"sName\":\"Width\",\"dValue\":800.0},{\"nIndex\":2,\"sName\":\"Height\",\"dValue\":1200.0}],\"JointList\":[{\"nIndex\":1,\"JointType\":\"FULL_H\"},{\"nIndex\":2,\"JointType\":\"FULL_H\"},{\"nIndex\":3,\"JointType\":\"FULL_H\"},{\"nIndex\":4,\"JointType\":\"FULL_H\"}],\"BottomRail\":false,\"BottomRailQty\":0,\"IdGroup\":1,\"AreaList\":[{\"bIsSashVertical\":true,\"SashList\":[{\"nSashId\":1,\"OpeningType\":\"TILTTURN_LEFT\",\"bHasHandle\":true,\"dDimension\":100.0}],\"SashType\":\"NULL\",\"JointList\":[{\"nIndex\":1,\"JointType\":\"FULL_H\"},{\"nIndex\":2,\"JointType\":\"FULL_H\"},{\"nIndex\":3,\"JointType\":\"FULL_H\"},{\"nIndex\":4,\"JointType\":\"FULL_H\"}],\"BottomRail\":false,\"BottomRailQty\":0,\"Hardware\":\"000558\",\"IdGroup\":2,\"AreaList\":[{\"FillType\":\"GLASS\",\"IdGroup\":3,\"AreaList\":[],\"AreaType\":\"FILL\"}],\"AreaType\":\"SASH\"}],\"AreaType\":\"FRAME\"}]}"; // inizializzazione dei valori di default x SellingItem modelBuilder.Entity().HasData( new SellingItemModel { SellingItemID = 1, IsService = false, Description = "Finestra Anta Singola", Cost = 500, Margin = 0.2, JobID = 2, SerStruct = jwdAntaSingola, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW }, new SellingItemModel { SellingItemID = 2, IsService = false, Description = "Finestra Vetro Fisso ", Cost = 300, Margin = 0.2, JobID = 2, SerStruct = jwdVetroFisso, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW }, new SellingItemModel { SellingItemID = 3, IsService = false, Description = "Persiana anta singola", Cost = 150, Margin = 0.1, JobID = 1, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW }, new SellingItemModel { SellingItemID = 4, IsService = true, Description = "Installazione", Cost = 200, Margin = 0.3, JobID = 1, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW }, new SellingItemModel { SellingItemID = 5, IsService = false, Description = "Trave lamellare", Cost = 1000, Margin = 0.3, JobID = 3, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.BEAM }, new SellingItemModel { SellingItemID = 6, IsService = false, Description = "Cabinet", Cost = 500, Margin = 0.3, JobID = 4, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.CABINET }, new SellingItemModel { SellingItemID = 7, IsService = false, Description = "Parete", Cost = 2000, Margin = 0.3, JobID = 5, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WALL } ); // inizializzazione dei valori di default x Offer modelBuilder.Entity().HasData( new OfferModel { OfferID = 1, RefYear = 2024, RefNum = 1, RefRev = 1, Description = "Offerta per tre serramenti", CustomerID = 2, DealerID = 2, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW }, new OfferModel { OfferID = 2, RefYear = 2024, RefNum = 2, RefRev = 1, Description = "Offerta BEAM", CustomerID = 2, DealerID = 2, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.BEAM }, new OfferModel { OfferID = 3, RefYear = 2024, RefNum = 3, RefRev = 1, Description = "Offerta Cabinet", CustomerID = 2, DealerID = 2, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.CABINET }, new OfferModel { OfferID = 4, RefYear = 2024, RefNum = 4, RefRev = 1, Description = "Offerta Wall", CustomerID = 2, DealerID = 2, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WALL } //new OfferModel { OfferID = 2, RefYear = 2025, RefNum = 2, RefRev = 1, Name = "Offerta per un serramento + installazione", CustomerID = 1, DealerID = 1 }, //new OfferModel { OfferID = 3, RefYear = 2025, RefNum = 3, RefRev = 1, Name = "Offerta per tre serramenti", CustomerID = 2, DealerID = 1 }, //new OfferModel { OfferID = 5, RefYear = 2025, RefNum = 4, RefRev = 2, Name = "Offerta per cinque serramenti + installazione", CustomerID = 3, DealerID = 2 } ); // inizializzazione dei valori di default x Offerta 1 = WINDOW modelBuilder.Entity().HasData( new OfferRowModel { OfferRowID = 2, OfferID = 1, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW, OfferRowUID = $"SOR.{DateTime.Today:yy}.{2:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 900, BomPrice = 950, SellingItemID = 1, Qty = 3, RowNum = 1, SerStruct = jwdAntaSingola, Note = "Finestra Anta Singola 2025", ItemSteps = "{}", BomOk = true, ItemOk = true }, new OfferRowModel { OfferRowID = 1, OfferID = 1, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW, OfferRowUID = $"SOR.{DateTime.Today:yy}.{1:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 900, BomPrice = 950, SellingItemID = 2, Qty = 3, RowNum = 2, SerStruct = jwdVetroFisso, Note = "Finestra Vetro Fisso 2025", ItemSteps = "{}", BomOk = true, ItemOk = true }, new OfferRowModel { OfferRowID = 3, OfferID = 1, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW, OfferRowUID = $"SOR.{DateTime.Today:yy}.{3:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 160, BomPrice = 200, SellingItemID = 3, Qty = 3, RowNum = 3, SerStruct = "{}", Note = "Persiana per Finestra anta singola 2025", ItemSteps = "{}", BomOk = true, ItemOk = true }, new OfferRowModel { OfferRowID = 4, OfferID = 1, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW, OfferRowUID = $"SOR.{DateTime.Today:yy}.{4:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 200, BomPrice = 250, SellingItemID = 4, Qty = 3, RowNum = 4, SerStruct = "{}", Note = "Installazione serramento", ItemSteps = "{}", BomOk = true, ItemOk = true } ); // inizializzazione dei valori di default x Offerta 2 = BEAM modelBuilder.Entity().HasData( new OfferRowModel { OfferRowID = 5, OfferID = 2, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.BEAM, OfferRowUID = $"SOR.{DateTime.Today:yy}.{5:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 800, BomPrice = 1150, SellingItemID = 5, Qty = 10, RowNum = 1, SerStruct = "", Note = "Demo file 01", ItemSteps = "{}", BomOk = true, ItemOk = true }, new OfferRowModel { OfferRowID = 6, OfferID = 2, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.BEAM, OfferRowUID = $"SOR.{DateTime.Today:yy}.{6:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 600, BomPrice = 950, SellingItemID = 5, Qty = 4, RowNum = 1, SerStruct = "", Note = "Demo file 02", ItemSteps = "{}", BomOk = true, ItemOk = true } ); // inizializzazione dei valori di default x Offerta 3 = CABINET modelBuilder.Entity().HasData( new OfferRowModel { OfferRowID = 7, OfferID = 3, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WALL, OfferRowUID = $"SOR.{DateTime.Today:yy}.{7:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 200, BomPrice = 250, SellingItemID = 6, Qty = 4, RowNum = 1, SerStruct = "", Note = "Demo file 01", ItemSteps = "{}", BomOk = true, ItemOk = true }, new OfferRowModel { OfferRowID = 8, OfferID = 3, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WALL, OfferRowUID = $"SOR.{DateTime.Today:yy}.{8:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 50, BomPrice = 80, SellingItemID = 6, Qty = 12, RowNum = 1, SerStruct = "", Note = "Demo file 02", ItemSteps = "{}", BomOk = true, ItemOk = true } ); // inizializzazione dei valori di default x Offerta 4 = WALL modelBuilder.Entity().HasData( new OfferRowModel { OfferRowID = 9, OfferID = 4, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.CABINET, OfferRowUID = $"SOR.{DateTime.Today:yy}.{9:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 800, BomPrice = 1150, SellingItemID = 7, Qty = 6, RowNum = 1, SerStruct = "", Note = "Demo file 01", ItemSteps = "{}", BomOk = true, ItemOk = true }, new OfferRowModel { OfferRowID = 10, OfferID = 4, Envir = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.CABINET, OfferRowUID = $"SOR.{DateTime.Today:yy}.{10:X8}", Inserted = DateTime.Now, Modified = DateTime.Now, BomCost = 600, BomPrice = 950, SellingItemID = 7, Qty = 4, RowNum = 1, SerStruct = "", Note = "Demo file 02", ItemSteps = "{}", BomOk = true, ItemOk = true } ); } #endregion Public Methods } }