111 Commits

Author SHA1 Message Date
fede 3a60ab0dcf Merge branch 'master' into informes 2024-08-04 17:39:31 -03:00
fedpo be585cff1d cambios nachito a form factura 2024-08-04 21:38:55 +01:00
PolidoroFederico2am 5479db7c97 terminado form de config 2024-08-04 21:17:51 +01:00
fede 9ca365f6ac Merge branch 'master' into informes 2024-08-03 23:35:30 -03:00
PolidoroFederico2am 208ebd6148 removido .vs 2024-08-04 02:34:52 +01:00
PolidoroFederico2am 5b78d74e54 removido .vs 2024-08-04 02:34:17 +01:00
PolidoroFederico2am 6092f6f08b cambios nachito a form factura 2024-08-04 02:26:06 +01:00
PolidoroFederico2am 628b33f922 implementado emailer 2024-08-04 02:03:46 +01:00
PolidoroFederico2am 4bc99e9cc6 añadida una precarga de proveedor 2024-08-03 22:14:04 +01:00
PolidoroFederico2am 84d414b536 correcciones sobre los forms 2024-08-03 22:03:54 +01:00
PolidoroFederico2am 8de480aed5 Merge branch 'Vista' 2024-08-03 21:22:12 +01:00
PolidoroFederico2am 3616449d84 preparando merge 2024-08-03 21:17:18 +01:00
PolidoroFederico2am 57b84cdf9a preparando para el merge 2024-08-03 21:16:21 +01:00
PolidoroFederico2am c493033009 cosas que faltaban 2024-08-03 21:09:08 +01:00
PolidoroFederico2am aa3a281092 Merge branch 'Vista' of https://fedesrv.ddns.net/git/fede/Final_OOP into Vista 2024-04-26 23:50:48 +01:00
PolidoroFederico2am 812b9a9fba ahi va todo fixeado por ahora faltan forms 2024-04-26 23:43:00 +01:00
fede eb25f4700f Merge branch 'master' into Vista 2024-04-26 18:14:14 -03:00
PolidoroFederico2am 1aba8e7cd5 refactor: eliminados using sobrantes 2024-04-26 20:56:14 +01:00
PolidoroFederico2am 390fafce97 refactor: cambiados nombres de variables y eliminada keyword asbtract no utilizada en singleton 2024-04-26 20:47:37 +01:00
PolidoroFederico2am ae8dc07364 fix: arreglos en formCliente y eliminado un list obsoleto 2024-04-26 20:46:21 +01:00
PolidoroFederico2am 675d86f38d refactor: Cambiada la estructura de las controladoras 2024-04-26 20:14:14 +01:00
PolidoroFederico2am 51676e6434 feat: Cambios Varios (mirar Desc)
- Añadidas referencias faltantes
- Arreglado FormProveedores
- Empiezo el codeo del Form Facturas
2024-04-26 19:52:29 +01:00
PolidoroFederico2am 9b0bde293b fix: arreglado nivel de acceso para las controladoras 2024-04-26 19:50:16 +01:00
fede 04e6a0b9bb feat: añadidas referencias faltantes
lo más probable por q
2024-04-24 14:40:08 -03:00
videojuegoslagos ad10d7dc30 fix: cambie los Id por Cuit 2024-04-23 09:31:38 -03:00
Nacho f2457d4eaa no pude usar controladoras, no carga los datos ,interface de cliente y provedor 2024-04-19 21:04:35 -03:00
fede cefd645974 Merge branch 'master' into Vista 2024-04-19 19:11:56 -03:00
fede 9bf517e851 fixed typo 2024-04-19 19:11:39 -03:00
fede ab0a1185d4 fix: arreglo para que no colisionen las ramas 2024-04-19 19:10:46 -03:00
fede 57e1d4526e Merge pull request 'Traigo la controladora de proveedores a master' (#40) from Controladora into master
Reviewed-on: #40
2024-04-19 19:05:57 -03:00
fede 18ee45927a Merge branch 'master' into Controladora 2024-04-19 19:05:16 -03:00
fede 721c770fcd refactor: cambiado campo "id" a "cuit" 2024-04-19 19:03:42 -03:00
fede ed59d68c8e feat: añadida ControladoraProveedores 2024-04-19 19:01:38 -03:00
fede d72741b43e Merge branch 'master' into Vista 2024-04-19 18:57:44 -03:00
fede 1baf2d9351 Traigo de forma parcial algunas controladoras a master
Reviewed-on: #37
2024-04-19 18:57:03 -03:00
Nacho 8ad9dc6e8b faltan controladoras 2024-04-19 17:50:08 -03:00
fede 04704c4cc9 Merge branch 'master' into Controladora 2024-04-19 00:34:29 -03:00
fede 58d732320f feat: terminada speedrun nocturna de coding para el proyecto 2024-04-18 01:20:23 -03:00
fede f51929c23d feat: añadida controladora de facturas 2024-04-14 02:19:03 -03:00
fede abfd18e86f Merge pull request 'Merge para que puedas empezar a laburar en la vista' (#36) from Controladora into master
Reviewed-on: #36
2024-04-12 22:30:10 -03:00
fede 13ce2d317c Merge branch 'master' into Controladora 2024-04-12 22:29:20 -03:00
fede 56ec4226da fix: añadidos override faltantes 2024-04-12 11:51:00 -03:00
fede 82fc7a09c6 feat: hechos primeras controladoras 2024-04-12 11:46:32 -03:00
fede aaa7f39a42 Merge branch 'master' into Controladora 2024-04-07 20:15:19 -03:00
fede 9f04a9c0af refactor: comentado que hace los genericos 2024-04-07 20:13:17 -03:00
fede c40f19e7c7 feat: añadido listar repositorio 2024-04-07 20:00:06 -03:00
fede 32bad7f9ac feat: borrado codigo repetido 2024-04-07 19:57:12 -03:00
fede 4139a58f6e feat: primera iteracion controladora base 2024-04-07 19:44:54 -03:00
fede ea209bc4fc refactor:cambiado nombre del contructor 2024-04-07 19:33:36 -03:00
fede ffd6001a08 Refactor: cambiado nombre de la clase abstracta a base 2024-04-07 19:31:50 -03:00
fede 2c8ca41f13 Merge pull request 'Feat: primera iteracion de los repositorios hecha' (#33) from Modelo into master
Reviewed-on: #33
2024-04-07 11:13:26 -03:00
fede ca71eefd6c Recupero los cambios perdidos en el commit 14f1488e44 2024-04-05 12:36:36 -03:00
Nacho 14f1488e44 Repositorios 2024-04-04 22:56:11 -03:00
Nacho 4584ea6529 repositorios 2024-04-04 22:52:14 -03:00
Nacho 5d29abefe6 repositoriosd 2024-04-04 22:44:15 -03:00
Nacho bc4cbf98b6 d 2024-04-04 22:34:46 -03:00
fede 6f63c32800 Reposfix: correjido gitignore 2024-04-04 22:34:29 -03:00
fede 6a21854822 fix: correjido gitignore 2024-04-01 17:50:28 -03:00
fede 0aa21cfe31 mejorado .gitignore y actualizado el csproj 2024-04-01 17:49:34 -03:00
fede 3dbd862047 Refactor: borre una interfaz que su funcion estaba duplicada 2024-04-01 17:34:29 -03:00
fede 1df2d39e29 Hice una clase abstracta para los repositorios 2024-04-01 17:32:24 -03:00
fede 567bf7b788 feat: añadí dependencias a webhooksharp y emailersharp 2024-03-30 16:37:20 -03:00
fede 07471878e7 Merge branch 'master' into Modelo 2024-03-24 18:53:31 -03:00
fede d04a2b25c8 mentí en el ultimo commit 2024-03-24 18:52:26 -03:00
fede c42010f45b ultimo cambio para que me deje traer los cambios de master a Modelo 2024-03-24 18:48:42 -03:00
fede f211b47850 correjido .gitignore 2024-03-24 12:12:03 -03:00
fede c0060e8c0d Merge pull request 'entidades' (#28) from entidades into master
Reviewed-on: #28
2024-03-22 18:30:27 -03:00
fede 3fdab465f1 feat: añadidos mostrar faltantantes 2024-03-16 13:05:25 -03:00
fede ebe118536d refactor: eliminadas lineas en blanco 2024-03-16 12:56:11 -03:00
fede 6fe4bcd878 feat: Termine unas cosas para que esto este listo para el merge 2024-03-16 12:50:08 -03:00
fede 6192eed627 Merge branch 'master' into entidades 2024-03-16 12:22:30 -03:00
fede 8050c95f7b Merge pull request 'CasosDeUso' (#31) from CasosDeUso into master
Reviewed-on: #31
2024-03-16 12:16:42 -03:00
fede 2150a38fe6 feat: terminados por ahora los cU 2024-03-16 12:14:05 -03:00
fede 2c653179a7 fix: Correjidos los nombres de los actores 2024-03-16 12:07:29 -03:00
fede 178680903f Chore: Actualizado el gitignore 2024-03-16 11:51:55 -03:00
fede 51ffddd858 feat: más CUs 2024-03-16 11:15:22 -03:00
fede 48ecb90bda me falta releer un poco más la narrativa para poder hacer el cu este 2024-03-15 15:39:40 -03:00
fede af16d85f23 fix: faltaba un caso de uso 2024-03-15 15:30:12 -03:00
fede 9ece6f89b1 Merge pull request 'DiagramaSecuencia: Hechos unos diagramas de secuencia' (#30) from DiagramaSecuencia into master
Reviewed-on: #30
2024-03-15 13:10:04 -03:00
fede bcdfc473b7 Hechos los diagramas que faltan 2024-03-15 13:04:16 -03:00
fede 36bf611d29 feat: añadidos algunos Diagramas de Secuencia 2024-03-14 18:45:59 -03:00
fede f539ba493c chore: me faltaron añadir estos archivos binarios al commit anterior 2024-03-14 15:28:46 -03:00
fede 1619dbfd1a añadido caso de uso para gestion de mails 2024-03-14 15:20:27 -03:00
fede cea7acc36c chore: Agregada plantilla para los DS y actualizados nombre de cu 2024-03-14 14:16:59 -03:00
fede 4664305b0a chore: restructuracion de la documentacion 2024-03-14 14:11:31 -03:00
fede bcb27c3a90 Merge pull request 'CasosDeUso' (#27) from CasosDeUso into master
Reviewed-on: #27
2024-03-14 13:55:49 -03:00
fede 6b622e77c0 feat: añadido cu para avisar al cliente que tiene poco stock 2024-03-14 13:51:13 -03:00
fede 4a3a28c7f9 feat: añadidos primeros casos de uso
necesito opiniones
2024-03-14 13:24:40 -03:00
Ignacio Jesús Diana 89523878ce arreglos, listo menos modificar 2024-02-26 22:37:15 -03:00
Ignacio Jesús Diana 132c1c570f echas las funciones menos modificar 2024-02-26 01:19:32 -03:00
Ignacio Jesús Diana 65c8469c92 cambiado internal x public 2024-02-24 17:19:58 -03:00
fede 0b073d51b9 Merge pull request 'Merge final de las ramas de entidades' (#23) from entidadesSINFunciones into entidades
Reviewed-on: #23
2024-02-24 17:09:28 -03:00
Ignacio Jesús Diana ee0ec5f0e8 prueba 2024-02-24 17:07:56 -03:00
fede 80293cb76b Merge pull request 'entidadesSINFunciones' (#22) from entidadesSINFunciones into entidades
Reviewed-on: #22
2024-02-24 16:44:21 -03:00
fede 5318e28925 Merge remote-tracking branch 'refs/remotes/origin/entidadesSINFunciones' 2024-02-24 16:43:48 -03:00
fede 21c28bd280 Merge remote-tracking branch 'refs/remotes/origin/entidades' 2024-02-24 16:22:00 -03:00
fede dd986beeed borrado .suo para que pueda unir las ramas 2024-02-24 16:20:53 -03:00
Ignacio Jesús Diana 9775b405a1 entidades con sus propiedades 2024-02-24 16:03:06 -03:00
Ignacio Jesús Diana 100852347e entidades con sus propiedades sin funcion 2024-02-24 16:01:03 -03:00
Ignacio Jesús Diana 712813e8cb Entidades con sus propiedades sin funciones 2024-02-24 16:00:39 -03:00
Ignacio Jesús Diana 46768f4f1b . 2024-02-24 14:48:01 -03:00
fede 4e2e723ea4 Feat: primera iteracion de los repositorios hecha
Signed-off-by fede <federico.nicolas.polidoro@gmail.com>
2024-02-23 23:35:00 -03:00
PolidoroFederico2am 619b6c5e04 Chore: añadida .sln principal del proyecto 2024-02-23 23:23:30 +00:00
PolidoroFederico2am 31db6eb9ec Chore: creada plantilla del programa 2024-02-23 22:50:47 +00:00
fede 1fc08aa076 Terminados todos los cambios pedidos por laureano 2024-02-22 20:40:54 -03:00
fede b8f612ba83 Fix: añadida relacion faltante 2024-02-22 20:35:45 -03:00
fede 594a39806f Fix: correjido el nombre de los detalles de la factura 2024-02-22 20:29:51 -03:00
fede 4991f91cb9 desplazado a una carpeta aparte 2024-02-15 15:46:06 -03:00
fede 5df3337d1d fix: cambiado sobre que hacemos el presupuesto 2024-02-12 17:36:23 -03:00
fede 128486b84c arreglado el diagrama de clases sin repositorios 2024-01-29 12:56:15 -03:00
fede d1d217168a Traje más cambios basados en lo hablado con mi padre 2024-01-29 12:19:16 -03:00
224 changed files with 10755 additions and 37 deletions
+15
View File
@@ -0,0 +1,15 @@
################################################################################
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
################################################################################
Vista/bin
Vista/obj
*.bbl
*.tex
.vs
Modelo/bin
Modelo/obj
Entidades/bin
Entidades/obj
Controladora/bin
Controladora/obj
+17
View File
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Modelo\Modelo.csproj" />
<ProjectReference Include="..\Entidades\Entidades.csproj" />
</ItemGroup>
</Project>
+58
View File
@@ -0,0 +1,58 @@
using System.Collections.ObjectModel;
using Entidades;
using Modelo;
namespace Controladora
{
public class ControladoraCategorias : Singleton<ControladoraCategorias>
{
// Método para verificar si una categoría con un ID ya existe
private bool CategoriaExiste(int id)
{
var categorias = RepositorioCategoria.Instance.Listar();
return categorias.Any(c => c.Id == id);
}
public string Añadir(Categoria t)
{
if (t == null) return "La categoría es nula, fallo la carga";
if (CategoriaExiste(t.Id))
{
return $"Ya existe una categoría con el ID {t.Id}";
}
return (RepositorioCategoria.Instance.Add(t)) ?
$"La categoría {t.Descripcion} se cargó correctamente" :
$"Falló la carga de la categoría {t.Descripcion}";
}
public string Eliminar(Categoria t)
{
if (t == null) return "La categoría es nula, fallo la carga";
return (RepositorioCategoria.Instance.Del(t)) ?
$"La categoría {t.Descripcion} se eliminó correctamente" :
$"Falló la eliminación de la categoría {t.Descripcion}";
}
public string Modificar(Categoria t)
{
if (t == null) return "La categoría es nula, fallo la carga";
if (!CategoriaExiste(t.Id))
{
return $"No se encontró una categoría con el ID {t.Id}";
}
return (RepositorioCategoria.Instance.Mod(t)) ?
$"La categoría {t.Descripcion} se modificó correctamente" :
$"Falló la modificación de la categoría {t.Descripcion}";
}
public ReadOnlyCollection<Categoria> Listar()
{
return RepositorioCategoria.Instance.Listar();
}
}
}
+61
View File
@@ -0,0 +1,61 @@
using System.Collections.ObjectModel;
using Entidades;
using Modelo;
namespace Controladora
{
public class ControladoraClientes : Singleton<ControladoraClientes>
{
public string Añadir(Cliente t)
{
if (t == null)
{
return "El Cliente es nulo, fallo la carga";
}
// Verificar si el CUIT ya existe en el repositorio
if (RepositorioClientes.Instance.ExistePorCuit(t.Cuit))
{
return $"El Cliente con el CUIT {t.Cuit} ya existe";
}
try
{
bool resultado = RepositorioClientes.Instance.Add(t);
return resultado ?
$"El Cliente con el CUIT {t.Cuit} se cargó correctamente" :
$"Falló la carga del Cliente con el CUIT {t.Cuit}";
}
catch (Exception ex)
{
// Captura cualquier excepción no prevista
return $"Ocurrió un error inesperado: {ex.Message}";
}
}
public string Eliminar(long cuit)
{
// Buscar el cliente por CUIT antes de eliminar
var cliente = RepositorioClientes.Instance.Listar().FirstOrDefault(x => x.Cuit == cuit);
if (cliente == null) return "El Cliente no existe";
return (RepositorioClientes.Instance.Del(cliente)) ?
$"El Cliente {cliente.Nombre} se eliminó correctamente" :
$"Falló la eliminación del Cliente con el CUIT {cuit}";
}
public string Modificar(Cliente t)
{
if (t == null) return "El Cliente es nulo, fallo la carga";
return (RepositorioClientes.Instance.Mod(t)) ?
$"El Cliente con el CUIT {t.Cuit} se modificó correctamente" :
$"Falló la modificación del Cliente con el CUIT {t.Cuit}";
}
public ReadOnlyCollection<Cliente> Listar()
{
return RepositorioClientes.Instance.Listar();
}
}
}
+62
View File
@@ -0,0 +1,62 @@
using System.Collections.ObjectModel;
using Entidades;
using Modelo;
namespace Controladora
{
public class ControladoraFacturas : Singleton<ControladoraFacturas>
{
public string Añadir(Factura t)
{
if (t == null) return "La Factura es nula, fallo la carga";
if (RepositorioFactura.Instance.ExistePorId(t.Id))
{
return $"La Factura con el ID {t.Id} ya existe";
}
// Verificar si el cliente está seleccionado
if (t.Cliente == null || t.Cliente.Cuit == 0)
{
return "Debe seleccionar un cliente antes de agregar la factura";
}
try
{
bool resultado = RepositorioFactura.Instance.Add(t);
return resultado ?
$"La Factura con el ID {t.Id} se cargó correctamente" :
$"Falló la carga de la Factura con el ID {t.Id}";
}
catch (Exception ex)
{
// Captura cualquier excepción no prevista
return $"Ocurrió un error inesperado: {ex.Message}";
}
}
public string Eliminar(Factura t)
{
if (t == null) return "La Factura es nula, fallo la carga";
return (RepositorioFactura.Instance.Del(t)) ?
$"La Factura con el ID {t.Id} se eliminó correctamente" :
$"Falló la eliminación de la Factura con el ID {t.Id}";
}
public string Modificar(Factura t)
{
if (t == null) return "La Factura es nula, fallo la carga";
return (RepositorioFactura.Instance.Mod(t)) ?
$"La Factura con el ID {t.Id} se modificó correctamente" :
$"Falló la modificación de la Factura con el ID {t.Id}";
}
public ReadOnlyCollection<Factura> Listar()
{
return RepositorioFactura.Instance.Listar();
}
}
}
+119
View File
@@ -0,0 +1,119 @@
using Entidades;
using Modelo;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Controladora
{
public class ControladoraLotes : Singleton<ControladoraLotes>
{
public string Añadir(Lote t)
{
if (t == null) return "El Lote es nulo, falló la carga";
try
{
bool resultado = RepositorioLote.Instance.Add(t);
return resultado ?
$"El Lote con el ID {t.Id} se cargó correctamente" :
$"Falló la carga del Lote con el ID {t.Id}";
}
catch (Exception ex)
{
// Captura cualquier excepción no prevista
return $"Ocurrió un error inesperado: {ex.Message}";
}
}
public string Modificar(Lote t)
{
if (t == null) return "El Lote es nulo, falló la modificación";
try
{
bool resultado = RepositorioLote.Instance.Mod(t);
return resultado ?
$"El Lote con el ID {t.Id} se modificó correctamente" :
$"Falló la modificación del Lote con el ID {t.Id}";
}
catch (Exception ex)
{
// Captura cualquier excepción no prevista
return $"Ocurrió un error inesperado: {ex.Message}";
}
}
public string Eliminar(Lote t)
{
if (t == null) return "El Lote es nulo, falló la eliminación";
try
{
bool resultado = RepositorioLote.Instance.Del(t);
return resultado ?
$"El Lote con el ID {t.Id} se eliminó correctamente" :
$"Falló la eliminación del Lote con el ID {t.Id}";
}
catch (Exception ex)
{
// Captura cualquier excepción no prevista
return $"Ocurrió un error inesperado: {ex.Message}";
}
}
public string EliminarPorFacturaId(int facturaId)
{
try
{
var lotes = RepositorioLote.Instance.Listar();
var lotesAEliminar = lotes.Where(lote => lote.Id == facturaId).ToList();
foreach (var lote in lotesAEliminar)
{
RepositorioLote.Instance.Del(lote);
}
return lotesAEliminar.Any() ?
$"Los Lotes asociados a la Factura con el ID {facturaId} se eliminaron correctamente" :
$"No se encontraron Lotes asociados a la Factura con el ID {facturaId}";
}
catch (Exception ex)
{
// Captura cualquier excepción no prevista
return $"Ocurrió un error inesperado: {ex.Message}";
}
}
public ReadOnlyCollection<Lote> ListarPorFacturaId(int facturaId)
{
try
{
var lotes = RepositorioLote.Instance.Listar();
var lotesPorFactura = lotes.Where(lote => lote.Id == facturaId).ToList();
return new ReadOnlyCollection<Lote>(lotesPorFactura);
}
catch (Exception ex)
{
// Captura cualquier excepción no prevista
throw new InvalidOperationException($"Ocurrió un error inesperado: {ex.Message}");
}
}
public ReadOnlyCollection<Lote> Listar()
{
try
{
return RepositorioLote.Instance.Listar();
}
catch (Exception ex)
{
// Captura cualquier excepción no prevista
throw new InvalidOperationException($"Ocurrió un error inesperado: {ex.Message}");
}
}
}
}
@@ -0,0 +1,42 @@
using System.Collections.ObjectModel;
using Entidades;
using Modelo;
namespace Controladora
{
public class ControladoraOrdenDeCompras : Singleton<ControladoraOrdenDeCompras>
{
public string Añadir(OrdenDeCompra t)
{
if (t == null) return "El OrdenDeCompra es nulo fallo la carga";
return (RepositorioOrdenDeCompra.Instance.Add(t)) ?
$"El OrdenDeCompra {t.Id} se cargo correctamente":
$"Fallo la carga del OrdenDeCompra {t.Id}";
}
public string Eliminar(OrdenDeCompra t)
{
if (t == null) return "El OrdenDeCompra es nulo fallo la carga";
return (RepositorioOrdenDeCompra.Instance.Del(t)) ?
$"El OrdenDeCompra {t.Id} se Elimino correctamente":
$"Fallo la Eliminacion del OrdenDeCompra {t.Id}";
}
public string Modificar(OrdenDeCompra t)
{
if (t == null) return "El OrdenDeCompra es nulo fallo la carga";
return (RepositorioOrdenDeCompra.Instance.Mod(t)) ?
$"El OrdenDeCompra {t.Id} se Modifico correctamente":
$"Fallo la Modificacion del OrdenDeCompra {t.Id}";
}
public ReadOnlyCollection<OrdenDeCompra> Listar()
{
return RepositorioOrdenDeCompra.Instance.Listar();
}
}
}
@@ -0,0 +1,42 @@
using System.Collections.ObjectModel;
using Entidades;
using Modelo;
namespace Controladora
{
public class ControladoraPedidoDePresupuestos : Singleton<ControladoraPedidoDePresupuestos>
{
public string Añadir(PedidoDePresupuesto t)
{
if (t == null) return "El PedidoDePresupuesto es nulo fallo la carga";
return (RepositorioPedidoDePresupuesto.Instance.Add(t)) ?
$"El PedidoDePresupuesto {t.Id} se cargo correctamente":
$"Fallo la carga del PedidoDePresupuesto {t.Id}";
}
public string Eliminar(PedidoDePresupuesto t)
{
if (t == null) return "El PedidoDePresupuesto es nulo fallo la carga";
return (RepositorioPedidoDePresupuesto.Instance.Del(t)) ?
$"El PedidoDePresupuesto {t.Id} se Elimino correctamente":
$"Fallo la Eliminacion del PedidoDePresupuesto {t.Id}";
}
public string Modificar(PedidoDePresupuesto t)
{
if (t == null) return "El PedidoDePresupuesto es nulo fallo la carga";
return (RepositorioPedidoDePresupuesto.Instance.Mod(t)) ?
$"El PedidoDePresupuesto {t.Id} se Modifico correctamente":
$"Fallo la Modificacion del PedidoDePresupuesto {t.Id}";
}
public ReadOnlyCollection<PedidoDePresupuesto> Listar()
{
return RepositorioPedidoDePresupuesto.Instance.Listar();
}
}
}
+41
View File
@@ -0,0 +1,41 @@
using System.Collections.ObjectModel;
using Entidades;
using Modelo;
namespace Controladora
{
public class ControladoraPresupuestos : Singleton<ControladoraPresupuestos>
{
public string Añadir(Presupuesto t)
{
if (t == null) return "El Presupuesto es nulo fallo la carga";
return (RepositorioPresupuesto.Instance.Add(t)) ?
$"El Presupuesto {t.Id} se cargo correctamente":
$"Fallo la carga del Presupuesto {t.Id}";
}
public string Eliminar(Presupuesto t)
{
if (t == null) return "El Presupuesto es nulo fallo la carga";
return (RepositorioPresupuesto.Instance.Del(t)) ?
$"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";
return (RepositorioPresupuesto.Instance.Mod(t)) ?
$"El Presupuesto {t.Id} se Modifico correctamente":
$"Fallo la Modificacion del Presupuesto {t.Id}";
}
public ReadOnlyCollection<Presupuesto> Listar()
{
return RepositorioPresupuesto.Instance.Listar();
}
}
}
+43
View File
@@ -0,0 +1,43 @@
using System.Collections.ObjectModel;
using Entidades;
using Modelo;
namespace Controladora
{
public class ControladoraProductos : Singleton<ControladoraProductos>
{
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<Producto> Listar()
{
return RepositorioProductos.Instance.Listar();
}
}
}
+50
View File
@@ -0,0 +1,50 @@
using System.Collections.ObjectModel;
using Entidades;
using Modelo;
namespace Controladora
{
public class ControladoraProveedores : Singleton<ControladoraProveedores>
{
public string Añadir(Proveedor t)
{
if (t == null) return "El Proveedor es nulo fallo la carga";
try
{
return RepositorioProveedor.Instance.Add(t) ?
$"El Proveedor {t.Nombre} se cargó correctamente" :
$"Falló la carga del Proveedor {t.Nombre}";
}
catch (InvalidOperationException ex)
{
return ex.Message; // Captura la excepción y muestra el mensaje adecuado
}
}
public string Eliminar(long t)
{
var proveedor = RepositorioProveedor.Instance.Listar().FirstOrDefault(x => x.Cuit == t);
if (proveedor == null) return "El Proveedor es nulo fallo la baja";
return (RepositorioProveedor.Instance.Del(proveedor)) ?
$"El Proveedor {proveedor.Nombre} se eliminó correctamente" :
$"Falló la eliminación del Proveedor {t}";
}
public string Modificar(Proveedor t)
{
if (t == null) return "El Proveedor es nulo fallo la modificación";
return (RepositorioProveedor.Instance.Mod(t)) ?
$"El Proveedor {t.Nombre} se modificó correctamente" :
$"Falló la modificación del Proveedor {t.Nombre}";
}
public ReadOnlyCollection<Proveedor> Listar()
{
return RepositorioProveedor.Instance.Listar();
}
}
}
+43
View File
@@ -0,0 +1,43 @@
using System.Collections.ObjectModel;
using Entidades;
using Modelo;
namespace Controladora
{
public class ControladoraRemito : Singleton<ControladoraRemito>
{
public ReadOnlyCollection<Remito> Listar()
{
return RepositorioRemito.Instance.Listar();
}
public string Añadir(Remito t)
{
if (t == null) return "El Remito es nulo fallo la carga";
return (RepositorioRemito.Instance.Add(t)) ?
$"El remito {t.Id} se cargo correctamente":
$"Fallo la carga del remito {t.Id}";
}
public string Modificar(Remito t)
{
if (t == null) return "El Remito es nulo fallo la carga";
return (RepositorioRemito.Instance.Add(t)) ?
$"El remito {t.Id} se cargo correctamente":
$"Fallo la carga del remito {t.Id}";
}
public string Eliminar(Remito t)
{
if (t == null) return "El Remito es nulo fallo la carga";
return (RepositorioRemito.Instance.Add(t)) ?
$"El remito {t.Id} se cargo correctamente":
$"Fallo la carga del remito {t.Id}";
}
}
}
+16
View File
@@ -0,0 +1,16 @@
namespace Controladora
{
public class Singleton<T> where T : new()
{
// Singleton thread-safe por si quiero usar "Parallel"
private static T instance = new T();
public static T Instance
{
get
{
return instance;
}
}
}
}
@@ -0,0 +1,50 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v6.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v6.0": {
"Controladora/1.0.0": {
"dependencies": {
"Entidades": "1.0.0",
"Modelo": "1.0.0"
},
"runtime": {
"Controladora.dll": {}
}
},
"Entidades/1.0.0": {
"runtime": {
"Entidades.dll": {}
}
},
"Modelo/1.0.0": {
"dependencies": {
"Entidades": "1.0.0"
},
"runtime": {
"Modelo.dll": {}
}
}
}
},
"libraries": {
"Controladora/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Entidades/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Modelo/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,187 @@
{
"format": 1,
"restore": {
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Controladora\\Controladora.csproj": {}
},
"projects": {
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Controladora\\Controladora.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Controladora\\Controladora.csproj",
"projectName": "Controladora",
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Controladora\\Controladora.csproj",
"packagesPath": "C:\\Users\\fedpo\\.nuget\\packages\\",
"outputPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Controladora\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\fedpo\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {},
"https://fedesrv.ddns.net/git/api/packages/fede/nuget/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj": {
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj"
},
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Modelo\\Modelo.csproj": {
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Modelo\\Modelo.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.306\\RuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj",
"projectName": "Entidades",
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj",
"packagesPath": "C:\\Users\\fedpo\\.nuget\\packages\\",
"outputPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\fedpo\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {},
"https://fedesrv.ddns.net/git/api/packages/fede/nuget/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.306\\RuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Modelo\\Modelo.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Modelo\\Modelo.csproj",
"projectName": "Modelo",
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Modelo\\Modelo.csproj",
"packagesPath": "C:\\Users\\fedpo\\.nuget\\packages\\",
"outputPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Modelo\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\fedpo\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {},
"https://fedesrv.ddns.net/git/api/packages/fede/nuget/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj": {
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.306\\RuntimeIdentifierGraph.json"
}
}
}
}
}
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\fedpo\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.6.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\fedpo\.nuget\packages\" />
</ItemGroup>
</Project>
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Controladora")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("Controladora")]
[assembly: System.Reflection.AssemblyTitleAttribute("Controladora")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
f121c5eeefa8c5e39430715ad45c0dbadc6c8ad0
@@ -0,0 +1,11 @@
is_global = true
build_property.TargetFramework = net6.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Controladora
build_property.ProjectDir = C:\Users\fedpo\Downloads\final actual\final actual\Controladora\
@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
@@ -0,0 +1,5 @@
<<<<<<< HEAD
07cbdde4e47ec2d3a6db548797ff84a15aa08946633217fe5ed64773b3cc8491
=======
a7a9c23e29aac78d8fc99e5e2578c73ffe3d4cba
>>>>>>> 5b78d74e54350285696596720e82f5fbd99b4d02
@@ -0,0 +1,137 @@
C:\Users\Nacho\Desktop\verdadero\Controladora\bin\Debug\net6.0\Controladora.deps.json
C:\Users\Nacho\Desktop\verdadero\Controladora\bin\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Desktop\verdadero\Controladora\bin\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Desktop\verdadero\Controladora\obj\Debug\net6.0\Controladora.csproj.AssemblyReference.cache
C:\Users\Nacho\Desktop\verdadero\Controladora\obj\Debug\net6.0\Controladora.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\Nacho\Desktop\verdadero\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfoInputs.cache
C:\Users\Nacho\Desktop\verdadero\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfo.cs
C:\Users\Nacho\Desktop\verdadero\Controladora\obj\Debug\net6.0\Controladora.csproj.CoreCompileInputs.cache
C:\Users\Nacho\Desktop\verdadero\Controladora\obj\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Desktop\verdadero\Controladora\obj\Debug\net6.0\refint\Controladora.dll
C:\Users\Nacho\Desktop\verdadero\Controladora\obj\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Desktop\verdadero\Controladora\obj\Debug\net6.0\ref\Controladora.dll
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\refint\Controladora.dll
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\source\repos\Final\Controladora\obj\Debug\net6.0\Controladora.dll
C:\Users\Nacho\source\repos\Final\Controladora\obj\Debug\net6.0\refint\Controladora.dll
C:\Users\Nacho\source\repos\Final\Controladora\obj\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\refint\Controladora.dll
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\bin\Debug\net6.0\Controladora.deps.json
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\bin\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\bin\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\bin\Debug\net6.0\Entidades.dll
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\bin\Debug\net6.0\Modelo.dll
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\bin\Debug\net6.0\Modelo.pdb
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\bin\Debug\net6.0\Entidades.pdb
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.csproj.AssemblyReference.cache
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfoInputs.cache
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfo.cs
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.csproj.CoreCompileInputs.cache
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\Controla.1EE7A4DA.Up2Date
C:\Users\Nacho\Source\Repos\Final_OOP\Controladora\obj\Debug\net6.0\ref\Controladora.dll
C:\Users\fedpo\source\repos\Final_OOP\Controladora\bin\Debug\net6.0\Controladora.deps.json
C:\Users\fedpo\source\repos\Final_OOP\Controladora\bin\Debug\net6.0\Controladora.dll
C:\Users\fedpo\source\repos\Final_OOP\Controladora\bin\Debug\net6.0\Controladora.pdb
C:\Users\fedpo\source\repos\Final_OOP\Controladora\bin\Debug\net6.0\Entidades.dll
C:\Users\fedpo\source\repos\Final_OOP\Controladora\bin\Debug\net6.0\Modelo.dll
C:\Users\fedpo\source\repos\Final_OOP\Controladora\bin\Debug\net6.0\Modelo.pdb
C:\Users\fedpo\source\repos\Final_OOP\Controladora\bin\Debug\net6.0\Entidades.pdb
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.csproj.AssemblyReference.cache
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfoInputs.cache
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfo.cs
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.csproj.CoreCompileInputs.cache
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.csproj.CopyComplete
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.dll
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\refint\Controladora.dll
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\Controladora.pdb
C:\Users\fedpo\source\repos\Final_OOP\Controladora\obj\Debug\net6.0\ref\Controladora.dll
C:\Users\Nacho\Desktop\Final\Controladora\bin\Debug\net6.0\Controladora.deps.json
C:\Users\Nacho\Desktop\Final\Controladora\bin\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Desktop\Final\Controladora\bin\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Desktop\Final\Controladora\bin\Debug\net6.0\Entidades.dll
C:\Users\Nacho\Desktop\Final\Controladora\bin\Debug\net6.0\Modelo.dll
C:\Users\Nacho\Desktop\Final\Controladora\bin\Debug\net6.0\Modelo.pdb
C:\Users\Nacho\Desktop\Final\Controladora\bin\Debug\net6.0\Entidades.pdb
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\Controladora.csproj.AssemblyReference.cache
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\Controladora.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfoInputs.cache
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfo.cs
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\Controladora.csproj.CoreCompileInputs.cache
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\Controla.1EE7A4DA.Up2Date
C:\Users\Nacho\Desktop\Final\Controladora\obj\Debug\net6.0\ref\Controladora.dll
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\bin\Debug\net6.0\Controladora.deps.json
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\bin\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\bin\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\bin\Debug\net6.0\Entidades.dll
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\bin\Debug\net6.0\Modelo.dll
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\bin\Debug\net6.0\Modelo.pdb
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\bin\Debug\net6.0\Entidades.pdb
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\Controladora.csproj.AssemblyReference.cache
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\Controladora.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfoInputs.cache
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfo.cs
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\Controladora.csproj.CoreCompileInputs.cache
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\Controla.1EE7A4DA.Up2Date
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\refint\Controladora.dll
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Desktop\ASDDD\Final\Controladora\obj\Debug\net6.0\ref\Controladora.dll
C:\Users\fedpo\Downloads\Final\Final\Controladora\bin\Debug\net6.0\Controladora.deps.json
C:\Users\fedpo\Downloads\Final\Final\Controladora\bin\Debug\net6.0\Controladora.dll
C:\Users\fedpo\Downloads\Final\Final\Controladora\bin\Debug\net6.0\Controladora.pdb
C:\Users\fedpo\Downloads\Final\Final\Controladora\bin\Debug\net6.0\Entidades.dll
C:\Users\fedpo\Downloads\Final\Final\Controladora\bin\Debug\net6.0\Modelo.dll
C:\Users\fedpo\Downloads\Final\Final\Controladora\bin\Debug\net6.0\Modelo.pdb
C:\Users\fedpo\Downloads\Final\Final\Controladora\bin\Debug\net6.0\Entidades.pdb
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\Controladora.csproj.AssemblyReference.cache
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\Controladora.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfoInputs.cache
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfo.cs
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\Controladora.csproj.CoreCompileInputs.cache
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\Controladora.csproj.CopyComplete
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\Controladora.dll
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\refint\Controladora.dll
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\Controladora.pdb
C:\Users\fedpo\Downloads\Final\Final\Controladora\obj\Debug\net6.0\ref\Controladora.dll
C:\Users\Nacho\Desktop\final actual\Controladora\bin\Debug\net6.0\Controladora.deps.json
C:\Users\Nacho\Desktop\final actual\Controladora\bin\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Desktop\final actual\Controladora\bin\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Desktop\final actual\Controladora\bin\Debug\net6.0\Entidades.dll
C:\Users\Nacho\Desktop\final actual\Controladora\bin\Debug\net6.0\Modelo.dll
C:\Users\Nacho\Desktop\final actual\Controladora\bin\Debug\net6.0\Modelo.pdb
C:\Users\Nacho\Desktop\final actual\Controladora\bin\Debug\net6.0\Entidades.pdb
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\Controladora.csproj.AssemblyReference.cache
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\Controladora.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfoInputs.cache
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfo.cs
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\Controladora.csproj.CoreCompileInputs.cache
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\Controla.1EE7A4DA.Up2Date
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\Controladora.dll
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\refint\Controladora.dll
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\Controladora.pdb
C:\Users\Nacho\Desktop\final actual\Controladora\obj\Debug\net6.0\ref\Controladora.dll
<<<<<<< HEAD
=======
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\bin\Debug\net6.0\Controladora.deps.json
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\bin\Debug\net6.0\Controladora.dll
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\bin\Debug\net6.0\Controladora.pdb
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\bin\Debug\net6.0\Entidades.dll
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\bin\Debug\net6.0\Modelo.dll
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\bin\Debug\net6.0\Modelo.pdb
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\bin\Debug\net6.0\Entidades.pdb
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\Controladora.csproj.AssemblyReference.cache
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\Controladora.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfoInputs.cache
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\Controladora.AssemblyInfo.cs
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\Controladora.csproj.CoreCompileInputs.cache
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\Controladora.csproj.CopyComplete
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\Controladora.dll
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\refint\Controladora.dll
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\Controladora.pdb
C:\Users\fedpo\Downloads\final actual\final actual\Controladora\obj\Debug\net6.0\ref\Controladora.dll
>>>>>>> 5b78d74e54350285696596720e82f5fbd99b4d02
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Este código fue generado por una herramienta.
// Versión de runtime:4.0.30319.42000
//
// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
// se vuelve a generar el código.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Controladora")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+abfd18e86f40a98925507ec03c2e8832ee47a3eb")]
[assembly: System.Reflection.AssemblyProductAttribute("Controladora")]
[assembly: System.Reflection.AssemblyTitleAttribute("Controladora")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generado por la clase WriteCodeFragment de MSBuild.
@@ -0,0 +1 @@
1300c7ac552248a2e20058b6f2d7f7eb38539ca91bc222d9d6bfd7bbcb24e9ab
@@ -0,0 +1,13 @@
is_global = true
build_property.TargetFramework = net6.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Controladora
build_property.ProjectDir = C:\Users\Nacho\source\repos\Final\Controladora\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
+114
View File
@@ -0,0 +1,114 @@
{
"version": 3,
"targets": {
"net6.0": {
"Entidades/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v6.0",
"compile": {
"bin/placeholder/Entidades.dll": {}
},
"runtime": {
"bin/placeholder/Entidades.dll": {}
}
},
"Modelo/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v6.0",
"dependencies": {
"Entidades": "1.0.0"
},
"compile": {
"bin/placeholder/Modelo.dll": {}
},
"runtime": {
"bin/placeholder/Modelo.dll": {}
}
}
}
},
"libraries": {
"Entidades/1.0.0": {
"type": "project",
"path": "../Entidades/Entidades.csproj",
"msbuildProject": "../Entidades/Entidades.csproj"
},
"Modelo/1.0.0": {
"type": "project",
"path": "../Modelo/Modelo.csproj",
"msbuildProject": "../Modelo/Modelo.csproj"
}
},
"projectFileDependencyGroups": {
"net6.0": [
"Entidades >= 1.0.0",
"Modelo >= 1.0.0"
]
},
"packageFolders": {
"C:\\Users\\fedpo\\.nuget\\packages\\": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Controladora\\Controladora.csproj",
"projectName": "Controladora",
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Controladora\\Controladora.csproj",
"packagesPath": "C:\\Users\\fedpo\\.nuget\\packages\\",
"outputPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Controladora\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\fedpo\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {},
"https://fedesrv.ddns.net/git/api/packages/fede/nuget/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj": {
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj"
},
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Modelo\\Modelo.csproj": {
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Modelo\\Modelo.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.306\\RuntimeIdentifierGraph.json"
}
}
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"version": 2,
"dgSpecHash": "AVYTA+Cdyhg6wCEQPUiY9Zgnvl4qcFZo9nD09bdg1F+72oerfmmuZj274FC2KL/pXGSF1iqxwV37ZtH0RMkuXw==",
"success": true,
"projectFilePath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Controladora\\Controladora.csproj",
"expectedPackageFiles": [],
"logs": []
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

+258
View File
@@ -0,0 +1,258 @@
#+title: Casos De Uso
* Empleado Gestiona un Producto
#+begin_src plantuml :file registroProducto.jpg
@startuml
left to right direction
actor "Empleado" <<Persona>> as fc
rectangle GestionProductos {
usecase "Gestionar Productos" as UC1
usecase "Listar Productos" as UC2
usecase "Modificar Productos" as UC3
usecase "Eliminar Producto" as UC4
usecase "Registrar Producto" as UC5
usecase "Seleccionar Proveedor" as uc7
usecase "Gestionar Categorias" as uc6
}
fc --> UC1
UC1 ..> UC2: "include"
UC3 ..> UC1: "extend"
UC4 ..> UC1: "extend"
UC5 ..> UC1: "extend"
UC5 ..> uc7: "include"
UC3 .> uc6: "include"
UC5 .> uc6: "include"
@enduml
#+end_src
#+RESULTS:
[[file:registroProducto.jpg]]
* Empleado Gestion Categorias
#+begin_src plantuml :file RegistroCategorias.jpg
@startuml
actor "Empleado" <<Persona>> as fc
rectangle RegistrarCategorias {
usecase "Gestionar Categorias" as UC1
usecase "Eliminar Categoria" as UC4
usecase "Registrar Categoria" as UC5
}
fc --> UC1
UC4 ..> UC1: "extend"
UC5 ..> UC1: "extend"
@enduml
#+end_src
#+RESULTS:
[[file:RegistroCategorias.jpg]]
* Empleado Registra Facturas
#+begin_src plantuml :file RegistroFacturas.jpg
@startuml
left to right direction
actor "Empleado" <<Persona>> as fc
rectangle RegistrarFacturas {
usecase "Gestionar Facturas" as uc0
usecase "Registrar Factura" as UC1
usecase "Listar Productos Con Existencias" as UC2
usecase "Filtrar Producto Por Categoria" as uc3
usecase "Descontar Stock" as uc4
}
fc --> uc0
uc0 <.. UC1: "extend"
uc0 ..> UC2: "include"
UC2 ..> uc3: "include"
UC1 ..> uc4: "include"
@enduml
#+end_src
#+RESULTS:
[[file:RegistroFacturas.jpg]]
* Empleado Registra Ordenes de Compra
#+begin_src plantuml :file RegistroOrdenDeCompra.jpg
@startuml
left to right direction
actor "Empleado" <<Persona>> as fc
rectangle RegistrarOrdendeCompra {
usecase "Gestionar OrdenDeCompra" as uc0
usecase "Registrar OrdenDeCompra" as UC1
usecase "Seleccionar Presupuesto" as uc3
usecase "Listar Ordenes" as UC2
}
fc --> uc0
uc0 <.. UC1: "extend"
uc0 ..> UC2: "include"
UC1 ..> uc3: "include"
@enduml
#+end_src
#+RESULTS:
[[file:RegistroOrdenDeCompra.jpg]]
* Empleado Registra Remito
#+begin_src plantuml :file RegistroRemito.jpg
@startuml
left to right direction
actor "Empleado" <<Persona>> as fc
rectangle RegistroRemito {
usecase "Gestionar Remitos" as uc0
usecase "Registrar Remito" as UC1
usecase "Aumentar Stock" as uc3
usecase "Listar Remitos" as uc4
}
fc --> uc0
uc0 ..> uc4: "include"
uc0 <.. UC1: "extend"
UC1 ..> uc3: "include"
@enduml
#+end_src
#+RESULTS:
[[file:RegistroRemito.jpg]]
* Se pide un Presupuesto
#+begin_src plantuml :file PedidoPresupuesto.jpg
@startuml
left to right direction
actor "Empleado" <<Persona>> as fc
rectangle RegistroRemito {
usecase "Gestionar Pedidos de Presupuesto" as uc0
usecase "Enviar Pedido de Presupuesto" as uc1
usecase "Registrar Pedido de Presupuesto" as uc3
}
fc --> uc0
uc0 <.. uc3: "extend"
uc1 ..> uc3: "include"
@enduml
#+end_src
#+RESULTS:
[[file:PedidoPresupuesto.jpg]]
* Carga de presupuesto enviado por un proveedor
#+begin_src plantuml :file CargaPresupuesto.jpg
@startuml
left to right direction
actor "Empleado" <<Persona>> as fc
rectangle RegistroRemito {
usecase "Gestionar Presupuestos" as uc0
usecase "Registrar Presupuesto" as uc1
}
fc --> uc0
uc0 <.. uc1: "extend"
@enduml
#+end_src
#+RESULTS:
[[file:CargaPresupuesto.jpg]]
* Informar pocos productos en stock
#+begin_src plantuml :file Informe.jpg
actor "Sistema" <<Programa>> as pr
rectangle "Aviso Stock Restante" {
note "<<Invariable>>\n producto->stock <= producto->umbralAvisoStock" as n1
usecase "Checkear Stock" as uc0
usecase "Enviar Informe" as uc1
usecase "Enviar Mail" as uc2
usecase "Mostrar MessageBox" as uc3
}
pr --> uc0
uc1 ..> uc0: "extend"
uc1 ..> uc2: "include"
uc1 ..> uc3: "include"
n1 .. uc0
#+end_src
#+RESULTS:
[[file:Informe.jpg]]
* Gestionar Mails de Informes
#+begin_src plantuml :file GestionMails.jpg
@startuml
actor "Empleado" <<Persona>> as cl
rectangle "Gestion Mails" {
usecase "Gestionar Mails" as UC1
usecase "Listar Mails" as UC2
usecase "Modificar Mails" as UC3
usecase "Eliminar Mail" as UC4
usecase "Registrar Mail" as UC5
}
left to right direction
cl --> UC1
UC1 ..> UC2: "include"
UC1 <.. UC3: "extend"
UC1 <.. UC4: "extend"
UC1 <.. UC5: "extend"
@enduml
#+end_src
#+RESULTS:
[[file:GestionMails.jpg]]
* Empleado Registra Proveedor
#+begin_src plantuml :file GestionProveedor.jpg
@startuml
actor "Empleado" <<Persona>> as cl
rectangle "Gestion Proveedor" {
usecase "Gestionar Proveedor" as UC1
usecase "Listar Proveedor" as UC2
usecase "Modificar Proveedor" as UC3
usecase "Eliminar Proveedor" as UC4
usecase "Registrar Proveedor" as UC5
}
left to right direction
cl --> UC1
UC1 ..> UC2: "include"
UC1 <.. UC3: "extend"
UC1 <.. UC4: "extend"
UC1 <.. UC5: "extend"
@enduml
#+end_src
#+RESULTS:
[[file:GestionProveedor.jpg]]
* Empleado Registra Cliente
#+begin_src plantuml :file GestionCliente.jpg
@startuml
actor "Empleado" <<Persona>> as cl
rectangle "Gestion Cliente" {
usecase "Gestionar Cliente" as UC1
usecase "Listar Cliente" as UC2
usecase "Modificar Cliente" as UC3
usecase "Eliminar Cliente" as UC4
usecase "Registrar Cliente" as UC5
}
left to right direction
cl --> UC1
UC1 ..> UC2: "include"
UC1 <.. UC3: "extend"
UC1 <.. UC4: "extend"
UC1 <.. UC5: "extend"
@enduml
#+end_src
#+RESULTS:
[[file:GestionCliente.jpg]]
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

@@ -0,0 +1,246 @@
#+title: Diagrama Secuencia
* Usuario Gestiona un Producto
#+begin_src plantuml :file GestionProducto.jpg
@startuml
actor "Cliente" as cl
boundary "FormProductos" as fps
boundary "FormProducto" as fp
control "Controladora Producto" as gp
entity "Repo Productos" as rp
group "Registrar Nuevo Producto"
cl -> fps: Registrar Producto
fps -> fp: RegistrarProducto()
fp -> gp: AñadirProducto(:Producto)
gp -> rp: Add(:Producto)
alt ok case
rp --> gp: 👍
gp --> fp: "Se añadió el producto"
else algo fallo
rp --> gp: 👎
gp --> fp: "Falló la carga"
end
fp --> fps: ok
group "Refesh Productos"
fps -> fps: RefreshGUI()
end
end
group "Modificar Producto"
cl -> fps: Modificar Producto
fps -> fp: ModificarProducto(:Producto)
fp -> gp: ModificarProducto(:Producto)
gp -> rp: Mod(:Producto)
alt ok case
rp --> gp: 👍
gp --> fp: "Se Modificó el producto"
else algo fallo
rp --> gp: 👎
gp --> fp: "Falló Modificacion"
end
fp --> fps: ok
group "Refesh Productos"
fps -> fps: RefreshGUI()
end
end
group "Eliminar Producto"
cl -> fps: Eliminar Producto
fps -> gp: EliminarProducto(:Producto)
gp -> rp: Del(:Producto)
alt ok case
rp --> gp: 👍
gp --> fp: "Se eliminó el producto"
else algo fallo
rp --> gp: 👎
gp --> fp: "Falló la Baja del producto"
end
group "Refesh Productos"
fps -> fps: RefreshGUI()
end
end
@enduml
#+end_src
#+RESULTS:
[[file:GestionProducto.jpg]]
* Usuario Gestiona Categorias
#+begin_src plantuml :file GestionCategorias.jpg
@startuml
actor "Cliente" as cl
boundary "FormCategorias" as fcs
boundary "FormCategoria" as fc
control "Controladora Categorias" as gc
entity "Repo Categorias" as rc
group "Añadir Categoria"
cl -> fcs: Añadir Categoria
fcs -> fc: RegistrarCategoria()
fc -> gc: RegistrarCategoria(:Categoria)
gc -> rc: Add(:Categoria)
alt ok case
rc --> gc: 👍
gc --> fc: "Se añadió la Categoria"
else algo fallo
rc --> gc: 👎
gc --> fc: "Falló la carga"
end
fc --> fcs: ok
group "Refrescar Categorias"
fcs -> fcs: RefreshGUI()
end
end
group "Eliminar Categoria"
cl -> fcs: Eliminar Categoria
fcs -> fc: RegistrarCategoria()
fc -> gc: RegistrarCategoria(:Categoria)
gc -> rc: Add(:Categoria)
alt ok case
rc --> gc: 👍
gc --> fc: "Se Eliminó la Categoria"
else algo fallo
rc --> gc: 👎
gc --> fc: "Falló la Baja"
end
fc --> fcs: ok
group "Refrescar Categorias"
fcs -> fcs: RefreshGUI()
end
end
@enduml
#+end_src
#+RESULTS:
[[file:GestionCategorias.jpg]]
* Usuario Registra Facturas
#+begin_src plantuml :file GestionFacturas.jpg
@startuml
actor "Cliente" as cl
boundary "FormFacturas" as fcs
boundary "FormFactura" as fc
control "Controladora Facturas" as gc
entity "Repo Facturas" as rc
group "Añadir Factura"
cl -> fcs: Añadir Factura
fcs -> fc: RegistrarFactura()
fc -> gc: RegistrarFactura(:Factura)
gc -> rc: Add(:Factura)
alt ok case
rc --> gc: 👍
else algo fallo
rc --> gc: 👎
end
gc -> rc: DescontarStock(:Factura)
alt ok case
rc --> gc: 👍
else algo fallo
rc --> gc: 👎
end
gc --> fc: ok
fc --> fcs: ok
group "Refrescar Facturas"
fcs -> fcs: RefreshGUI()
end
end
@enduml
#+end_src
#+RESULTS:
[[file:GestionFacturas.jpg]]
* Gestion de Mails para informes
#+begin_src plantuml :file GestionMails.jpg
@startuml
actor "Cliente" as cl
boundary "FormGestionMails" as fps
control "ControladoraGestionMails" as gp
entity "RepoMails" as rp
group "Registrar Nuevo Mails"
cl -> fps: Registrar Mail
fps -> gp: RegistrarMail(:Mail)
gp -> rp: Add(:Mail)
alt ok case
rp --> gp: 👍
gp --> fps: "Se añadió el Mail"
else algo fallo
rp --> gp: 👎
gp --> fps: "Falló la carga"
end
group "Refesh Mails"
fps -> fps: RefreshGUI()
end
end
group "Modificar Mail"
cl -> fps: Modificar Mail
fps -> gp: ModificarMail(:Mail)
gp -> rp: Mod(:Mail)
alt ok case
rp --> gp: 👍
gp --> fps: "Se Modificó el Mail"
else algo fallo
rp --> gp: 👎
gp --> fps: "Falló Modificacion"
end
group "Refesh Mails"
fps -> fps: RefreshGUI()
end
end
group "Eliminar Mail"
cl -> fps: Eliminar Mail
fps -> gp: EliminarMail(:Mail)
gp -> rp: Del(:Mail)
alt ok case
rp --> gp: 👍
gp --> fps: "Se eliminó el Mail"
else algo fallo
rp --> gp: 👎
gp --> fps: "Falló la Baja del Mail"
end
group "Refesh Mail"
fps -> fps: RefreshGUI()
end
end
@enduml
#+end_src
#+RESULTS:
[[file:GestionMails.jpg]]

Before

Width:  |  Height:  |  Size: 216 KiB

After

Width:  |  Height:  |  Size: 216 KiB

@@ -193,6 +193,15 @@ Detalle --> Producto
#+RESULTS:
[[file:DiagramaConRepos.jpg]]
* Diagrama de clases sin Repositorios
#+begin_src plantuml :file DiagramaSinRepos.jpg
@startuml
@@ -215,13 +224,11 @@ class Producto {
+ Nombre: string
+ Precio: double
- Categorias: List<Categoria>?
- Lotes: List<Lote>?
+ Habilitado: bool
+ MostrarLotesDeProductos(): ReadOnlyCollection<Lote>
+ AñadirLotesStock(): bool
+ EliminarLotesStock(): bool
+ MostrarStockRemanente(): long
+ MostrarCategoriasDeProductos(): ReadOnlyCollection<Categoria>
+ AñadirCategoriasStock(): bool
+ EliminarCategoriasStock(): bool
}
class Categoria {
@@ -229,18 +236,17 @@ class Categoria {
+ Descripcion: String
}
Categoria "0..*" <--o "1 ." Producto
class Presupuesto {
+ Id: int
+ Fecha: DateTime
+ Proveedor: Proveedor
+ Monto: int
+ CantIdad: int
+ Habilitado: bool
}
- Detalles: List<DetallePresupuesto>
+ Aceptado: bool
Presupuesto "1" --> "1..*" Lote
Proveedor "1" <-- "1 ." Presupuesto
+ MostrarDetalles(): ReadOnlyCollection<DetallePresupuesto>
+ AñadirDetalle(DetallePresupuesto): bool
}
class Proveedor {
+ Id: int
@@ -249,12 +255,10 @@ class Proveedor {
+ Habilitado: bool
}
class Detalle <where T: Producto>{
+ Id: int
+ CantIdad: int
class DetalleFactura {
+ IdFactura: int
+ PrecioUnitario: double
+ Subtotal: double
+ Producto: T
}
class Cliente {
@@ -265,28 +269,44 @@ class Cliente {
+ Correo: string
}
class Detalle <where T: Producto>{
+ Id: int
+ Producto: T
+ Cantidad: int
}
class Factura {
+ Total: double
+ Fecha: DateTime
+ Cliente: Cliente
- Detalles: List<Detalle>
- detalles: List<DetalleFactura>
+ MostrarDetalles(): ReadOnlyCollection<Detalle>
+ AñadirDetalle(Detalle): voId
+ ModificarDetalle(Detalle): voId
+ EliminarDetalle(Detalle): voId
+ MostrarDetalles(): ReadOnlyCollection<DetalleFactura>
+ AñadirDetalle(DetalleFactura): void
+ ModificarDetalle(DetalleFactura): void
+ EliminarDetalle(DetalleFactura): void
}
Cliente "1" <-- "1" Factura
Factura "1 ." *-- "1..*" Detalle
class DetallePedido {
+ IdPedido: int
}
Detalle "1 ." --> "1" Producto
class PedidoDePresupuesto {
+ Id: int
+ Fecha: DateTime
- detallesPedidos: List<DetallePedido>
+ Proveedor: Proveedor
+ MostrarDetalles(): ReadOnlyCollection<DetallePedido>
+ AñadirDetalle(DetallePedido): void
+ EliminarDetalle(DetallePedido): void
}
Producto "1" --> "1" Lote
class Lote {
+ Id: int
+ Fecha: DateTime
+ Producto: Producto
+ CantIdadDeProductos: long
+ CantidadDeProductos: long
+ Habilitado: bool
}
@@ -296,10 +316,74 @@ Enlatado,
Cartón,
}
class DetallePresupuesto {
+ IdPresupuesto: int
+ CostoUnitario: double
}
class OrdenDeCompra {
+ Id: int
- Productos: List<DetalleOrdenDeCompra>
+ Proveedor: Proveedor
+ MostrarDetalles(): ReadOnlyCollection<DetalleOrdenDeCompra>
+ AñadirDetalle(DetalleOrdenDeCompra): bool
+ ModificarDetalle(DetalleOrdenDeCompra): bool
+ EliminarDetalle(DetalleOrdenDeCompra): bool
}
class DetalleOrdenDeCompra {
+ IdOrdenDeCompra: int
}
class Remito {
+ Id: int
- LotesDeProductosEntregados: List<Lote>
+ Proveedor: Proveedor
+ MostrarLotes(): ReadOnlyCollection<Lote>
+ AñadirLote(Lote): bool
}
Detalle <|-- DetalleOrdenDeCompra
Detalle <|-- DetallePedido
Detalle <|-- DetalleFactura
Detalle <|-- DetallePresupuesto
Presupuesto "1" *--> "1..*" DetallePresupuesto
PedidoDePresupuesto "1" --> "1" Proveedor
PedidoDePresupuesto "1" *--> "1..*" DetallePedido
PedidoDePresupuesto "1" --> "1" Presupuesto
OrdenDeCompra "1" --> "1" Proveedor
OrdenDeCompra "1" *--> "1..*" DetalleOrdenDeCompra
Remito "1" --> "1" Proveedor
Remito "1" *--> "1..*" Lote
Producto "1" <-- "1..*" Lote
OrdenDeCompra "1" --> "1" Presupuesto
ProductoNoPercedero "1" --> "1" EnvaseTipo
Cliente "1" <-- "1" Factura
Factura "1 ." *--> "1..*" DetalleFactura
DetalleFactura "1 ." --> "1" Producto
Proveedor "1" <-- "1 ." Presupuesto
Categoria "0..*" <--o "1 ." Producto
@enduml
#+end_src
#+RESULTS:
[[file:DiagramaSinRepos.jpg]]
#+begin_comment
Presupuesto "1" --> "1..*" Lote
#+end_comment
Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

+30 -11
View File
@@ -8,9 +8,9 @@ El target de nuestro sistema es una distribuidora. Este empresa basa sus operaci
Solo Buscamos controlar el stock en un solo almacen productos.
Algunas de las funciones principales del sistema consisten en:
- Registrar Ordenes de compra para los proveedores, almacenar los presupuestos que nos dan los proveedores en base a la Orden de Compra y comprobar con el remito que el producto recibido sea la misma orden que emitimos nosotros.
- Registrar Ordenes de compra para los proveedores, almacenar los presupuestos que nos dan los proveedores en base a los pedidos de presupuesto y comprobar con el remito que el producto recibido sea la misma orden que emitimos nosotros.
- Gestionar el stock de mercaderia mercante, es decir, Registrar las compras hechas para deducir de nuestro stock remanente ( Ventas ) Y aumentar el stock mediante lo que el remito (ya asegurados de que este represente lo mismo que pedimos en la Orden de compra).
- Registro de Productos en venta, sus respectivos proveedores.
- Registro de Productos en venta, y sus respectivos proveedores.
- Almacenar las ventas realizadas a clientes.
** A continuacion se expandirá sobre las funcionalidades del sistema
@@ -21,6 +21,8 @@ La dada de alta de un producto se dividirá sobre si un producto es percedero o
+ Precio
+ Y si está habilitado
NOTA: Es necesario que en el nombre del producto se incluya la marca y que és.
Además de en caso de ser percedero se requerirá la cantidad de meses los cuales es recomendable que se consuma el producto y la cantidad de meses hasta que el producto llegue a su fecha de vencimiento.
Mientras que uno *no* percedero necesita tener especificado cual es el tipo de envase que utiliza, este ya sea, Plastico; Enlatado o Cartón.
@@ -33,20 +35,37 @@ Al cargar la categoria solo se debe de ingresar, un nombre para esta.
*** Registro de Proveedores
Los proveedores se pueden cargar en el sistema, y cada proveedor nos da un presupuesto para renovar el stock de un producto.
Para cargar un Proveedor en el sistema se necesita:
+ Nombre
+ RazonSocial
*** Registro de Pedidos de presupuesto
Estos pedidos son creados para que los proveedores nos dén presupuestos de lo que nos va a Costar reponer X cantidad de productos. Por lo que cada item del Pedido debe de tener.
- Cantidad
- Nombre De Producto
Los pedidos están asociados al Proveedor al cual estamos consultando además de la fecha en la que lo estamos haciendo.
*** Registro de Presupuestos
Los presupuestos son dados por los proveedores sobre uno de los productos en venta que tenemos, para poder registrar uno este debe de estar asociado a un proveedor, mostrar el monto propuesto y la cantidad de productos ofresidos, Resumidamente se necesita cargar:
+ Proveedor
+ Monto
+ Cantidad
+ y si está Activo
Los presupuestos son creados en base a los Items qu listemos en el pedido de presupuesto. Los items del presupuesto deben coinsidir con los del pedido en cantidad, Nombre de producto. Esto para asegurarnos de que lo que nos están presupuestando es lo mismo que nosotros les pedimos.
*No* permitimos que sean modificados una vez cargados. sino que el presupuesto debe ser deshabilitado y en su lugar se debe de registrar otro más para mantener la integridad de los presupuestos cargados
Cuando recibimos un presupuesto listamos los items del mismo con los datos de:
- Cantidad de Productos.
- Informacion del producto.
- Costo de cada producto.
- y queda para nosotros marcar si aceptamos el item del presupuesto.
El resto del presupuesto guarda informacion de quien emitio el presupuesto (proveedor), cuando lo recibimos (fecha).
*** Registro Orden de Compra
Las ordenes de compra se realizan en base a cada item aprobado del presupuesto de forma individual. una vez hechas se envian al proveedor.
*** Registro Remitos
Los remitos nos dan la informacion de que mercaderia fue transladada a nuestro deposito. Este dato nos permite cargar los nuevos lotes de productos en nuestro stock.
En todos los casos los lotes traen una fecha de elaboracion, Este dato es el que usamos para calcular la fecha de caducacion y consumo preferente en caso de ser un producto percedero.
*** Registro de Clientes
Para poder Registrar una Compra por parte de un cliente vamos a necesitar que el cliente en cuestión se registre en el sistema sus siguientes datos:
@@ -74,6 +93,6 @@ Tanto el Nombre, Precio y sus posibles proveedores podrán ser modificados. En a
Cuando una Factura sea ingresada al sistema se deducirá del stock la misma cantidad de productos como los detallados en el documento de la venta.
*** Control de Stock (Compra)
Se podrá crear una orden de compra con los productos que estamos interesados en comprar a los proveedores. Estos nos enviarán Presupuestos de los cuales nosotros elejiremos a quien comprar.
Se podrá crear un pedido de presupuesto con los productos que estamos interesados en comprar a los proveedores. Estos nos enviarán Presupuestos de los cuales nosotros elejiremos a quien comprar, Una vez tomada la decision se emitirá una orden de compra hacia tal proveedor.
Una vez que la mercaderia llega a nosotros se debe de comprobar que los productos del remito coinsiden con los de la orden de compra registrada. En caso de ser así los lotes de productos son registrados y contabilizados dentro de nuestro stock.
Una vez que la mercaderia llega a nosotros se debe de comprobar que los productos del remito coinsidan con los de la orden de compra registrada. En caso de ser así los lotes de productos son registrados y contabilizados dentro de nuestro stock.
Binary file not shown.
+9
View File
@@ -0,0 +1,9 @@
namespace Entidades
{
public class Categoria
{
public int Id { get; set; }
public string Descripcion { get; set; }
}
}
+27
View File
@@ -0,0 +1,27 @@
using System.ComponentModel;
namespace Entidades
{
public class Cliente
{
public Int64 Cuit { get; set; }
public string Nombre { get; set; }
public string Apellido { get; set; }
public string Direccion { get; set; }
public string Correo { get; set; }
[Browsable(false)]
public bool Habilitado { get; set; }
public string NombreCompleto
{
get { return $"{Nombre} {Apellido}"; }
}
// Sobreescribir ToString() para mostrar el nombre completo
public override string ToString()
{
return NombreCompleto;
}
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace Entidades
{
public class Detalle <T> where T:Producto
{
public int Id { get; set; }
public int Cantidad { get; set; }
public T Producto { get; set; }
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace Entidades
{
public class DetalleFactura: Detalle<Producto>
{
public int IdFactura { get; set; }
public double PrecioUnitario { get; set; }
public double Subtotal { get; set; }
}
}
+8
View File
@@ -0,0 +1,8 @@
namespace Entidades
{
public class DetalleOrdenDeCompra: Detalle<Producto>
{
public int IdOrdenDeCompra { get; set; }
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace Entidades
{
public class DetallePedido : Detalle<Producto>
{
public int IdPedido { get; set; }
public int CantidadPedido { get; set; }
public List<Producto> Productos { get; set; } = new List<Producto>();
}
}
+9
View File
@@ -0,0 +1,9 @@
namespace Entidades
{
public class DetallePresupuesto: Detalle<Producto>
{
public int IdPresupuesto { get; set; }
public double CostoUnitario { get; set; }
}
}
+9
View File
@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
+10
View File
@@ -0,0 +1,10 @@
namespace Entidades
{
public enum EnvaseTipo
{
Plastico,
Enlatado,
Carton
}
}
+30
View File
@@ -0,0 +1,30 @@
using System.Collections.ObjectModel;
namespace Entidades
{
public class Factura
{
public int Id { get; set; }
public double Total { get; set; }
public DateTime Fecha { get; set; }
public Cliente Cliente { get; set; }
private List<DetalleFactura> detalles = new List<DetalleFactura>();
public void AñadirDetalle(DetalleFactura detalle)
{
detalles.Add(detalle);
}
public bool EliminarDetalle(DetalleFactura detalle)
{
var aeliminar = detalles.Find(x => x.Id == detalle.Id);
if (aeliminar == null) return false;
return detalles.Remove(aeliminar);
}
public ReadOnlyCollection<DetalleFactura> MostrarDetalles()
{
return detalles.AsReadOnly();
}
}
}
+28
View File
@@ -0,0 +1,28 @@
namespace Entidades
{
public class Lote
{
public int Id { get; set; }
public DateTime Fecha { get; set; }
public Producto Producto { get; set; }
public long CantidadDeProductos { get; set; }
public bool Habilitado { get; set; }
public string NombreProducto
{
get { return Producto?.Nombre ?? string.Empty; }
}
<<<<<<< HEAD
public double PrecioUnitario
{
get { return Producto?.Precio ?? 0; }
}
public double Subtotal
{
get { return PrecioUnitario * CantidadDeProductos; }
}
=======
>>>>>>> 5b78d74e54350285696596720e82f5fbd99b4d02
}
}
+28
View File
@@ -0,0 +1,28 @@
using System.Collections.ObjectModel;
namespace Entidades
{
public class OrdenDeCompra
{
public int Id { get; set; }
private List<DetalleOrdenDeCompra> detalles = new List<DetalleOrdenDeCompra>();
public Proveedor Proveedor { get; set; }
public void AñadirDetalle(DetalleOrdenDeCompra detalle)
{
detalles.Add(detalle);
}
public bool EliminarDetalle(DetalleOrdenDeCompra detalle)
{
var aeliminar = detalles.Find(x => x.Id == detalle.Id);
if (aeliminar == null) return false;
return detalles.Remove(aeliminar);
}
public ReadOnlyCollection<DetalleOrdenDeCompra> MostrarDetalles()
{
return detalles.AsReadOnly();
}
}
}
+29
View File
@@ -0,0 +1,29 @@
using System.Collections.ObjectModel;
namespace Entidades
{
public class PedidoDePresupuesto
{
public int Id { get; set; }
public DateTime Fecha { get; set; }
private List<DetallePedido> detallesPedidos = new List<DetallePedido>();
public Proveedor Proveedor { get; set; }
public void AñadirDetalle(DetallePedido detalle)
{
detallesPedidos.Add(detalle);
}
public bool EliminarDetalle(DetallePedido detalle)
{
var aeliminar = detallesPedidos.Find(x => x.Id == detalle.Id);
if (aeliminar == null) return false;
return detallesPedidos.Remove(aeliminar);
}
public ReadOnlyCollection<DetallePedido> MostrarDetalles()
{
return detallesPedidos.AsReadOnly();
}
}
}
+29
View File
@@ -0,0 +1,29 @@
using System.Collections.ObjectModel;
namespace Entidades
{
public class Presupuesto
{
public int Id { get; set; }
public DateTime Fecha { get; set; }
public bool Habilitado { get; set; }
public bool Aceptado { get; set; }
public Proveedor Proveedor { get; set; }
private List<DetallePresupuesto> detalles = new List<DetallePresupuesto>();
public void AñadirDetalle(DetallePresupuesto det) {
detalles.Add(det);
}
public bool EliminarDetalle(DetallePresupuesto det) {
var dAEliminar = detalles.FirstOrDefault(x => x.Id == det.Id);
if (dAEliminar == null) return false;
return detalles.Remove(dAEliminar);
}
public ReadOnlyCollection<DetallePresupuesto> MostrarDetalles()
{
return detalles.AsReadOnly();
}
}
}
+28
View File
@@ -0,0 +1,28 @@
using System.Collections.ObjectModel;
namespace Entidades
{
public class Producto
{
public int Id { get; set; }
public string Nombre { get; set; }
public double Precio { get; set; }
public bool Habilitado { get; set; }
public Categoria Categoria { get; set; }
private List<Categoria> categorias = new List<Categoria>();
public void AñadirCategoria(Categoria cat) {
categorias.Add(cat);
}
public bool EliminarCategoria(Categoria cat) {
var cAEliminar = categorias.FirstOrDefault(x => x.Id == cat.Id);
if (cAEliminar == null) return false;
return categorias.Remove(cAEliminar);
}
public ReadOnlyCollection<Categoria> MostrarCategorias(){
return categorias.AsReadOnly();
}
}
}
+13
View File
@@ -0,0 +1,13 @@
namespace Entidades
{
public class Proveedor
{
public Int64 Cuit { get; set; }
public string Nombre { get; set; }
public string RazonSocial { get; set; }
public string Direccion { get; set; }
public bool Habilitado { get; set; }
}
}
+27
View File
@@ -0,0 +1,27 @@
using System.Collections.ObjectModel;
namespace Entidades
{
public class Remito
{
public int Id { get; set; }
private List<Lote> lotesDeProductosEntregados = new List<Lote>();
public Proveedor Proveedor { get; set; }
public ReadOnlyCollection<Lote> MostrarLotes()
{
return lotesDeProductosEntregados.AsReadOnly();
}
public void AñadirLote(Lote lote)
{
try
{
lotesDeProductosEntregados.Add(lote);
}
catch (Exception)
{
throw;
}
}
}
}
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Entidades")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("Entidades")]
[assembly: System.Reflection.AssemblyTitleAttribute("Entidades")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
1589bc3738d4d92e8df1687e356ae3d2c87cb333
@@ -0,0 +1,11 @@
is_global = true
build_property.TargetFramework = net6.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Entidades
build_property.ProjectDir = C:\Users\fedpo\Downloads\final actual\final actual\Entidades\
@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
@@ -0,0 +1,64 @@
{
"format": 1,
"restore": {
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj": {}
},
"projects": {
"C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj",
"projectName": "Entidades",
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj",
"packagesPath": "C:\\Users\\fedpo\\.nuget\\packages\\",
"outputPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\fedpo\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {},
"https://fedesrv.ddns.net/git/api/packages/fede/nuget/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.306\\RuntimeIdentifierGraph.json"
}
}
}
}
}
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\fedpo\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.6.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\fedpo\.nuget\packages\" />
</ItemGroup>
</Project>
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Este código fue generado por una herramienta.
// Versión de runtime:4.0.30319.42000
//
// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
// se vuelve a generar el código.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Entidades")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+abfd18e86f40a98925507ec03c2e8832ee47a3eb")]
[assembly: System.Reflection.AssemblyProductAttribute("Entidades")]
[assembly: System.Reflection.AssemblyTitleAttribute("Entidades")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generado por la clase WriteCodeFragment de MSBuild.
@@ -0,0 +1 @@
0f23a71dabcab7104ee2511db3de6cc1ef434f03702a8d033e7694541758b7dd
@@ -0,0 +1,13 @@
is_global = true
build_property.TargetFramework = net6.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Entidades
build_property.ProjectDir = C:\Users\Nacho\source\repos\Final\Entidades\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
Binary file not shown.
+69
View File
@@ -0,0 +1,69 @@
{
"version": 3,
"targets": {
"net6.0": {}
},
"libraries": {},
"projectFileDependencyGroups": {
"net6.0": []
},
"packageFolders": {
"C:\\Users\\fedpo\\.nuget\\packages\\": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj",
"projectName": "Entidades",
"projectPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj",
"packagesPath": "C:\\Users\\fedpo\\.nuget\\packages\\",
"outputPath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\fedpo\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {},
"https://fedesrv.ddns.net/git/api/packages/fede/nuget/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.306\\RuntimeIdentifierGraph.json"
}
}
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"version": 2,
"dgSpecHash": "xYCKCMKm+oXscuoQamJhNB9nRxekBQBuz6IDgUB/8WpDnH3Ts7NVTClR8NJpQF10id2fDRpsOygcKaFzlcHs+w==",
"success": true,
"projectFilePath": "C:\\Users\\fedpo\\Downloads\\final actual\\final actual\\Entidades\\Entidades.csproj",
"expectedPackageFiles": [],
"logs": []
}
+59
View File
@@ -0,0 +1,59 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.6.33829.357
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controladora", "Controladora\Controladora.csproj", "{7168B549-F229-4D49-8C53-AF1CEB9BBB6B}"
ProjectSection(ProjectDependencies) = postProject
{6C83A4AB-C70D-4D4E-A879-5E960C4A103A} = {6C83A4AB-C70D-4D4E-A879-5E960C4A103A}
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Entidades", "Entidades\Entidades.csproj", "{78A331E5-86D4-427E-AA45-5879F9E5E98B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Modelo", "Modelo\Modelo.csproj", "{9A0960D9-C909-4B68-8BBB-8C44B9CD0E97}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Vista", "Vista\Vista.csproj", "{8C9E8090-5D8F-42AE-9813-C68D384C6863}"
ProjectSection(ProjectDependencies) = postProject
{6C83A4AB-C70D-4D4E-A879-5E960C4A103A} = {6C83A4AB-C70D-4D4E-A879-5E960C4A103A}
{7168B549-F229-4D49-8C53-AF1CEB9BBB6B} = {7168B549-F229-4D49-8C53-AF1CEB9BBB6B}
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Informes", "Informes\Informes.csproj", "{6C83A4AB-C70D-4D4E-A879-5E960C4A103A}"
ProjectSection(ProjectDependencies) = postProject
{78A331E5-86D4-427E-AA45-5879F9E5E98B} = {78A331E5-86D4-427E-AA45-5879F9E5E98B}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7168B549-F229-4D49-8C53-AF1CEB9BBB6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7168B549-F229-4D49-8C53-AF1CEB9BBB6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7168B549-F229-4D49-8C53-AF1CEB9BBB6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7168B549-F229-4D49-8C53-AF1CEB9BBB6B}.Release|Any CPU.Build.0 = Release|Any CPU
{78A331E5-86D4-427E-AA45-5879F9E5E98B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78A331E5-86D4-427E-AA45-5879F9E5E98B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78A331E5-86D4-427E-AA45-5879F9E5E98B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78A331E5-86D4-427E-AA45-5879F9E5E98B}.Release|Any CPU.Build.0 = Release|Any CPU
{9A0960D9-C909-4B68-8BBB-8C44B9CD0E97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9A0960D9-C909-4B68-8BBB-8C44B9CD0E97}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9A0960D9-C909-4B68-8BBB-8C44B9CD0E97}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9A0960D9-C909-4B68-8BBB-8C44B9CD0E97}.Release|Any CPU.Build.0 = Release|Any CPU
{8C9E8090-5D8F-42AE-9813-C68D384C6863}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8C9E8090-5D8F-42AE-9813-C68D384C6863}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8C9E8090-5D8F-42AE-9813-C68D384C6863}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C9E8090-5D8F-42AE-9813-C68D384C6863}.Release|Any CPU.Build.0 = Release|Any CPU
{6C83A4AB-C70D-4D4E-A879-5E960C4A103A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C83A4AB-C70D-4D4E-A879-5E960C4A103A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C83A4AB-C70D-4D4E-A879-5E960C4A103A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6C83A4AB-C70D-4D4E-A879-5E960C4A103A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A6104B66-4B77-4D4F-BBA3-586DC55A9406}
EndGlobalSection
EndGlobal
+10
View File
@@ -0,0 +1,10 @@
namespace Informes
{
public class ConfigEmail
{
public string EmailAddr { get; set; }
public string EmailPass { get; set; }
public List<string> EmailTarget { get; set; }
}
}
+133
View File
@@ -0,0 +1,133 @@
using System.Diagnostics;
using System.Net.Mail;
using System.Net;
using System.Text.Json;
using Entidades;
namespace Informes
{
public class InformeEmail
{
/// <summary>
/// Envia Informes por Email
/// </summary>
private static InformeEmail instance = new();
public static InformeEmail Instance
{
get { return instance; }
}
public string EnviarEmailFactura(string titulo, List<DetalleFactura> desc)
{
string? ret = null;
string json;
ConfigEmail config;
try
{ // leemos el archivo de configuracion para obtener los certificados y mails destino de los informes
json = File.ReadAllText("settings.json");
config = JsonSerializer.Deserialize<ConfigEmail>(json);
}
catch (IOException)
{
ret = "No se pudo leer el archivo \"settings.json\"";
throw;
}
foreach (var i in config.EmailTarget)
{
if (String.IsNullOrWhiteSpace(i)) return "Hay Emails mal cargados";
}
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials = new NetworkCredential(config.EmailAddr, config.EmailPass);
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.EnableSsl = true;
MailMessage mail = new MailMessage();
mail.Subject = titulo;
mail.IsBodyHtml = true;
mail.Body = GenerarTabla(desc);
mail.Sender = new MailAddress(config.EmailAddr);
foreach (var i in config.EmailTarget) mail.To.Add(i);
mail.From = new MailAddress(config.EmailAddr);
try
{
#if DEBUG
Console.WriteLine($"From: {config.EmailAddr}, Title: {titulo}");
#endif
smtp.Send(mail);
mail.Dispose();
}
catch (Exception)
{
ret = "No se pudo comunicar con el server SMTP";
throw;
}
//Decimos que se envio el email correctamente si el valor del retorno sigue siendo nulo en otro caso tendra la descripcion del error.
return (ret == null) ?
"Se envio el Email Correctamente":
ret;
//
}
private string GenerarTabla(List<DetalleFactura> desc)
{
// Esta seccion es el armado del mail html
string body =
@"
<style>
table, td, th {
border: 1px solid black;
}
</style>
<table>
<tr>
<th>Producto</td>
<th>Cantidad</td>
<th>Precio CU</td>
<th>Subtotal</td>
</tr>";
foreach (var i in desc)
{
body +=
@$"
<tr>
<td>{i.Producto.Nombre}</td>
<td>{i.Cantidad}</td>
<td>{i.Producto.Precio}</td>
<td>{i.Producto.Precio * i.Cantidad}</td>
</tr>";
}
body +=
@$"
<tr>
<td>Total</td>
<td></td>
<td></td>
<td>{CalcularTotal(desc)}</td>
</tr>
</table>
";
return body;
}
private double CalcularTotal(List<DetalleFactura> desc)
{
double total = 0;
foreach (var i in desc)
{
total += i.Producto.Precio * i.Cantidad;
}
return total;
}
}
}

Some files were not shown because too many files have changed in this diff Show More