From 670190c44b669009d2d84e1f849117de0d18586f Mon Sep 17 00:00:00 2001 From: fedpo Date: Thu, 22 Aug 2024 05:41:35 +0100 Subject: [PATCH] estoy cansado hay que hacer el tema de las categorias y las controladoras de productospercederos y no percederos --- .vs/Final_OOP/v17/.suo | Bin 179712 -> 197120 bytes Controladora/ControladoraCategorias.cs | 5 ++- Controladora/ControladoraFacturas.cs | 1 - Controladora/ControladoraLotes.cs | 10 +++++ Controladora/ControladoraOrdenesDeCompra.cs | 25 +++++++----- Controladora/ControladoraPresupuestos.cs | 28 ++++++++----- .../ControladoraProductoNoPercedero.cs | 12 ++++++ Controladora/ControladoraProductoPercedero.cs | 12 ++++++ Controladora/ControladoraProductos.cs | 38 +++--------------- Controladora/ControladoraProveedores.cs | 19 ++++++--- Controladora/ControladoraRemito.cs | 33 +++++++++------ Controladora/Singleton.cs | 8 +++- Informes/bin/Debug/net8.0/Entidades.dll | Bin 16896 -> 17920 bytes Informes/bin/Debug/net8.0/Entidades.pdb | Bin 17360 -> 17576 bytes Informes/bin/Debug/net8.0/Informes.dll | Bin 8704 -> 8704 bytes Informes/bin/Debug/net8.0/Informes.pdb | Bin 11468 -> 11468 bytes .../obj/Debug/net8.0/Informes.AssemblyInfo.cs | 5 ++- .../net8.0/Informes.AssemblyInfoInputs.cache | 2 +- .../Informes.csproj.AssemblyReference.cache | Bin 709 -> 709 bytes Informes/obj/Debug/net8.0/Informes.dll | Bin 8704 -> 8704 bytes Informes/obj/Debug/net8.0/Informes.pdb | Bin 11468 -> 11468 bytes Informes/obj/Debug/net8.0/ref/Informes.dll | Bin 5120 -> 5120 bytes Informes/obj/Debug/net8.0/refint/Informes.dll | Bin 5120 -> 5120 bytes Modelo/RepositorioLote.cs | 10 ++++- Modelo/RepositorioPresupuesto.cs | 1 - Modelo/RepositorioProductos.cs | 18 ++++++++- Vista/FrmFactura.cs | 1 - Vista/FrmProductos.cs | 5 ++- 28 files changed, 150 insertions(+), 83 deletions(-) create mode 100644 Controladora/ControladoraProductoNoPercedero.cs create mode 100644 Controladora/ControladoraProductoPercedero.cs diff --git a/.vs/Final_OOP/v17/.suo b/.vs/Final_OOP/v17/.suo index e294371b52d6290e642d51f1881953d2af9cb42c..50e89fb34cea915fe13de8af5b1651be1ee1ac3f 100644 GIT binary patch delta 16757 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 delta 12763 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 t+=8C7$tR9`j*; Listar() { - return repositorioCategoria.Listar().ToList().AsReadOnly(); + return repositorioCategoria.Listar().AsReadOnly(); } } } diff --git a/Controladora/ControladoraFacturas.cs b/Controladora/ControladoraFacturas.cs index c098000..c1f33b6 100644 --- a/Controladora/ControladoraFacturas.cs +++ b/Controladora/ControladoraFacturas.cs @@ -75,7 +75,6 @@ namespace Controladora public ReadOnlyCollection Listar() { return repositorioFacturas.Listar() - .ToList() .AsReadOnly(); } diff --git a/Controladora/ControladoraLotes.cs b/Controladora/ControladoraLotes.cs index 2f1968b..c799625 100644 --- a/Controladora/ControladoraLotes.cs +++ b/Controladora/ControladoraLotes.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using System.Reflection.Metadata.Ecma335; using System.Text; using System.Threading.Tasks; @@ -17,6 +18,15 @@ namespace Controladora repositorioLotes = new(new Context()); } + public string AltaStock(Remito t) + { + if (t == null) return "Esta Mal Cargado"; + + repositorioLotes.Add(t); + return repositorioLotes.Guardar() ? + "Se Cargo Correctamente" : + "Fallo la Carga"; + } public string DisminuirStock(ReadOnlyCollection detalleFactura) { var ret = false; diff --git a/Controladora/ControladoraOrdenesDeCompra.cs b/Controladora/ControladoraOrdenesDeCompra.cs index 79efe13..1844a41 100644 --- a/Controladora/ControladoraOrdenesDeCompra.cs +++ b/Controladora/ControladoraOrdenesDeCompra.cs @@ -30,7 +30,8 @@ namespace Controladora private bool ProductoCheck(ReadOnlyCollection ldetalles) { bool ret = false; - var lproductos = RepositorioProductos.Instance.Listar(); + + var lproductos = new RepositorioProductos(new Context()).Listar(); Parallel.ForEach(ldetalles, (ll) => { var producto = lproductos.FirstOrDefault(x => x.Id == ll.Producto.Id); @@ -45,8 +46,9 @@ namespace Controladora { if (t == null) return "El OrdenDeCompra es nulo fallo la carga"; if (t.Id < 0) return "El Id esta mal cargado"; - - return (RepositorioOrdenDeCompra.Instance.Del(t)) ? + + repositorioOrdenDeCompra.Del(t); + return (repositorioOrdenDeCompra.Guardar()) ? $"El OrdenDeCompra {t.Id} se Elimino correctamente": $"Fallo la Eliminacion del OrdenDeCompra {t.Id}"; } @@ -55,19 +57,20 @@ namespace Controladora { if (t == null) return "El OrdenDeCompra es nulo fallo la carga"; - return (RepositorioOrdenDeCompra.Instance.Mod(t)) ? + repositorioOrdenDeCompra.Mod(t); + return (repositorioOrdenDeCompra.Guardar()) ? $"El OrdenDeCompra {t.Id} se Modifico correctamente": $"Fallo la Modificacion del OrdenDeCompra {t.Id}"; } public ReadOnlyCollection Listar() { - return RepositorioOrdenDeCompra.Instance.Listar(); + return repositorioOrdenDeCompra.Listar().AsReadOnly(); } public ReadOnlyCollection ListarDetalles(OrdenDeCompra orden) { - var ordenalistar = RepositorioOrdenDeCompra.Instance.Listar().First(x => x.Id == orden.Id); + var ordenalistar = repositorioOrdenDeCompra.Listar().First(x => x.Id == orden.Id); if (ordenalistar == null) return new ReadOnlyCollection(new List()); return ordenalistar.MostrarDetalles(); @@ -77,13 +80,13 @@ namespace Controladora { if (presupuesto == null) return null; if (presupuesto.Id < 0) return null; - var pres = RepositorioPresupuesto.Instance.Listar().First(x => x.Id == presupuesto.Id); + var pres = ControladoraPresupuestos.Instance.Listar().First(x => x.Id == presupuesto.Id); return pres; } public object ListarProveedores() { - return RepositorioProveedor.Instance.Listar() + return ControladoraProveedores.Instance.Listar() .Where(x => x.Habilitado == true) .ToList() .AsReadOnly(); @@ -91,16 +94,16 @@ namespace Controladora public ReadOnlyCollection ListarDetallesDePresupuesto(Presupuesto presupuesto) { - Presupuesto pres = RepositorioPresupuesto.Instance.Listar().First(x => x.Id == presupuesto.Id); + Presupuesto pres = ControladoraPresupuestos.Instance.Listar().First(x => x.Id == presupuesto.Id); if (pres == null) return new ReadOnlyCollection(new List()); return pres.MostrarDetalles(); } - public object ListarPresupuestosPorProveedorHabilitadosAceptado(Proveedor proveedor) + public ReadOnlyCollection? ListarPresupuestosPorProveedorHabilitadosAceptado(Proveedor proveedor) { if (proveedor == null) return null; if (proveedor.Cuit < 0) return null; - var presupuestos = RepositorioPresupuesto.Instance.Listar() + var presupuestos = ControladoraPresupuestos.Instance.Listar() .Where(x => x.Proveedor.Cuit == proveedor.Cuit) .Where(x => x.Habilitado == true) .Where(x => x.Aceptado == true) diff --git a/Controladora/ControladoraPresupuestos.cs b/Controladora/ControladoraPresupuestos.cs index baa72b4..8c8ea0a 100644 --- a/Controladora/ControladoraPresupuestos.cs +++ b/Controladora/ControladoraPresupuestos.cs @@ -6,13 +6,19 @@ namespace Controladora { public class ControladoraPresupuestos : Singleton { + RepositorioPresupuesto repositorioPresupuestos; + public ControladoraPresupuestos() { + repositorioPresupuestos = new RepositorioPresupuesto(new Context()); + } + public string Añadir(Presupuesto t) { if (t == null) return "El Presupuesto es nulo, falló la carga"; if (t.MostrarDetalles() == null || !t.MostrarDetalles().Any()) return "El Presupuesto no tiene productos, falló la carga"; if (t.Proveedor == null) return "El Proveedor es nulo, falló la carga"; - return RepositorioPresupuesto.Instance.Add(t) ? + repositorioPresupuestos.Add(t); + return repositorioPresupuestos.Guardar() ? $"El Presupuesto {t.Id} se cargó correctamente" : $"Falló la carga del Presupuesto {t.Id}"; } @@ -21,7 +27,8 @@ namespace Controladora { if (t == null) return "El Presupuesto es nulo fallo la carga"; - return (RepositorioPresupuesto.Instance.Del(t)) ? + repositorioPresupuestos.Del(t); + return (repositorioPresupuestos.Guardar()) ? $"El Presupuesto {t.Id} se Elimino correctamente": $"Fallo la Eliminacion del Presupuesto {t.Id}"; } @@ -30,7 +37,8 @@ namespace Controladora { if (t == null) return "El Presupuesto es nulo fallo la carga"; - return (RepositorioPresupuesto.Instance.Mod(t)) ? + repositorioPresupuestos.Mod(t); + return (repositorioPresupuestos.Guardar()) ? $"El Presupuesto {t.Id} se Modifico correctamente": $"Fallo la Modificacion del Presupuesto {t.Id}"; } @@ -39,13 +47,15 @@ namespace Controladora if (t == null) return "El Presupuesto es nulo fallo la carga"; if (t.Aceptado == true) return "El presupuesto ya fue aceptado"; - return (RepositorioPresupuesto.Instance.AceptarPresupuesto(t)) ? + t.Aceptado = true; + repositorioPresupuestos.Mod(t); + return (repositorioPresupuestos.Guardar()) ? $"El Presupuesto {t.Id} se Acepto correctamente": $"Fallo la aceptacion del Presupuesto {t.Id}"; } public ReadOnlyCollection Listar() { - return RepositorioPresupuesto.Instance.Listar() + return repositorioPresupuestos.Listar() .Where(x => x.Habilitado == true) .ToList() .AsReadOnly(); @@ -53,7 +63,7 @@ namespace Controladora public ReadOnlyCollection ListarDetalles(Presupuesto presupuesto) { - Presupuesto pres = RepositorioPresupuesto.Instance.Listar().First(x=> x.Id == presupuesto.Id); + Presupuesto pres = repositorioPresupuestos.Listar().First(x=> x.Id == presupuesto.Id); if (pres == null) return new ReadOnlyCollection(new List()); return pres.MostrarDetalles(); @@ -63,7 +73,7 @@ namespace Controladora { if (proveedor == null) return new List().AsReadOnly(); if (proveedor.Cuit < 0) return new List().AsReadOnly(); - var productos = RepositorioProductos.Instance + var productos = ControladoraProductos.Instance .Listar() .Where(x => x.ListarProveedores() .Any(x => x.Cuit == proveedor.Cuit)) @@ -75,7 +85,7 @@ namespace Controladora public object ListarProveedores() { - return RepositorioProveedor.Instance.Listar() + return ControladoraProveedores.Instance.Listar() .Where(x => x.Habilitado == true) .ToList() .AsReadOnly(); @@ -83,7 +93,7 @@ namespace Controladora public ReadOnlyCollection ListarTodo() { - return RepositorioPresupuesto.Instance.Listar(); + return repositorioPresupuestos.Listar().AsReadOnly(); } } } diff --git a/Controladora/ControladoraProductoNoPercedero.cs b/Controladora/ControladoraProductoNoPercedero.cs new file mode 100644 index 0000000..3b89b0c --- /dev/null +++ b/Controladora/ControladoraProductoNoPercedero.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Controladora +{ + public class ControladoraProductoNoPercedero + { + } +} diff --git a/Controladora/ControladoraProductoPercedero.cs b/Controladora/ControladoraProductoPercedero.cs new file mode 100644 index 0000000..2052bd9 --- /dev/null +++ b/Controladora/ControladoraProductoPercedero.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Controladora +{ + public class ControladoraProductoPercedero + { + } +} diff --git a/Controladora/ControladoraProductos.cs b/Controladora/ControladoraProductos.cs index 44096d6..a6a2883 100644 --- a/Controladora/ControladoraProductos.cs +++ b/Controladora/ControladoraProductos.cs @@ -6,45 +6,17 @@ namespace Controladora { public class ControladoraProductos : Singleton { - public string Añadir(Producto t) - { - if (t == null) return "El Producto es nulo fallo la carga"; - - return (RepositorioProductos.Instance.Add(t)) ? - $"El Producto {t.Nombre} se cargo correctamente": - $"Fallo la carga del Producto {t.Nombre}"; - } - - public string Eliminar(Producto t) - { - if (t == null) return "El Producto es nulo fallo la carga"; - - return (RepositorioProductos.Instance.Del(t)) ? - $"El Producto {t.Nombre} se Elimino correctamente": - $"Fallo la Eliminacion del Producto {t.Nombre}"; - } - - public string Modificar(Producto t) - { - if (t == null) return "El Producto es nulo fallo la carga"; - - return (RepositorioProductos.Instance.Mod(t)) ? - $"El Producto {t.Nombre} se Modifico correctamente": - $"Fallo la Modificacion del Producto {t.Nombre}"; - } - public ReadOnlyCollection Listar() { - return RepositorioProductos.Instance.Listar() + return new RepositorioProductos(new Context()).Listar() .Where(x => x.Habilitado == true) .ToList() .AsReadOnly(); } - public ReadOnlyCollection ListarProveedores(Producto producto) { - Producto productoalistar = RepositorioProductos.Instance.Listar().First(x => x.Id == producto.Id); + Producto productoalistar = new RepositorioProductos(new Context()).Listar().First(x => x.Id == producto.Id); if (productoalistar == null) return new ReadOnlyCollection(new List()); return productoalistar.ListarProveedores(); @@ -54,7 +26,7 @@ namespace Controladora { if (producto == null) return null; if (producto.Id < 0) return null; - var lista = RepositorioProductos.Instance.Listar(); + var lista = new RepositorioProductos(new Context()).Listar(); if (lista.Any(x=> x.Id == producto.Id)){ return lista.First(x => x.Id == producto.Id); } @@ -63,7 +35,7 @@ namespace Controladora public ReadOnlyCollection ListarProveedores() { - return RepositorioProveedor.Instance.Listar() + return ControladoraProveedores.Instance.Listar() .Where(x => x.Habilitado == true) .ToList() .AsReadOnly(); @@ -71,7 +43,7 @@ namespace Controladora public ReadOnlyCollection ListarCategorias() { - return RepositorioCategoria.Instance.Listar(); + return ControladoraCategorias.Instance.Listar(); } public int MostrarStock(Producto producto) diff --git a/Controladora/ControladoraProveedores.cs b/Controladora/ControladoraProveedores.cs index f9fd022..4c058c5 100644 --- a/Controladora/ControladoraProveedores.cs +++ b/Controladora/ControladoraProveedores.cs @@ -6,13 +6,20 @@ namespace Controladora { public class ControladoraProveedores : Singleton { + private RepositorioProveedor repositorioProveedor; + public ControladoraProveedores() + { + repositorioProveedor = new RepositorioProveedor(new Context()); + } + public string Añadir(Proveedor t) { if (t == null) return "El Proveedor es nulo fallo la carga"; try { - return RepositorioProveedor.Instance.Add(t) ? + repositorioProveedor.Add(t); + return repositorioProveedor.Guardar() ? $"El Proveedor {t.Nombre} se cargó correctamente" : $"Falló la carga del Proveedor {t.Nombre}"; } @@ -24,11 +31,12 @@ namespace Controladora public string Eliminar(long t) { - var proveedor = RepositorioProveedor.Instance.Listar().FirstOrDefault(x => x.Cuit == t); + var proveedor = repositorioProveedor.Listar().FirstOrDefault(x => x.Cuit == t); if (proveedor == null) return "El Proveedor es nulo fallo la baja"; - return (RepositorioProveedor.Instance.Del(proveedor)) ? + repositorioProveedor.Del(proveedor); + return (repositorioProveedor.Guardar()) ? $"El Proveedor {proveedor.Nombre} se eliminó correctamente" : $"Falló la eliminación del Proveedor {t}"; } @@ -37,14 +45,15 @@ namespace Controladora { if (t == null) return "El Proveedor es nulo fallo la modificación"; - return (RepositorioProveedor.Instance.Mod(t)) ? + repositorioProveedor.Mod(t); + return (repositorioProveedor.Guardar()) ? $"El Proveedor {t.Nombre} se modificó correctamente" : $"Falló la modificación del Proveedor {t.Nombre}"; } public ReadOnlyCollection Listar() { - return RepositorioProveedor.Instance.Listar() + return repositorioProveedor.Listar() .Where(x => x.Habilitado == true) .ToList() .AsReadOnly(); diff --git a/Controladora/ControladoraRemito.cs b/Controladora/ControladoraRemito.cs index fa7520d..eb3eba2 100644 --- a/Controladora/ControladoraRemito.cs +++ b/Controladora/ControladoraRemito.cs @@ -6,9 +6,16 @@ namespace Controladora { public class ControladoraRemito : Singleton { + private RepositorioRemito repositorioRemito; + + public ControladoraRemito() + { + repositorioRemito = new RepositorioRemito(new Context()); + } public ReadOnlyCollection Listar() { - return RepositorioRemito.Instance.Listar(); + return repositorioRemito.Listar() + .AsReadOnly(); } public string Añadir(Remito t, OrdenDeCompra orden ) @@ -16,13 +23,15 @@ namespace Controladora if (t == null) return "El Remito es nulo fallo la carga"; if (t.Id < 0) return "El id Esta Mal Cargado"; - var retMarcarOrdenEntregada = RepositorioOrdenDeCompra.Instance.MarcarEntregado(orden); - if (retMarcarOrdenEntregada == false) return "La orden Esta Mal Cargada"; - var retRemito = RepositorioRemito.Instance.Add(t); - if (retRemito == false) return "El Remito Esta Mal Cargado"; - var retLotes = RepositorioLote.Instance.Add(t); + orden.Entregado = true; + var retMarcarOrdenEntregada = ControladoraOrdenDeCompras.Instance.Modificar(orden); - return (retLotes) ? + repositorioRemito.Add(t); + + ControladoraLotes.Instance.AltaStock(t); + + + return (repositorioRemito.Guardar()) ? $"El remito {t.Id} se cargo correctamente": $"Fallo la carga del remito {t.Id}"; @@ -46,20 +55,20 @@ namespace Controladora public object ListarLotes() { - return RepositorioLote.Instance.Listar().Where(x => x.Habilitado == true) + return ControladoraLotes.Instance.Listar().Where(x => x.Habilitado == true) .ToList().AsReadOnly(); } public ReadOnlyCollection ListarOrdenesSinEntregar() { - return RepositorioOrdenDeCompra.Instance.Listar() + return ControladoraOrdenDeCompras.Instance.Listar() .Where(x => x.Entregado == false) .ToList() .AsReadOnly(); } public ReadOnlyCollection ListarDetallesOrdenesDeCompra(OrdenDeCompra orden) { - var ordenalistar = RepositorioOrdenDeCompra.Instance.Listar().First(x => x.Id == orden.Id); + var ordenalistar = ControladoraOrdenDeCompras.Instance.Listar().First(x => x.Id == orden.Id); if (ordenalistar == null) return new ReadOnlyCollection(new List()); return ordenalistar.MostrarDetalles(); @@ -69,12 +78,12 @@ namespace Controladora { if (ordenDeCompra == null) return null; if (ordenDeCompra.Id < 0) return null; - return RepositorioOrdenDeCompra.Instance.Listar().First(x => x.Id == ordenDeCompra.Id); + return ControladoraOrdenDeCompras.Instance.Listar().First(x => x.Id == ordenDeCompra.Id); } public ReadOnlyCollection ListarLotesPorRemito(Remito rem) { - var remalistar = RepositorioRemito.Instance.Listar().First(x => x.Id == rem.Id); + var remalistar = repositorioRemito.Listar().First(x => x.Id == rem.Id); if (remalistar == null) return new ReadOnlyCollection(new List()); return remalistar.MostrarLotes(); diff --git a/Controladora/Singleton.cs b/Controladora/Singleton.cs index 9be6d00..88d4e1d 100644 --- a/Controladora/Singleton.cs +++ b/Controladora/Singleton.cs @@ -1,9 +1,13 @@ -namespace Controladora +using Modelo; + +namespace Controladora { - public class Singleton where T : new() + public class Singleton + where T : new() { // Singleton thread-safe por si quiero usar "Parallel" private static T instance = new T(); + public static T Instance { get diff --git a/Informes/bin/Debug/net8.0/Entidades.dll b/Informes/bin/Debug/net8.0/Entidades.dll index 1cfc79033bc3ba55d2d1ae919085ed0cbfebc338..8bb704768a2cfa9de7bb08e294fe6347496a7324 100644 GIT binary patch literal 17920 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 z%0AedvU9nmOWAu2yJ9?c$*S?#rNXwQl6}dvoo%)A&b~}GX>*at+2vyns*!R=vD>qm z1CEo(WHsO3mLBMHvUYFE=~+T13AF85Cy|UJXXrZ|JJFF&9c;}YyLdjCNrT*y%;oX5 zaUdPeuyT!iIiSM_?sx`OTh2~Jpv!AdN z$zuDc^I$IT^fk0*`ua0zC!I%uPO2eh=j|5$&8y8-%QbYy_d9*Il+m8($R?b0%;6+i zUD{~QwE1jDZa{ltqaDu=6q32fByb^mvRE-UK)HrZPTI*PiC7&3G=f|=?i_0=O;Hg${6JYSCAzOe{v_iLB7-60Y>R75}q{nA1D3Z=aLhkj-3^sxHa0W;>3mVC}-H;cfQ49ZWj*p|s}wfp;>L`xpOcj_Gg z#j|@dB- ztp7$-XqS`CVV)UlG=rDdD?9a$UI^CS{rZWhqJfS-s|KK?!aoBEAl!D;=IF2 z+1KjjuxNK%VlMfj!HoyX<3Eom8r&3|vziB!r|n>q*jizB`b%v7FUu&2%NoU`$TQm@}huV zrB*we$Jcgj4D-o&M#?EHG?G&hwWU+o>Lj#Namf*{63EqY7ag$`fLP3;qb)9Ai(Yhu zH!8Dw$r0A5da>vELf5ur?Gd-q#R&UIz4mO&V1?2PRDmlpx*+XoiZXyL#Z^jdC6KLp zQgh3ZDrqX_q{d-+%%+^Yu6uhzuW=?{131^>lvJ|DiQD)VNuzgfC{(X#+I=+Xwy3c1 z6&h7!%-mnHI!e1r7DP!@ip@yhl1#r>eBJd?=WZ5D-C^$fC?*;FyjqG4b=Pa4*ow%l zbg8vu#gw##jxag6>sm1vGnW^M{z7pL*q>ynAueBAGr4@WOI;-!rn9A4Nk`|$OjBU6wGcaF?jnZ-tWV)LkSUXPlO^VnmGCfpXWvS4l$bdBi32pq+DO47)BGYy9C?~%>5>-mO zM^yyw>{;|z><>qsZxl`8x}pU!PP``)a}&qJ6Rh@(X|EuA^+fQ)NnJ!xyufO&f>N*D z>-|rx?>lpE;2|Tz8TN`_SmE~`-hlFkJl;r?$6GxI=Wgg#KAleu z^qA47oA0RkcKM*e_3&l??c6mIG=S+iqd0@;vapY%zSRo*(PyH7R6Gh4lmIIMDClBK z`Z?0Xof~OFmsjs*wR$(yNR_Z!a`&r3cSdU19uvEk)5SjBba#XydO^sjOKKQ%p-vbS zpP)+yxejwUb@d#VtC!5`5l|k~AvCoPO{~*RgsyPFvprgS zU{wSD+OI1-v9QB5Pms1@!|CS~QFw$cswiw*@SqC6fRzbOey{FZfMIW5c1f2ZCsT*OtvBbt6@+Tgwm}5t0tn=cI z#7~~B|H!t7YHq*e&>r6|&ZG6BJv(#QRqxsBB>FRZa+v{aD)wZZ{!DHU?yKxncg)W1 zDa2$?ruV8n5|TY>Cy$5~O%45tUh3T3vUK?hG9~?DjwuPPsay5skDht;XWvZD8%nqQ zD{AZ>zhXV=qO-rVCa)K)v0roLPpJ?zNVQd{4ii(E!G`|RxgivB_(z`w1Q zzq1)UyTNkN;cW-QQm}8;`f4wGeA-W;k@SdU*Z!kLW2BRC_+wdll z|6+sa>9SwGrJt+wRmF$?#$SNR!K;m2>IU;y45x)$ZM<#Rh^O@_yoG3|G~QKY#A^<5 zsxDY1Tnzd%K-RR;cb42pun?^lSB{dvdMg!`Z!iRrC%5VI(ARWK+Nl7dF(LR2!vkz~8^6-h` zj7b?ChEJj__IBIHNJrybW$8F>M;;lJKY;g2`I1@^M$OnbzE9rBotZG5kW+!Ts}p^w_Td&xkVqW4gZ{e{m7`A2+kUSO5S3 literal 16896 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 Pa3UEkmSpPmgGc@sneFdl delta 4338 zcmZu!3sjWV7C!&)Fz*>=Mr3B>ii0?y!oa|&m6*JIl!}U^l0pjj2!oV|AejzgUNgyVpFl5IeQ;=*@2Kxr%N*a%v^z3l- z69T~pf~OSB%LPwSWp}^e{^#)8#Dq;Z>s1F8n@=oTTWxcWfUXvxISByyGYO1gIx_)@ zK=IlW3FcZ1ssSxP%D$3asP|5Hbz`%ELZB2_1XKYlfod1bn7}r=1hx&R2R@W#B5QVu ztQA-ZR0Hk65#Vd!G;kic4Ezk-0{)QaDcBD&3U&$j3FwSbc-dVH9>!3h0H%x$UNve)LCy-vCv-o;?kWi#H&c z0l^Gx62@7;o;U;B3*=!u7bpT20$$*A;0~bl7?>4E177eLQ57SqVq|kYfvg_*5NHNk z0dKp<#J&eE09Sx|mkC>7V!vQ~8@LCwLv}>oKQmTi#%jzcpBd#dGhv{aS%9HH8jdSt z8upyr`>Hif9_v`H-0NAs+#A?@UoW!q<~fQ^A+0aW1$^nF0-S)Kt1*ti@$hpyct1{0 z_We1omg%=q^IAx-=6f|Bu+pE$*8N}AP_u-pL3r;1Dhr&B~9N@z02-QZI=PWnuacSn5oJm7ag z2~6cUB`}TSq|f3w>9aXb`WHA(`so}e{S1zK$smUlkO5sJ{)9-Mhv%7}(+XyCoGLPl z<5ZE^;B<=UL-unxPG{srpiA$?fU*3)1dIaC#3x#a(c2~%yF{EtHdLF(o-D&e9~8T`J%IV}Uti=`9GoTPgSEI9jN{&c@NpkHFr+?MnS>+>VSz z;wNxS6^Zwao0@Pz!H!6EMyvNsOq)W*&<0T3A-7B^OXRjgZj;n1Hq)J?RM_(4U&%Fr{>|aN^=SdW{u3rD_u~W6O&h>%@Pz^leJgmQnRD^;nXALJFm~% z6}_lqj#ZrzUewmEo4kEP(xI~_y1nyOptWnZ^sdDozI439x$)q+6YGamCvLi$p*;b3*Sgv9O?P zpPm2P;)cWO`S}Y9@14A^$_g%ePB)==-pmDgrStgpSKV^Vym9v0#gh{QHhgpQZrDig ziG_i`+bUX@MkTqGY{*o=C!aWeJax?UlePi5>DjMZ7dC&r z@3R4?`|aBNan0fSdg(&Lo~>cw-zIn$p9|@ev2Fd03o-Ws7Niz!zW&zppMGBvQCJpM zXZ^0kdwk#6^)WS5Cp_4n5VBgCV|vrRYX1KH&knS&8Fj#IYr6fSY23OeZ66f9t$6s% z{T)4`x-ZI%obrQqh`zI26|(!npom%8(_eLpVdiT~4y?Mm;p$fxb#FeOe5$JX-ho@K zm$(0>SlDt~kRDjii-QI?pR?H`>{_AGEHp+7je~{86rpjV(3mGQz9KYMONPXFkJ>>G z3x(Qg!b3zb8U)ryR0lIbtgs1#7Fg9T-GK@gr0O#zr2f^faM;!~Uyok0$#?(OUP%ALly2u*~K z*?nE8-06HmU6jo9K1+RsFEfq2T*MbETp1N5k~Z1pe0-uPy3lmVNlqwTDJwbB8;CqT zq6yD`Aq1ZMdCJ=nj>Mg!+C{DdECO>0ay_FUwsGqjuhqzTseL)CyK?sJtWFN6&_~Hr zE!@-)+TghVKO9X;oM4--uqWZjp`n$j3!mC941 zlX2$=7N~lNYV1KbTz%0Z3lS&D&O#r5wkR^4Oi?sBb<*XOL4scDnHnY-q@k&Udg9g+ zT*(6KE!yR?r9-fxff^l4kXEHe20yOk&6U!T)GVtBm$_g-GO=A%lm9oFrIg|Q6MJ(N lq4bkAaxpDE1`^Zum5-#QhkU0RLla17vkjxp*bo0s{s)gg)!Qx_Wy=G%ih?qd=Ri4}PetG-PDBpLP>%VsV<_}^&7&T1I%#zYlP0f=H z3``P}&COFyk}XY)jgyj6j0{p!4Gj_v6AdgAP0c3@Nb0a0D+xI>*+DWuV6NJCtBEsN zoI34z_jGVfH=DdbGC~0=Xv7H>1gX}IntQZUGwSaVVQ;3*5>h8v{7o6mfG~+6jUko6 zl);=KnZW=EO&Ah^EOQ`C1+tSFEPW_|gK FOaK^SMA`rV delta 235 zcmZp0X>gg)!LnnQ`r(Z|Az}hQ_T{DC)@^g0Zy&=d5}e4o`GeRGMhz2l6GH=IiXU)QdUO8<*|V*eoG+g2ms2!JNT_!H~g# z!I;5{ZZM-u=5 diff --git a/Informes/bin/Debug/net8.0/Informes.pdb b/Informes/bin/Debug/net8.0/Informes.pdb index a4dbec3197a218753643fe10f7b63d1d3edf998f..a2b36157005107c10dae3353fdf4fdc4be0df907 100644 GIT binary patch delta 106 zcmV-w0G0pDSyY_!v;c9HvNjmi?&djVHsTtSR|MJuHZij^1zQ0atYY@$0KfnMn(Y_WV>f(8pBJ&N Mv3=LWv!(_nCTrv|2><{9 delta 106 zcmV-w0G0pDS%G4jepQMY&gQ zD|bq{wiV%MP!WJx*pk@gUr7p+R|MJuH8!&|1zQ0aPi&vw0KfnMl<27EJkNYZg3RiX MHT*j$v!(_nCP8X1mH+?% diff --git a/Informes/obj/Debug/net8.0/Informes.AssemblyInfo.cs b/Informes/obj/Debug/net8.0/Informes.AssemblyInfo.cs index 2ef316b..913a37e 100644 --- a/Informes/obj/Debug/net8.0/Informes.AssemblyInfo.cs +++ b/Informes/obj/Debug/net8.0/Informes.AssemblyInfo.cs @@ -1,6 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -13,10 +14,10 @@ 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+4741038dd3a9d19396876104d53419cb08fb3c00")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+566bfe57c004ac77e4c9433bbd20ee10a1a09a57")] [assembly: System.Reflection.AssemblyProductAttribute("Informes")] [assembly: System.Reflection.AssemblyTitleAttribute("Informes")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -// Generado por la clase WriteCodeFragment de MSBuild. +// Generated by the MSBuild WriteCodeFragment class. diff --git a/Informes/obj/Debug/net8.0/Informes.AssemblyInfoInputs.cache b/Informes/obj/Debug/net8.0/Informes.AssemblyInfoInputs.cache index 489c4c3..cd271ae 100644 --- a/Informes/obj/Debug/net8.0/Informes.AssemblyInfoInputs.cache +++ b/Informes/obj/Debug/net8.0/Informes.AssemblyInfoInputs.cache @@ -1 +1 @@ -50170587ccc36899336cebeb5b5cbe06e44548ce802b12d5ffa8f323ed344c0c +ae00625e110761358d22d1280d507fcadf870bc5f0bd5603a24f1f10ad9015b0 diff --git a/Informes/obj/Debug/net8.0/Informes.csproj.AssemblyReference.cache b/Informes/obj/Debug/net8.0/Informes.csproj.AssemblyReference.cache index 76d81f49ff38caa2725fc11aaf90ec9750a6dd3e..20024e7376e5a3c12fb50c12fe49049702c319c2 100644 GIT binary patch delta 17 YcmX@gdX#lSG~0YzK9-b28xvEQ065nM5&!@I delta 17 ZcmX@gdX#lSG~1HB%3DtC*_fEZ1OP=l2f6?N diff --git a/Informes/obj/Debug/net8.0/Informes.dll b/Informes/obj/Debug/net8.0/Informes.dll index dac6b4d260b5122ca377be819bc03b3b340abf1f..6b106986884d9d46b43cc5f4f7d691addd480b57 100644 GIT binary patch delta 235 zcmZp0X>gg)!Qx_Wy=G%ih?qd=Ri4}PetG-PDBpLP>%VsV<_}^&7&T1I%#zYlP0f=H z3``P}&COFyk}XY)jgyj6j0{p!4Gj_v6AdgAP0c3@Nb0a0D+xI>*+DWuV6NJCtBEsN zoI34z_jGVfH=DdbGC~0=Xv7H>1gX}IntQZUGwSaVVQ;3*5>h8v{7o6mfG~+6jUko6 zl);=KnZW=EO&Ah^EOQ`C1+tSFEPW_|gK FOaK^SMA`rV delta 235 zcmZp0X>gg)!LnnQ`r(Z|Az}hQ_T{DC)@^g0Zy&=d5}e4o`GeRGMhz2l6GH=IiXU)QdUO8<*|V*eoG+g2ms2!JNT_!H~g# z!I;5{ZZM-u=5 diff --git a/Informes/obj/Debug/net8.0/Informes.pdb b/Informes/obj/Debug/net8.0/Informes.pdb index a4dbec3197a218753643fe10f7b63d1d3edf998f..a2b36157005107c10dae3353fdf4fdc4be0df907 100644 GIT binary patch delta 106 zcmV-w0G0pDSyY_!v;c9HvNjmi?&djVHsTtSR|MJuHZij^1zQ0atYY@$0KfnMn(Y_WV>f(8pBJ&N Mv3=LWv!(_nCTrv|2><{9 delta 106 zcmV-w0G0pDS%G4jepQMY&gQ zD|bq{wiV%MP!WJx*pk@gUr7p+R|MJuH8!&|1zQ0aPi&vw0KfnMl<27EJkNYZg3RiX MHT*j$v!(_nCP8X1mH+?% diff --git a/Informes/obj/Debug/net8.0/ref/Informes.dll b/Informes/obj/Debug/net8.0/ref/Informes.dll index 48930dd6184cd35e9ac3f0a6f55044eaaed3624f..ca549f843c369ae80b3a71e6567d61f1cafe274a 100644 GIT binary patch delta 194 zcmZqBXwaC@!BV_rZQsV85@rEj2WNZz-?DD&_8iPsIed+MvmncR#?Aj(McFW0Ec8VH2?qr delta 194 zcmZqBXwaC@!E*7#+}4dfCCmb<6<^njZ8mq9|NY`l8JV5GHVd-6XWaasRg?`wYO)H? zOAQlq6GH=Ii zOc)Fq3>b_VEErON(3l~S!4gOt0!d>aHUo;A14)n?6QH;$P!y!Yk|CKP2`Fa4kOriU Ofjk2SgU$Ma7nuNl7&TA; diff --git a/Informes/obj/Debug/net8.0/refint/Informes.dll b/Informes/obj/Debug/net8.0/refint/Informes.dll index 48930dd6184cd35e9ac3f0a6f55044eaaed3624f..ca549f843c369ae80b3a71e6567d61f1cafe274a 100644 GIT binary patch delta 194 zcmZqBXwaC@!BV_rZQsV85@rEj2WNZz-?DD&_8iPsIed+MvmncR#?Aj(McFW0Ec8VH2?qr delta 194 zcmZqBXwaC@!E*7#+}4dfCCmb<6<^njZ8mq9|NY`l8JV5GHVd-6XWaasRg?`wYO)H? zOAQlq6GH=Ii zOc)Fq3>b_VEErON(3l~S!4gOt0!d>aHUo;A14)n?6QH;$P!y!Yk|CKP2`Fa4kOriU Ofjk2SgU$Ma7nuNl7&TA; diff --git a/Modelo/RepositorioLote.cs b/Modelo/RepositorioLote.cs index 60b24cb..cd4dad5 100644 --- a/Modelo/RepositorioLote.cs +++ b/Modelo/RepositorioLote.cs @@ -1,4 +1,5 @@ using Entidades; +using System.Runtime.Intrinsics.Arm; namespace Modelo { @@ -19,7 +20,14 @@ namespace Modelo Lote lot = context.Lotes.First(x => x.Id == Tid); return lot ?? new Lote(); } - + public void Add(Remito rem) + { + if (rem.MostrarLotes().Count <= 0) return; + foreach (var detalle in rem.MostrarLotes()) + { + Add(detalle); + } + } public override void Add(Lote t) { context.Lotes.Add(t); diff --git a/Modelo/RepositorioPresupuesto.cs b/Modelo/RepositorioPresupuesto.cs index 26fd607..10f8f33 100644 --- a/Modelo/RepositorioPresupuesto.cs +++ b/Modelo/RepositorioPresupuesto.cs @@ -37,6 +37,5 @@ namespace Modelo { context.Presupuestos.Update(t); } - } } \ No newline at end of file diff --git a/Modelo/RepositorioProductos.cs b/Modelo/RepositorioProductos.cs index 63e22e2..e1551b1 100644 --- a/Modelo/RepositorioProductos.cs +++ b/Modelo/RepositorioProductos.cs @@ -1,5 +1,7 @@ -using System; +using Entidades; +using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,5 +11,19 @@ namespace Modelo // y si es nopercedero vaya para otro lado. pero centralizado acá como una posibilidad. public class RepositorioProductos { + private Context _context; + public RepositorioProductos(Context context) + { + _context = context; + } + + public ReadOnlyCollection Listar() + { + List prod = new(); + prod.AddRange(_context.ProductoNoPercederos.ToList()); + prod.AddRange(_context.ProductoPercederos.ToList()); + return prod.AsReadOnly(); + + } } } diff --git a/Vista/FrmFactura.cs b/Vista/FrmFactura.cs index 1a9beb9..756ceab 100644 --- a/Vista/FrmFactura.cs +++ b/Vista/FrmFactura.cs @@ -157,7 +157,6 @@ namespace Vista Cantidad = (int)numCantidad.Value, IdFactura = factura.Id, Producto = ControladoraProductos.Instance.Listar().First(x => x.Id == producto.Id), - Subtotal = producto.Precio * Convert.ToInt32(numCantidad.Value), }); ActualizarGrillaDetalles(); } diff --git a/Vista/FrmProductos.cs b/Vista/FrmProductos.cs index 47221d1..9f275e3 100644 --- a/Vista/FrmProductos.cs +++ b/Vista/FrmProductos.cs @@ -215,8 +215,9 @@ namespace Vista if (producto != null) { - // Llama al método Eliminar pasando el objeto Producto - string devolucion = ControladoraProductos.Instance.Eliminar(producto); + string devolucion = (producto.EsPerecedero) ? + ControladoraProductos: + ; MessageBox.Show(devolucion); } else