Exemple #1
0
        public void Add(VentaRequest model)
        {
            var transaction = _dbContext.Database.BeginTransaction();

            try
            {
                var venta = new Venta();
                venta.Total     = model.Conceptos.Sum(d => d.Cantidad * d.PrecioUnitario);
                venta.Fecha     = DateTime.Now;
                venta.IdCliente = model.IdCliente;

                _dbContext.Venta.Add(venta);
                _dbContext.SaveChanges();

                foreach (var modelconcepto in model.Conceptos)
                {
                    var concepto = new Models.Concepto();
                    concepto.Cantidad       = modelconcepto.Cantidad;
                    concepto.IdProducto     = modelconcepto.IdProducto;
                    concepto.PrecioUnitario = modelconcepto.PrecioUnitario;
                    concepto.Importe        = modelconcepto.Importe;
                    concepto.IdVenta        = venta.Id;
                    _dbContext.Conceptos.Add(concepto);
                    _dbContext.SaveChanges();
                }

                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                throw new Exception("Ocurrió un error en la inserción", ex);
            }
        }
Exemple #2
0
        public VentaResponse Add(VentaRequest request)
        {
            Vendedor vendedor = _unitOfWork.VendedorRepository.FindFirstOrDefault(x => x.Persona.Documento.Numero == request.DocumentoVendedor);

            if (vendedor == null)
            {
                return(new VentaResponse($"Vendedor con documento {request.DocumentoVendedor} no encontrado"));
            }
            if (ExisteFactura(request.NumeroFactura))
            {
                return(new VentaResponse($"La factura {request.NumeroFactura} ya está registrada"));
            }

            VentaBuilder ventaBuilder = new VentaBuilder(request.NumeroFactura);

            foreach (var item in request.Detalles)
            {
                ProductoBodega producto = _productoService.ProductoEnBodega(item.CodigoProducto, item.CodigoBodega);
                if (producto == null)
                {
                    return(new VentaResponse($"Producto {item.CodigoProducto} no está disponible en bodega {item.CodigoBodega}"));
                }
                if (_productoService.Disponible(item.CodigoProducto, item.CodigoBodega, item.Cantidad) == false)
                {
                    return(new VentaResponse
                           (
                               mensaje: $"El producto {item.CodigoProducto} no está disponible para esa cantidad."
                           ));
                }
                ventaBuilder = ventaBuilder.AgregarDetalle(producto, item.Cantidad, item.Precio, item.Descuento);
            }

            if (ventaBuilder.IsOk().Any())
            {
                return(new VentaResponse(string.Join(',', ventaBuilder.IsOk())));
            }

            Venta venta = ventaBuilder.Build(request.Abonado, request.Impuesto);

            vendedor.Vender(venta);

            _unitOfWork.VendedorRepository.Edit(vendedor);

            if (_unitOfWork.Commit() > 0)
            {
                return(new VentaResponse
                       (
                           mensaje: "Venta registrada correctamente",
                           entidad: venta
                       ));
            }

            return(new VentaResponse("No se pudo registrar la venta"));
        }
Exemple #3
0
        public IActionResult Add(VentaRequest model)
        {
            Respuesta respuesta = new Respuesta();

            try
            {
                _venta.Add(model);
                respuesta.Exito = 1;
            }
            catch (Exception ex)
            {
                respuesta.Mensaje = ex.Message;
            }
            return(Ok(respuesta));
        }
Exemple #4
0
        public async Task <ActionResult> InsertarVenta([FromBody] VentaRequest vr)
        {
            var response = new ResponseBase();

            try
            {
                response = await this.ventas.InsertarVenta(vr);
            }
            catch (Exception ex)
            {
                response.success = false;
                response.message = ex.Message;
            }
            return(Ok(response));
        }
