diff --git a/Controladora/ControladoraPresupuestos.cs b/Controladora/ControladoraPresupuestos.cs index f6579ca..9979b3c 100644 --- a/Controladora/ControladoraPresupuestos.cs +++ b/Controladora/ControladoraPresupuestos.cs @@ -32,16 +32,7 @@ namespace Controladora $"El Presupuesto {t.Id} se Elimino correctamente": $"Fallo la Eliminacion del Presupuesto {t.Id}"; } - - public string Modificar(Presupuesto t) - { - if (t == null) return "El Presupuesto es nulo fallo la carga"; - - repositorioPresupuestos.Mod(t); - return (repositorioPresupuestos.Guardar()) ? - $"El Presupuesto {t.Id} se Modifico correctamente": - $"Fallo la Modificacion del Presupuesto {t.Id}"; - } + public string AceptarPresupuesto(Presupuesto t) { if (t == null) return "El Presupuesto es nulo fallo la carga"; @@ -83,12 +74,9 @@ namespace Controladora return productos; } - public object ListarProveedores() + public ReadOnlyCollection ListarProveedores() { - return ControladoraProveedores.Instance.Listar() - .Where(x => x.Habilitado == true) - .ToList() - .AsReadOnly(); + return ControladoraProveedores.Instance.Listar(); } public ReadOnlyCollection ListarTodo() diff --git a/Controladora/ControladoraProductos.cs b/Controladora/ControladoraProductos.cs index 839e453..1a9344b 100644 --- a/Controladora/ControladoraProductos.cs +++ b/Controladora/ControladoraProductos.cs @@ -17,9 +17,16 @@ namespace Controladora public ReadOnlyCollection ListarProveedores(Producto producto) { Producto productoalistar = new RepositorioProductos(new Context()).Listar().First(x => x.Id == producto.Id); - if (productoalistar == null) return new ReadOnlyCollection(new List()); + if (productoalistar == null) return new List().AsReadOnly(); return productoalistar.proveedores.AsReadOnly(); + } + public ReadOnlyCollection ListarCategorias(Producto producto) + { + Producto productoalistar = new RepositorioProductos(new Context()).Listar().First(x => x.Id == producto.Id); + if (productoalistar == null) return new List().AsReadOnly(); + return productoalistar.categorias.AsReadOnly(); + } public Producto? MostrarPorId(Producto producto) diff --git a/Entidades/OrdenDeCompra.cs b/Entidades/OrdenDeCompra.cs index 0748ff7..edf76c0 100644 --- a/Entidades/OrdenDeCompra.cs +++ b/Entidades/OrdenDeCompra.cs @@ -11,8 +11,7 @@ namespace Entidades public long IdProveedor { get; set; } public bool Entregado { get; set; } - private List detalles = new List(); - public ReadOnlyCollection Detalles => detalles.AsReadOnly(); + public List detalles = new List(); public void AñadirDetalle(DetalleOrdenDeCompra detalle) { detalles.Add(detalle); diff --git a/Informes/bin/Debug/net8.0/Entidades.dll b/Informes/bin/Debug/net8.0/Entidades.dll index 66a1039..16b2eae 100644 Binary files a/Informes/bin/Debug/net8.0/Entidades.dll and b/Informes/bin/Debug/net8.0/Entidades.dll differ diff --git a/Informes/bin/Debug/net8.0/Entidades.pdb b/Informes/bin/Debug/net8.0/Entidades.pdb index b28042f..c72e326 100644 Binary files a/Informes/bin/Debug/net8.0/Entidades.pdb and b/Informes/bin/Debug/net8.0/Entidades.pdb differ diff --git a/Informes/bin/Debug/net8.0/Informes.dll b/Informes/bin/Debug/net8.0/Informes.dll index 284ba5e..6c43533 100644 Binary files a/Informes/bin/Debug/net8.0/Informes.dll and b/Informes/bin/Debug/net8.0/Informes.dll differ diff --git a/Informes/bin/Debug/net8.0/Informes.pdb b/Informes/bin/Debug/net8.0/Informes.pdb index 57f102f..5e34663 100644 Binary files a/Informes/bin/Debug/net8.0/Informes.pdb and b/Informes/bin/Debug/net8.0/Informes.pdb differ diff --git a/Informes/obj/Debug/net8.0/Informes.AssemblyInfo.cs b/Informes/obj/Debug/net8.0/Informes.AssemblyInfo.cs index 61b0ed6..5cf9f1d 100644 --- a/Informes/obj/Debug/net8.0/Informes.AssemblyInfo.cs +++ b/Informes/obj/Debug/net8.0/Informes.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Informes")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+670190c44b669009d2d84e1f849117de0d18586f")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c15ae743ab4e6f1c270349cbe1eadde8c6404874")] [assembly: System.Reflection.AssemblyProductAttribute("Informes")] [assembly: System.Reflection.AssemblyTitleAttribute("Informes")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Informes/obj/Debug/net8.0/Informes.AssemblyInfoInputs.cache b/Informes/obj/Debug/net8.0/Informes.AssemblyInfoInputs.cache index 6dec131..77d0fca 100644 --- a/Informes/obj/Debug/net8.0/Informes.AssemblyInfoInputs.cache +++ b/Informes/obj/Debug/net8.0/Informes.AssemblyInfoInputs.cache @@ -1 +1 @@ -3686af964ab837044e10a22154c7a4ac73f28162a711d7a0fa37d00d14ff75af +063488f106d4df3b350dc1d03b4f97c1bb306fa93a8938b525a7dd6820ac6ea7 diff --git a/Informes/obj/Debug/net8.0/Informes.csproj.AssemblyReference.cache b/Informes/obj/Debug/net8.0/Informes.csproj.AssemblyReference.cache index 6393416..f5b433d 100644 Binary files a/Informes/obj/Debug/net8.0/Informes.csproj.AssemblyReference.cache and b/Informes/obj/Debug/net8.0/Informes.csproj.AssemblyReference.cache differ diff --git a/Informes/obj/Debug/net8.0/Informes.dll b/Informes/obj/Debug/net8.0/Informes.dll index 284ba5e..6c43533 100644 Binary files a/Informes/obj/Debug/net8.0/Informes.dll and b/Informes/obj/Debug/net8.0/Informes.dll differ diff --git a/Informes/obj/Debug/net8.0/Informes.pdb b/Informes/obj/Debug/net8.0/Informes.pdb index 57f102f..5e34663 100644 Binary files a/Informes/obj/Debug/net8.0/Informes.pdb and b/Informes/obj/Debug/net8.0/Informes.pdb differ diff --git a/Informes/obj/Debug/net8.0/ref/Informes.dll b/Informes/obj/Debug/net8.0/ref/Informes.dll index cf8b199..08eb243 100644 Binary files a/Informes/obj/Debug/net8.0/ref/Informes.dll and b/Informes/obj/Debug/net8.0/ref/Informes.dll differ diff --git a/Informes/obj/Debug/net8.0/refint/Informes.dll b/Informes/obj/Debug/net8.0/refint/Informes.dll index cf8b199..08eb243 100644 Binary files a/Informes/obj/Debug/net8.0/refint/Informes.dll and b/Informes/obj/Debug/net8.0/refint/Informes.dll differ diff --git a/Modelo/Context.cs b/Modelo/Context.cs index 1b7aad6..7c1d5b7 100644 --- a/Modelo/Context.cs +++ b/Modelo/Context.cs @@ -167,7 +167,7 @@ public class Context : Microsoft.EntityFrameworkCore.DbContext .HasKey(x => x.Id); modelBuilder.Entity() - .HasMany(x => x.Detalles) + .HasMany(x => x.detalles) .WithOne() .HasForeignKey(x => x.IdOrdenDeCompra); diff --git a/Modelo/Migrations/20240907203054_funcatodo.Designer.cs b/Modelo/Migrations/20240907203054_funcatodo.Designer.cs new file mode 100644 index 0000000..e06d38b --- /dev/null +++ b/Modelo/Migrations/20240907203054_funcatodo.Designer.cs @@ -0,0 +1,576 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Modelo; + +#nullable disable + +namespace Modelo.Migrations +{ + [DbContext(typeof(Context))] + [Migration("20240907203054_funcatodo")] + partial class funcatodo + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Entidades.Categoria", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Descripcion") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Categoria", (string)null); + }); + + modelBuilder.Entity("Entidades.Cliente", b => + { + b.Property("Cuit") + .HasColumnType("bigint"); + + b.Property("Apellido") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Correo") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Direccion") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Habilitado") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + b.Property("Nombre") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.HasKey("Cuit"); + + b.ToTable("Clientes", (string)null); + }); + + modelBuilder.Entity("Entidades.DetalleFactura", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("IdFactura") + .HasColumnType("int"); + + b.Property("Cantidad") + .HasColumnType("int"); + + b.Property("ProductoId") + .HasColumnType("int"); + + b.HasKey("Id", "IdFactura"); + + b.HasIndex("IdFactura"); + + b.HasIndex("ProductoId"); + + b.ToTable("DetallesFacturas", (string)null); + }); + + modelBuilder.Entity("Entidades.DetalleOrdenDeCompra", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("IdOrdenDeCompra") + .HasColumnType("int"); + + b.Property("Cantidad") + .HasColumnType("int"); + + b.Property("IdPresupuesto") + .HasColumnType("int"); + + b.Property("MontoCU") + .HasColumnType("float"); + + b.Property("ProductoId") + .HasColumnType("int"); + + b.HasKey("Id", "IdOrdenDeCompra"); + + b.HasIndex("IdOrdenDeCompra"); + + b.HasIndex("ProductoId"); + + b.ToTable("DetalleOrdenDeCompras"); + }); + + modelBuilder.Entity("Entidades.DetallePresupuesto", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("IdPresupuesto") + .HasColumnType("int"); + + b.Property("Cantidad") + .HasColumnType("int"); + + b.Property("MontoCUPropuesto") + .HasColumnType("float"); + + b.Property("ProductoId") + .HasColumnType("int"); + + b.HasKey("Id", "IdPresupuesto"); + + b.HasIndex("IdPresupuesto"); + + b.HasIndex("ProductoId"); + + b.ToTable("DetallePresupuestos"); + }); + + modelBuilder.Entity("Entidades.Factura", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClienteCuit") + .HasColumnType("bigint"); + + b.Property("Fecha") + .HasColumnType("datetime2"); + + b.Property("IdCliente") + .HasColumnType("bigint"); + + b.Property("Total") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("ClienteCuit"); + + b.ToTable("Facturas", (string)null); + }); + + modelBuilder.Entity("Entidades.Lote", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("IdRemito") + .HasColumnType("int"); + + b.Property("Cantidad") + .HasColumnType("int"); + + b.Property("Fecha") + .HasColumnType("datetime2"); + + b.Property("Habilitado") + .HasColumnType("bit"); + + b.Property("ProductoId") + .HasColumnType("int"); + + b.HasKey("Id", "IdRemito"); + + b.HasIndex("IdRemito"); + + b.HasIndex("ProductoId"); + + b.ToTable("Lotes"); + }); + + modelBuilder.Entity("Entidades.OrdenDeCompra", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Entregado") + .HasColumnType("bit"); + + b.Property("IdProveedor") + .HasColumnType("bigint"); + + b.Property("ProveedorCuit") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("ProveedorCuit"); + + b.ToTable("OrdenDeCompras"); + }); + + modelBuilder.Entity("Entidades.Presupuesto", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Aceptado") + .HasColumnType("bit"); + + b.Property("Fecha") + .HasColumnType("datetime2"); + + b.Property("Habilitado") + .HasColumnType("bit"); + + b.Property("IdProveedor") + .HasColumnType("bigint"); + + b.Property("ProveedorCuit") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("ProveedorCuit"); + + b.ToTable("Presupuestos"); + }); + + modelBuilder.Entity("Entidades.Producto", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Discriminator") + .IsRequired() + .HasMaxLength(21) + .HasColumnType("nvarchar(21)"); + + b.Property("EsPerecedero") + .HasColumnType("bit"); + + b.Property("Habilitado") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + b.Property("Nombre") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Precio") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.ToTable("Producto"); + + b.HasDiscriminator().HasValue("Producto"); + + b.UseTphMappingStrategy(); + }); + + modelBuilder.Entity("Entidades.Proveedor", b => + { + b.Property("Cuit") + .HasColumnType("bigint"); + + b.Property("Direccion") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("Habilitado") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + b.Property("Nombre") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RazonSocial") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("Cuit"); + + b.ToTable("Proveedores"); + }); + + modelBuilder.Entity("Entidades.Remito", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IdProveedor") + .HasColumnType("int"); + + b.Property("ProveedorCuit") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("ProveedorCuit"); + + b.ToTable("Remitos"); + }); + + modelBuilder.Entity("ProductoCategoria", b => + { + b.Property("CategoriaId") + .HasColumnType("int"); + + b.Property("ProductoId") + .HasColumnType("int"); + + b.HasKey("CategoriaId", "ProductoId"); + + b.HasIndex("ProductoId"); + + b.ToTable("ProductoCategoria"); + }); + + modelBuilder.Entity("ProductoProveedor", b => + { + b.Property("ProveedorId") + .HasColumnType("bigint"); + + b.Property("ProductoId") + .HasColumnType("int"); + + b.HasKey("ProveedorId", "ProductoId"); + + b.HasIndex("ProductoId"); + + b.ToTable("ProductoProveedor"); + }); + + modelBuilder.Entity("Entidades.ProductoNoPercedero", b => + { + b.HasBaseType("Entidades.Producto"); + + b.Property("TipoDeEnvase") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasDiscriminator().HasValue("ProductoNoPercedero"); + }); + + modelBuilder.Entity("Entidades.ProductoPercedero", b => + { + b.HasBaseType("Entidades.Producto"); + + b.Property("MesesHastaConsumoPreferente") + .HasColumnType("int"); + + b.Property("MesesHastaVencimiento") + .HasColumnType("int"); + + b.HasDiscriminator().HasValue("ProductoPercedero"); + }); + + modelBuilder.Entity("Entidades.DetalleFactura", b => + { + b.HasOne("Entidades.Factura", null) + .WithMany("Detalles") + .HasForeignKey("IdFactura") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entidades.Producto", "Producto") + .WithMany() + .HasForeignKey("ProductoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Producto"); + }); + + modelBuilder.Entity("Entidades.DetalleOrdenDeCompra", b => + { + b.HasOne("Entidades.OrdenDeCompra", null) + .WithMany("Detalles") + .HasForeignKey("IdOrdenDeCompra") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entidades.Producto", "Producto") + .WithMany() + .HasForeignKey("ProductoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Producto"); + }); + + modelBuilder.Entity("Entidades.DetallePresupuesto", b => + { + b.HasOne("Entidades.Presupuesto", null) + .WithMany("detalles") + .HasForeignKey("IdPresupuesto") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entidades.Producto", "Producto") + .WithMany() + .HasForeignKey("ProductoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Producto"); + }); + + modelBuilder.Entity("Entidades.Factura", b => + { + b.HasOne("Entidades.Cliente", "Cliente") + .WithMany() + .HasForeignKey("ClienteCuit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cliente"); + }); + + modelBuilder.Entity("Entidades.Lote", b => + { + b.HasOne("Entidades.Remito", null) + .WithMany("Lotes") + .HasForeignKey("IdRemito") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entidades.Producto", "Producto") + .WithMany() + .HasForeignKey("ProductoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Producto"); + }); + + modelBuilder.Entity("Entidades.OrdenDeCompra", b => + { + b.HasOne("Entidades.Proveedor", "Proveedor") + .WithMany() + .HasForeignKey("ProveedorCuit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Proveedor"); + }); + + modelBuilder.Entity("Entidades.Presupuesto", b => + { + b.HasOne("Entidades.Proveedor", "Proveedor") + .WithMany() + .HasForeignKey("ProveedorCuit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Proveedor"); + }); + + modelBuilder.Entity("Entidades.Remito", b => + { + b.HasOne("Entidades.Proveedor", "Proveedor") + .WithMany() + .HasForeignKey("ProveedorCuit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Proveedor"); + }); + + modelBuilder.Entity("ProductoCategoria", b => + { + b.HasOne("Entidades.Categoria", null) + .WithMany() + .HasForeignKey("CategoriaId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entidades.Producto", null) + .WithMany() + .HasForeignKey("ProductoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("ProductoProveedor", b => + { + b.HasOne("Entidades.Producto", null) + .WithMany() + .HasForeignKey("ProductoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entidades.Proveedor", null) + .WithMany() + .HasForeignKey("ProveedorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Entidades.Factura", b => + { + b.Navigation("Detalles"); + }); + + modelBuilder.Entity("Entidades.OrdenDeCompra", b => + { + b.Navigation("Detalles"); + }); + + modelBuilder.Entity("Entidades.Presupuesto", b => + { + b.Navigation("detalles"); + }); + + modelBuilder.Entity("Entidades.Remito", b => + { + b.Navigation("Lotes"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Modelo/Migrations/20240907203054_funcatodo.cs b/Modelo/Migrations/20240907203054_funcatodo.cs new file mode 100644 index 0000000..0633ffd --- /dev/null +++ b/Modelo/Migrations/20240907203054_funcatodo.cs @@ -0,0 +1,95 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Modelo.Migrations +{ + /// + public partial class funcatodo : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_DetallesFacturas_Producto_IdProducto", + table: "DetallesFacturas"); + + migrationBuilder.DropColumn( + name: "IdProducto", + table: "Lotes"); + + migrationBuilder.DropColumn( + name: "IdProducto", + table: "DetallePresupuestos"); + + migrationBuilder.DropColumn( + name: "IdProducto", + table: "DetalleOrdenDeCompras"); + + migrationBuilder.RenameColumn( + name: "IdProducto", + table: "DetallesFacturas", + newName: "ProductoId"); + + migrationBuilder.RenameIndex( + name: "IX_DetallesFacturas_IdProducto", + table: "DetallesFacturas", + newName: "IX_DetallesFacturas_ProductoId"); + + migrationBuilder.AddForeignKey( + name: "FK_DetallesFacturas_Producto_ProductoId", + table: "DetallesFacturas", + column: "ProductoId", + principalTable: "Producto", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_DetallesFacturas_Producto_ProductoId", + table: "DetallesFacturas"); + + migrationBuilder.RenameColumn( + name: "ProductoId", + table: "DetallesFacturas", + newName: "IdProducto"); + + migrationBuilder.RenameIndex( + name: "IX_DetallesFacturas_ProductoId", + table: "DetallesFacturas", + newName: "IX_DetallesFacturas_IdProducto"); + + migrationBuilder.AddColumn( + name: "IdProducto", + table: "Lotes", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "IdProducto", + table: "DetallePresupuestos", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "IdProducto", + table: "DetalleOrdenDeCompras", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddForeignKey( + name: "FK_DetallesFacturas_Producto_IdProducto", + table: "DetallesFacturas", + column: "IdProducto", + principalTable: "Producto", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/Modelo/Migrations/ContextModelSnapshot.cs b/Modelo/Migrations/ContextModelSnapshot.cs index 3b25ab6..703d6c3 100644 --- a/Modelo/Migrations/ContextModelSnapshot.cs +++ b/Modelo/Migrations/ContextModelSnapshot.cs @@ -86,14 +86,14 @@ namespace Modelo.Migrations b.Property("Cantidad") .HasColumnType("int"); - b.Property("IdProducto") + b.Property("ProductoId") .HasColumnType("int"); b.HasKey("Id", "IdFactura"); b.HasIndex("IdFactura"); - b.HasIndex("IdProducto"); + b.HasIndex("ProductoId"); b.ToTable("DetallesFacturas", (string)null); }); @@ -112,9 +112,6 @@ namespace Modelo.Migrations b.Property("IdPresupuesto") .HasColumnType("int"); - b.Property("IdProducto") - .HasColumnType("int"); - b.Property("MontoCU") .HasColumnType("float"); @@ -127,7 +124,7 @@ namespace Modelo.Migrations b.HasIndex("ProductoId"); - b.ToTable("DetalleOrdenDeCompras"); + b.ToTable("DetalleOrdenDeCompras", (string)null); }); modelBuilder.Entity("Entidades.DetallePresupuesto", b => @@ -141,9 +138,6 @@ namespace Modelo.Migrations b.Property("Cantidad") .HasColumnType("int"); - b.Property("IdProducto") - .HasColumnType("int"); - b.Property("MontoCUPropuesto") .HasColumnType("float"); @@ -156,7 +150,7 @@ namespace Modelo.Migrations b.HasIndex("ProductoId"); - b.ToTable("DetallePresupuestos"); + b.ToTable("DetallePresupuestos", (string)null); }); modelBuilder.Entity("Entidades.Factura", b => @@ -203,9 +197,6 @@ namespace Modelo.Migrations b.Property("Habilitado") .HasColumnType("bit"); - b.Property("IdProducto") - .HasColumnType("int"); - b.Property("ProductoId") .HasColumnType("int"); @@ -215,7 +206,7 @@ namespace Modelo.Migrations b.HasIndex("ProductoId"); - b.ToTable("Lotes"); + b.ToTable("Lotes", (string)null); }); modelBuilder.Entity("Entidades.OrdenDeCompra", b => @@ -239,7 +230,7 @@ namespace Modelo.Migrations b.HasIndex("ProveedorCuit"); - b.ToTable("OrdenDeCompras"); + b.ToTable("OrdenDeCompras", (string)null); }); modelBuilder.Entity("Entidades.Presupuesto", b => @@ -269,7 +260,7 @@ namespace Modelo.Migrations b.HasIndex("ProveedorCuit"); - b.ToTable("Presupuestos"); + b.ToTable("Presupuestos", (string)null); }); modelBuilder.Entity("Entidades.Producto", b => @@ -303,7 +294,7 @@ namespace Modelo.Migrations b.HasKey("Id"); - b.ToTable("Producto"); + b.ToTable("Producto", (string)null); b.HasDiscriminator().HasValue("Producto"); @@ -337,7 +328,7 @@ namespace Modelo.Migrations b.HasKey("Cuit"); - b.ToTable("Proveedores"); + b.ToTable("Proveedores", (string)null); }); modelBuilder.Entity("Entidades.Remito", b => @@ -358,7 +349,7 @@ namespace Modelo.Migrations b.HasIndex("ProveedorCuit"); - b.ToTable("Remitos"); + b.ToTable("Remitos", (string)null); }); modelBuilder.Entity("ProductoCategoria", b => @@ -373,7 +364,7 @@ namespace Modelo.Migrations b.HasIndex("ProductoId"); - b.ToTable("ProductoCategoria"); + b.ToTable("ProductoCategoria", (string)null); }); modelBuilder.Entity("ProductoProveedor", b => @@ -388,7 +379,7 @@ namespace Modelo.Migrations b.HasIndex("ProductoId"); - b.ToTable("ProductoProveedor"); + b.ToTable("ProductoProveedor", (string)null); }); modelBuilder.Entity("Entidades.ProductoNoPercedero", b => @@ -425,7 +416,7 @@ namespace Modelo.Migrations b.HasOne("Entidades.Producto", "Producto") .WithMany() - .HasForeignKey("IdProducto") + .HasForeignKey("ProductoId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); diff --git a/Modelo/Repositorio.cs b/Modelo/Repositorio.cs index 40ee30e..bea3146 100644 --- a/Modelo/Repositorio.cs +++ b/Modelo/Repositorio.cs @@ -22,7 +22,7 @@ namespace Modelo } catch (DbUpdateException ex) { - Console.Error.WriteLine(ex); + throw; } return ret; diff --git a/Modelo/RepositorioCategoria.cs b/Modelo/RepositorioCategoria.cs index d6fcc2b..3d54bcb 100644 --- a/Modelo/RepositorioCategoria.cs +++ b/Modelo/RepositorioCategoria.cs @@ -14,7 +14,9 @@ namespace Modelo public override List Listar() { - return context.Categorias.ToList(); + return context.Categorias + .AsNoTracking() + .ToList(); } public Categoria ObtenerPorId(int Tid) diff --git a/Modelo/RepositorioClientes.cs b/Modelo/RepositorioClientes.cs index 28865a5..bd71285 100644 --- a/Modelo/RepositorioClientes.cs +++ b/Modelo/RepositorioClientes.cs @@ -1,4 +1,5 @@ using Entidades; +using Microsoft.EntityFrameworkCore; using System.Security.Cryptography; namespace Modelo @@ -13,7 +14,9 @@ namespace Modelo public override List Listar() { - return context.Clientes.ToList(); + return context.Clientes + .AsNoTracking() + .ToList(); } public Cliente ObtenerPorId(Int64 Tid) diff --git a/Modelo/RepositorioFactura.cs b/Modelo/RepositorioFactura.cs index 6f48105..084c41b 100644 --- a/Modelo/RepositorioFactura.cs +++ b/Modelo/RepositorioFactura.cs @@ -1,5 +1,6 @@ using System.Collections.ObjectModel; using Entidades; +using Microsoft.EntityFrameworkCore; namespace Modelo { @@ -12,7 +13,9 @@ namespace Modelo public override List Listar() { - return context.Facturas.ToList(); + return context.Facturas + .AsNoTracking() + .ToList(); } public Factura ObtenerPorId(int Tid) diff --git a/Modelo/RepositorioLote.cs b/Modelo/RepositorioLote.cs index c7ed6bc..09d57d3 100644 --- a/Modelo/RepositorioLote.cs +++ b/Modelo/RepositorioLote.cs @@ -1,4 +1,5 @@ using Entidades; +using Microsoft.EntityFrameworkCore; using System.Runtime.Intrinsics.Arm; namespace Modelo @@ -12,7 +13,10 @@ namespace Modelo public override List Listar() { - return context.Lotes.ToList(); + return context.Lotes + .AsNoTracking() + .Include(x => x.Producto) + .ToList(); } public Lote ObtenerPorId(int Tid) diff --git a/Modelo/RepositorioOrdenDeCompra.cs b/Modelo/RepositorioOrdenDeCompra.cs index 136bf6a..312d7f2 100644 --- a/Modelo/RepositorioOrdenDeCompra.cs +++ b/Modelo/RepositorioOrdenDeCompra.cs @@ -1,5 +1,6 @@ using System.Collections.ObjectModel; using Entidades; +using Microsoft.EntityFrameworkCore; namespace Modelo { @@ -12,7 +13,12 @@ namespace Modelo public override List Listar() { - return context.OrdenDeCompras.ToList(); + return context.OrdenDeCompras + .AsNoTracking() + .Include(x => x.Proveedor) + .Include(x => x.detalles) + .ThenInclude(x => x.Producto) + .ToList(); } public OrdenDeCompra ObtenerPorId(int Tid) @@ -23,6 +29,14 @@ namespace Modelo public override void Add(OrdenDeCompra t) { + t.Proveedor = context.Proveedores.First(x => x.Cuit == t.Proveedor.Cuit); + + foreach (var detalle in t.detalles) + { + detalle.Producto = (detalle.Producto.EsPerecedero) ? + context.ProductoPercederos.First(x => x.Id == detalle.Producto.Id) : + context.ProductoNoPercederos.First(x => x.Id == detalle.Producto.Id); + } context.OrdenDeCompras.Add(t); } diff --git a/Modelo/RepositorioPresupuesto.cs b/Modelo/RepositorioPresupuesto.cs index 312ec6d..65b15e4 100644 --- a/Modelo/RepositorioPresupuesto.cs +++ b/Modelo/RepositorioPresupuesto.cs @@ -1,5 +1,6 @@ using System.Collections.ObjectModel; using Entidades; +using Microsoft.EntityFrameworkCore; namespace Modelo { @@ -12,7 +13,12 @@ namespace Modelo public override List Listar() { - return context.Presupuestos.ToList(); + return context.Presupuestos + .AsNoTracking() + .Include(x => x.detalles) + .ThenInclude(x => x.Producto) + .Include(x => x.Proveedor) + .ToList(); } public Presupuesto ObtenerPorId(int Tid) @@ -23,6 +29,18 @@ namespace Modelo public override void Add(Presupuesto t) { + t.Proveedor = context.Proveedores.First(x => x.Cuit == t.Proveedor.Cuit); + + foreach (var detalle in t.detalles) + { + detalle.IdPresupuesto = t.Id; + + detalle.Producto = detalle.Producto.EsPerecedero ? + context.ProductoPercederos.First(x => x.Id == detalle.Producto.Id) : + context.ProductoNoPercederos.First(x => x.Id == detalle.Producto.Id); + + + } context.Presupuestos.Add(t); } @@ -34,8 +52,10 @@ namespace Modelo } public override void Mod(Presupuesto t) - { - context.Presupuestos.Update(t); + { // más que modificar es un marcar como aceptado + var pre = context.Presupuestos.First(x => x.Id == t.Id); + pre.Aceptado = t.Aceptado; + } } } \ No newline at end of file diff --git a/Modelo/RepositorioProductoNoPercedero.cs b/Modelo/RepositorioProductoNoPercedero.cs index b0f78e6..9aab79e 100644 --- a/Modelo/RepositorioProductoNoPercedero.cs +++ b/Modelo/RepositorioProductoNoPercedero.cs @@ -1,4 +1,5 @@ using Entidades; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -16,7 +17,11 @@ namespace Modelo public override List Listar() { - return context.ProductoNoPercederos.ToList(); + return context.ProductoNoPercederos + .AsNoTracking() + .Include(x => x.proveedores) + .Include(x => x.categorias) + .ToList(); } public ProductoNoPercedero ObtenerPorId(int Tid) @@ -27,6 +32,16 @@ namespace Modelo public override void Add(ProductoNoPercedero t) { + foreach (var prov in t.proveedores) + { + var prove = context.Proveedores.First(x => x.Cuit == prov.Cuit); + t.proveedores.Add(prove); + } + foreach (var categoria in t.categorias) + { + var cat = context.Categorias.First(x => x.Id == categoria.Id); + t.categorias.Add(cat); + } context.ProductoNoPercederos.Add(t); } @@ -39,7 +54,30 @@ namespace Modelo public override void Mod(ProductoNoPercedero t) { - context.ProductoNoPercederos.Update(t); + ProductoNoPercedero pro = context.ProductoNoPercederos + .Include(x => x.proveedores) + .Include(x => x.categorias) + .First(x => x.Id == t.Id); + + pro.Nombre = t.Nombre; + pro.Precio = t.Precio; + pro.Habilitado = t.Habilitado; + pro.TipoDeEnvase = t.TipoDeEnvase; + pro.EsPerecedero = t.EsPerecedero; + pro.proveedores.Clear(); + pro.categorias.Clear(); + + foreach (var prov in t.proveedores) + { + var prove = context.Proveedores.First(x => x.Cuit == prov.Cuit); + pro.proveedores.Add(prove); + } + + foreach (var categoria in t.categorias) + { + var cat = context.Categorias.First(x => x.Id == categoria.Id); + pro.categorias.Add(cat); + } } } } diff --git a/Modelo/RepositorioProductos.cs b/Modelo/RepositorioProductos.cs index e1551b1..79445bf 100644 --- a/Modelo/RepositorioProductos.cs +++ b/Modelo/RepositorioProductos.cs @@ -1,4 +1,5 @@ using Entidades; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -20,8 +21,16 @@ namespace Modelo public ReadOnlyCollection Listar() { List prod = new(); - prod.AddRange(_context.ProductoNoPercederos.ToList()); - prod.AddRange(_context.ProductoPercederos.ToList()); + prod.AddRange(_context.ProductoNoPercederos + .AsNoTracking() + .Include(x => x.categorias) + .Include(x => x.proveedores) + .ToList()); + prod.AddRange(_context.ProductoPercederos + .AsNoTracking() + .Include(x => x.categorias) + .Include(x => x.proveedores) + .ToList()); return prod.AsReadOnly(); } diff --git a/Modelo/RepositorioProductosPercedero.cs b/Modelo/RepositorioProductosPercedero.cs index 08472ce..7af57f2 100644 --- a/Modelo/RepositorioProductosPercedero.cs +++ b/Modelo/RepositorioProductosPercedero.cs @@ -1,4 +1,5 @@ using Entidades; +using Microsoft.EntityFrameworkCore; namespace Modelo { @@ -11,7 +12,11 @@ namespace Modelo public override List Listar() { - return context.ProductoPercederos.ToList(); + return context.ProductoPercederos + .AsNoTracking() + .Include(x => x.proveedores) + .Include(x => x.categorias) + .ToList(); } public ProductoPercedero ObtenerPorId(int Tid) @@ -22,6 +27,16 @@ namespace Modelo public override void Add(ProductoPercedero t) { + foreach (var prov in t.proveedores) + { + var prove = context.Proveedores.First(x => x.Cuit == prov.Cuit); + t.proveedores.Add(prove); + } + foreach (var categoria in t.categorias) + { + var cat = context.Categorias.First(x => x.Id == categoria.Id); + t.categorias.Add(cat); + } context.ProductoPercederos.Add(t); } @@ -34,7 +49,40 @@ namespace Modelo public override void Mod(ProductoPercedero t) { - context.ProductoPercederos.Update(t); + ProductoPercedero pro = context.ProductoPercederos + .Include(x => x.proveedores) + .Include(x => x.categorias) + .First(x => x.Id == t.Id); + + pro.Nombre = t.Nombre; + pro.Precio = t.Precio; + pro.Habilitado = t.Habilitado; + pro.MesesHastaConsumoPreferente = t.MesesHastaConsumoPreferente; + pro.MesesHastaVencimiento = t.MesesHastaVencimiento; + pro.EsPerecedero = t.EsPerecedero; + pro.proveedores.Clear(); + pro.categorias.Clear(); + + foreach (var prov in t.proveedores) + { + var prove = context.Proveedores.First(x => x.Cuit == prov.Cuit); + pro.proveedores.Add(prove); + } + + foreach (var categoria in t.categorias) + { + var cate = context.Categorias.First(x => x.Id == categoria.Id); + pro.categorias.Add(cate); // Añade las categorías actualizadas + } + //List proveedores = new List(); + //foreach (var prov in t.proveedores) + //{ + // var prove = context.Proveedores.First(x => x.Cuit == prov.Cuit); + // proveedores.Add(prove); + //} + //t.proveedores = proveedores; + //context.ProductoPercederos.Update(t); + } } } diff --git a/Modelo/RepositorioProveedor.cs b/Modelo/RepositorioProveedor.cs index c68076b..1b212b0 100644 --- a/Modelo/RepositorioProveedor.cs +++ b/Modelo/RepositorioProveedor.cs @@ -1,4 +1,5 @@ using Entidades; +using Microsoft.EntityFrameworkCore; namespace Modelo { @@ -11,7 +12,9 @@ namespace Modelo public override List Listar() { - return context.Proveedores.ToList(); + return context.Proveedores + .AsNoTracking() + .ToList(); } public Proveedor ObtenerPorId(long Tid) diff --git a/Modelo/RepositorioRemito.cs b/Modelo/RepositorioRemito.cs index 53a964d..02c1d24 100644 --- a/Modelo/RepositorioRemito.cs +++ b/Modelo/RepositorioRemito.cs @@ -1,5 +1,6 @@ using System.Collections.ObjectModel; using Entidades; +using Microsoft.EntityFrameworkCore; namespace Modelo { @@ -13,7 +14,12 @@ namespace Modelo public override List Listar() { - return context.Remitos.ToList(); + return context.Remitos + .AsNoTracking() + .Include(x => x.Lotes) + .ThenInclude(x => x.Producto) + .Include(x => x.Proveedor) + .ToList(); } public Remito ObtenerPorId(int Tid) diff --git a/Vista/FrmClientes.Designer.cs b/Vista/FrmClientes.Designer.cs index 45cc3f2..7afeae9 100644 --- a/Vista/FrmClientes.Designer.cs +++ b/Vista/FrmClientes.Designer.cs @@ -65,7 +65,7 @@ groupBox1.Controls.Add(BtnModificar); groupBox1.Location = new Point(12, 2); groupBox1.Name = "groupBox1"; - groupBox1.Size = new Size(776, 351); + groupBox1.Size = new Size(1206, 341); groupBox1.TabIndex = 3; groupBox1.TabStop = false; // @@ -89,16 +89,15 @@ dgvCliente.MultiSelect = false; dgvCliente.Name = "dgvCliente"; dgvCliente.ReadOnly = true; - dgvCliente.RowTemplate.Height = 25; dgvCliente.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dgvCliente.Size = new Size(737, 235); + dgvCliente.Size = new Size(1194, 235); dgvCliente.TabIndex = 3; // // FrmClientes // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(800, 450); + ClientSize = new Size(1230, 509); Controls.Add(groupBox1); Name = "FrmClientes"; Text = "Clientes"; diff --git a/Vista/FrmClientes.resx b/Vista/FrmClientes.resx index a395bff..8b2ff64 100644 --- a/Vista/FrmClientes.resx +++ b/Vista/FrmClientes.resx @@ -1,7 +1,7 @@