public Response Crear(TerceroProveedorRequest request) { TerceroProveedor provedor = this._unitOfWork.TerceroProvedorRepository. FindBy(provedor => provedor.Tercero.Nit == request.NitTercero, includeProperties: "Tercero").FirstOrDefault(); if (provedor != null) { return(new Response { Mensaje = $"No se pudo registrar el proveedor porque ya está en el sistema" }); } Tercero tercero = this._unitOfWork.TerceroRepository. FindFirstOrDefault(tercero => tercero.Nit == request.NitTercero); if (tercero == null) { tercero = request.Tercero.UnMap(); } provedor = new TerceroProveedor(tercero); this._unitOfWork.TerceroProvedorRepository.Add(provedor); this._unitOfWork.Commit(); return(new Response { Mensaje = "Proveedor registrado con éxito", Data = new TerceroProveedorRequest().Map(provedor) }); }
public Response HacerCompraService(CompraRequest request) { TerceroProveedor proveedor = this._unitOfWork.TerceroProvedorRepository. FindBy(provedor => provedor.Tercero.Nit == request.NitProveedor, includeProperties: "Tercero").FirstOrDefault(); if (proveedor == null) { return(new Response { Mensaje = $"El provedor con identificación {request.NitProveedor}" + $" no fue encontrado en el sistema, agréguelo antes" }); } TerceroUsuario usuario = this._unitOfWork.TerceroUsuarioRepository. FindFirstOrDefault(usuario => usuario.Id == request.UsuarioId); if (usuario == null) { return(new Response { Mensaje = $"El usuario con id {request.UsuarioId}" + $" no fue encontrado en el sistema, agréguelo antes" }); } var errores = PuedeRegistrarDetalles(request.Detalles); if (errores.Any()) { return(new Response { Mensaje = string.Join(", ", errores) }); } Compra compra = new Compra.CompraBuilder(proveedor, usuario).Build(); request.Detalles.ForEach((detalle) => { Producto producto = this._unitOfWork.ProductoRepository. FindBy(producto => producto.Id == detalle.ProductoId, includeProperties: "DetallesCompra.Compra").FirstOrDefault(); CompraDetalle compraDetalle = new CompraDetalle.CompraDetalleBuilder(producto, compra). SetCantidad(detalle.Cantidad).SetCostoUnitario(detalle.Valor).Build(); compra.AddDetalle(compraDetalle); producto.AddCompraDetalle(compraDetalle); }); this._unitOfWork.CompraRepository.Add(compra); this._unitOfWork.TransaccionRepository.Add(new Transaccion(TipoDeTransaccion.Egreso, Concepto.CompraDeMateriasPrimas, compra.Total)); this._unitOfWork.Commit(); return(new Response { Mensaje = "Compra registrada con éxito", Data = new CompraRequest().Map(compra) }); }
internal TerceroProveedorRequest Map(TerceroProveedor provedor) { this.Id = provedor.Id; this.FechaCreacion = provedor.FechaCreacion; this.NitTercero = provedor.Tercero.Nit; this.Tercero = new TerceroRequest().Map(provedor.Tercero); return(this); }
public void SetUp() { azucar = new ProductoMateriaPrima().SetNombre("azúcar").SetCantidad(15). SetCostoUnitario(1700).SetUnidadDeMedida(UnidadDeMedida.Kilos); leche = new ProductoMateriaPrima().SetNombre("leche").SetCantidad(45). SetCostoUnitario(1500).SetUnidadDeMedida(UnidadDeMedida.Litros); terceroDuvan = new Tercero.TerceroBuilder("1065840833", "Duvan").Build(); terceroMartin = new Tercero.TerceroBuilder("1010103118", "Martin").Build(); usuarioDuvan = new TerceroUsuario(terceroDuvan); provedorMartin = new TerceroProveedor(terceroMartin); }
public CompraBuilder(TerceroProveedor provedor, TerceroUsuario usuario) { this.Proveedor = provedor; this.Usuario = usuario; }