Exemple #5
0
        public IActionResult Add(VentaRequest model)
        {
            Respuesta respuesta = new Respuesta();

            try
            {
                using (VentaRealContext db = new VentaRealContext())
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        try
                        {
                            var venta = new Venta();
                            venta.Total     = model.Conceptos.Sum(d => d.Cantidad * d.PrecioUnitario);
                            venta.Fecha     = DateTime.Now;
                            venta.IdCliente = model.idCliente;
                            db.Venta.Add(venta);
                            db.SaveChanges();

                            foreach (var modelConcepto in model.Conceptos)
                            {
                                var concepto = new Models.Concepto();
                                concepto.Cantidad       = modelConcepto.Cantidad;
                                concepto.IdProducto     = modelConcepto.IdProducto;
                                concepto.PrecioUnitario = modelConcepto.PrecioUnitario;
                                concepto.Importe        = modelConcepto.Importe;
                                concepto.IdVenta        = venta.Id;
                                db.Concepto.Add(concepto);
                                db.SaveChanges();
                            }
                            transaction.Commit();
                            respuesta.Exito = 1;
                        }

                        catch (Exception)
                        {
                            transaction.Rollback();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                respuesta.Mensaje = ex.Message;
            }

            return(Ok(respuesta));
        }
        public IActionResult Add(VentaRequest model)
        {
            var respuesta = new Respuesta();

            try
            {
                _venta.Add(model);
                respuesta.Success = 1;
                respuesta.Message = "Venta agregada correctamente.";
            }
            catch (Exception ex)
            {
                respuesta.Success = 0;
                respuesta.Message = ex.Message;
            }
            return(Ok(respuesta));
        }
        public IActionResult Add(VentaRequest requestModel)
        {
            Respuesta respuesta = new Respuesta();

            try
            {
                //var venta = new VentaService();
                _ventaService.Add(requestModel);
                respuesta.Exito = 1;
            }
            catch (Exception ex)
            {
                respuesta.Mensaje = ex.Message;
                return(BadRequest(respuesta));
            }

            return(Ok(respuesta));
        }
Exemple #8
0
        public void Add(VentaRequest model)
        {
            using (var db = new VentasContext())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var venta = new Ventum()
                        {
                            Fecha     = DateTime.UtcNow,
                            IdCliente = model.IdCliente,
                            Total     = model.Detalle.Any() ? model.Detalle.Sum(c => c.Cantidad * c.PrecioUnitario) : 0
                        };

                        var detalle = model.Detalle.Select(c => new DBModels.Detalle()
                        {
                            IdProducto     = c.IdProducto,
                            Cantidad       = c.Cantidad,
                            PrecioUnitario = c.PrecioUnitario,
                            Importe        = c.Cantidad * c.PrecioUnitario
                        });

                        venta.Detalles = detalle.ToList();

                        db.Venta.Add(venta);

                        db.SaveChanges();

                        transaction.Commit();
                        //respuesta.Success = 1;
                        //respuesta.Message = "Venta agregada correctamente.";
                    }
                    catch (Exception ex)
                    {
                        //respuesta.Success = 0;
                        //respuesta.Message = ex.Message;
                        transaction.Rollback();
                        throw new Exception("Ocurrió un error en la inserción. " + ex.Message);
                    }
                }
            }
        }
Exemple #9
0
        public void Add(VentaRequest model)
        {
            using (VentaRealContext db = new VentaRealContext())
            {
                //primero se guarda los elementos de la tabla padre

                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var venta = new Venta();
                        venta.Total     = model.Conceptos.Sum(s => s.Cantidad * s.Importe);
                        venta.Fecha     = DateTime.Now;
                        venta.IdCliente = model.IdCliente;
                        db.Venta.Add(venta);
                        db.SaveChanges();

                        //recorrido de todos los conectos uno or uno , guardado del detalle de la venta
                        foreach (var modelConcepto in model.Conceptos)
                        {
                            var concepto = new Models.Concepto();
                            concepto.Cantidad       = modelConcepto.Cantidad;
                            concepto.IdProducto     = modelConcepto.IdProducto;
                            concepto.PrecioUnitario = modelConcepto.PrecioUnitario;
                            concepto.IdVenta        = venta.Id;
                            concepto.Importe        = modelConcepto.Importe;
                            db.Concepto.Add(concepto);
                            db.SaveChanges();
                        }
                        transaction.Commit();     // si no se pone se va a bloquear la base de datos
                    }
                    catch
                    {
                        transaction.Rollback();
                        throw new Exception("ocurrio un error en la inserción");
                    }
                }
            }
        }
Exemple #10
0
        public void Add(VentaRequest model)
        {
            using (VentaRealContext db = new VentaRealContext())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var venta = new Venta();
                        venta.Total     = model.Conceptos.Sum(d => d.Cantidad * d.PrecioUnitario);
                        venta.Fecha     = DateTime.Now;
                        venta.IdCliente = model.IdCliente;
                        db.Venta.Add(venta);
                        db.SaveChanges();

                        foreach (var modelConcepto in model.Conceptos)
                        {
                            var concepto = new Models.Concepto();
                            concepto.Cantidad       = modelConcepto.Cantidad;
                            concepto.IdProducto     = modelConcepto.IdProducto;
                            concepto.PrecioUnitario = modelConcepto.PrecioUnitario;
                            concepto.IdVenta        = venta.Id;
                            db.Concepto.Add(concepto);
                            db.SaveChanges();
                        }

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw new Exception("Ocurrio un error en la inserción de datos. " + ex.Message);
                    }
                }
            }
        }
Exemple #11
0
        public void Add(VentaRequest requestModel)
        {
            using (VentaRealContext db = new VentaRealContext())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var venta = new Venta();
                        venta.Total     = requestModel.Conceptos.Sum(x => x.Cantidad * x.PrecioUnitario);
                        venta.Fecha     = DateTime.Now;
                        venta.IdCliente = requestModel.IdCliente;
                        db.Venta.Add(venta);
                        db.SaveChanges();

                        foreach (var modelConcepto in requestModel.Conceptos)
                        {
                            var concepto = new Concepto();
                            concepto.Cantidad       = modelConcepto.Cantidad;
                            concepto.IdProducto     = modelConcepto.IdProducto;
                            concepto.PrecioUnitario = modelConcepto.PrecioUnitario;
                            concepto.IdVenta        = venta.Id;
                            concepto.Importe        = modelConcepto.Importe;
                            db.Concepto.Add(concepto);
                            db.SaveChanges();
                        }
                        transaction.Commit();
                    }
                    catch (Exception e)
                    {
                        transaction.Rollback();
                        throw new Exception("Error en el proceso de insercion de la venta", e);
                    }
                }
            }
        }
        public async Task <ResponseBase> InsertarVenta(VentaRequest vr)
        {
            var           response        = new ResponseBase();
            List <string> insertVenta     = new List <string>();
            StringBuilder insercmd        = new StringBuilder();
            var           encabezado      = "DECLARE @idTicket INT; BEGIN TRANSACTION venta BEGIN TRY ";
            var           variable        = " SET @idTicket = SCOPE_IDENTITY(); ";
            var           encabezadoVenta = " INSERT INTO Reporte.venta(idTicket, idProducto, cantidad, total) VALUES ";
            var           pie             = " COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION venta RAISERROR('ERROR', 16, 1) END CATCH";

            try
            {
                var insertTicket = " INSERT INTO Reporte.ticket(fecha, hora, total, descripcion, comentario,idEstatus, idUsuario, idEmpresa) VALUES"
                                   + string.Format("( convert(date,'{0}',105), convert(time,'{1}',105) , '{2}', '{3}', '{4}', '{5}', '{6}' , '{7}' ) ",
                                                   vr.ticket.fecha
                                                   , vr.ticket.hora
                                                   , vr.ticket.total
                                                   , vr.ticket.descripcion
                                                   , vr.ticket.comentario
                                                   , vr.ticket.idEstatus
                                                   , vr.ticket.idUsuario
                                                   , vr.ticket.idEmpresa);
                foreach (Venta venta in vr.productos)
                {
                    insertVenta.Add(string.Format(" ( {0} ,'{1}' ,'{2}' ,'{3}' )",
                                                  "@idTicket"
                                                  , venta.idProducto
                                                  , venta.cantidad
                                                  , venta.total));
                }

                insercmd.Append(encabezado);
                insercmd.Append(insertTicket);
                insercmd.Append(variable);
                insercmd.Append(encabezadoVenta);
                insercmd.Append(string.Join(",", insertVenta));
                insercmd.Append(pie);

                using (var connection = new SqlConnection(con.getConnection()))
                {
                    using (var command = new SqlCommand(insercmd.ToString(), connection))
                    {
                        command.CommandType = CommandType.Text;
                        connection.Open();
                        var result = await command.ExecuteNonQueryAsync();

                        if (result > 1)
                        {
                            response.success = true;
                            response.message = "Venta Ingresada Correctamente";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                response.success = false;
                response.message = ex.Message;
            }
            return(response);
        }
Exemple #13
0
        public ActionResult <VentaResponse> Nueva(VentaRequest request)
        {
            var response = _service.Add(request);

            return(response);
        }
Exemple #14
0
        public ActionResult add(VentaRequest request)
        {
            try
            {
                using (var transaccion = _context.Database.BeginTransaction())
                {
                    try
                    {
                        var venta = new Venta();
                        venta.Total    = request.detalleRequests.Sum(item => item.Cantidad * item.PrecioUnitario);
                        venta.Fecha    = DateTime.Now;
                        venta.IdEstado = request.IdEstado;


                        foreach (var ventadetalle in request.detalleRequests)
                        {
                            var producto = _context.Producto.FindAsync(ventadetalle.IdProducto);

                            if (producto.Result.IdProducto > 0)
                            {
                                var detalle = new Modelo.DetalleVenta();
                                detalle.Cantidad       = ventadetalle.Cantidad;
                                detalle.IdProducto     = ventadetalle.IdProducto;
                                detalle.CostoUnitario  = producto.Result.Costo;
                                detalle.PrecioUnitario = ventadetalle.PrecioUnitario;
                                detalle.IdVenta        = ventadetalle.IdVenta;



                                Modelo.Producto product = new Modelo.Producto
                                {
                                    Existencia = producto.Result.Existencia - ventadetalle.Cantidad,
                                };

                                // actualizarProducto(producto.Result.IdProducto, product);

                                _context.DetalleVenta.Add(detalle);
                                _context.SaveChanges();

                                // venta.Total = detalle.Cantidad * detalle.PrecioUnitario;
                            }
                        }


                        _context.Venta.Add(venta);
                        _context.SaveChanges();
                        transaccion.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaccion.Rollback();
                    }
                }
            }
            catch (Exception ex)
            {
                return(null);
            }

            return(Ok());
        }