コード例 #1
0
ファイル: PedidosController.cs プロジェクト: NeiGit/DG3
        //REFACTORIZAR PORQUE NO TIENE EN CUENTA EL EXISTENTE PARA CHEQUEAR STOCK
        public ActionResult AgregarPreDetalle(DetalleViewModel detalleAgregado)
        {
            //Completamos la información del detalle para insertarlo en la tabla de la view (nombre y precio unitario del producto)
            detalleAgregado = completarDetalle(detalleAgregado);

            //Buscamos el producto, y chequeamos stock
            Producto producto = db.Producto.Find(detalleAgregado.SelectedProductoId);

            if (hayStock(producto, detalleAgregado.cantidad))
            {
                //Primero chequeamos si ya hay un detalle con el mismo producto
                List <DetalleViewModel> detalles = getDetallesListFromSession();
                DetalleViewModel        detalleConElMismoProducto = detalles.Where(d => d.SelectedProductoId == detalleAgregado.SelectedProductoId).FirstOrDefault();
                if (detalleConElMismoProducto != null)
                {
                    detalleConElMismoProducto.cantidad    += detalleAgregado.cantidad;
                    detalleConElMismoProducto.totalDetalle = producto.precio * detalleConElMismoProducto.cantidad;
                }
                else //no existe un detalle con el mismo producto
                {
                    //calculamos el total y lo insertamos en la tabla
                    detalleAgregado.totalDetalle = producto.precio * detalleAgregado.cantidad;
                    detalles.Add(detalleAgregado);
                }
                Session["detalles"] = detalles;
            }
            else   //no hay stock
            {
                ModelState.AddModelError("Error", "No hay stock suficiente");
            }
            ViewBag.detalles = getDetallesListFromSession();
            configurarDropDownMenu();

            return(View("NuevoPedido"));
        }
コード例 #2
0
        public async Task <ActionResult> DevolverPorCodigo(string numero)
        {
            try
            {
                var fac = await facturaServices.DevolverPorNumero(numero);

                FacturaViewModel factura = new FacturaViewModel();
                factura.NumeroFactura = fac.Codigo;
                factura.CodCliente    = fac.Cliente.Codigo;

                var resultcli = await clienteServices.DevolverPorCodigo(fac.Cliente.Codigo);

                ClienteViewModel cliente = new ClienteViewModel();
                cliente.Codigo         = resultcli.Codigo;
                cliente.Identificacion = resultcli.Identificacion;
                cliente.Tipo_Documento = resultcli.Tipo_Identificacion.Abreviatura;
                cliente.NombreCompleto = resultcli.NombreCompleto;
                cliente.Direccion      = resultcli.Direccion;
                cliente.Telefono       = resultcli.Telefono;
                cliente.FechaNac       = resultcli.FechaNac.ToString("dd/MM/yyyy");
                cliente.Correo         = resultcli.Correo;
                factura.Cliente        = cliente;

                factura.Fecha          = fac.Fecha.ToString("dd/MM/yyyy");
                factura.SubTotal       = fac.SubTotal;
                factura.TotalDescuento = fac.Descuento;
                factura.TotalIva       = fac.Iva;
                factura.TotalGeneral   = fac.Total;

                List <DetalleViewModel> listaDetalle = new List <DetalleViewModel>();

                foreach (var item in fac.Detalle)
                {
                    DetalleViewModel detalle = new DetalleViewModel();
                    detalle.NumeroFactura  = fac.Codigo;
                    detalle.CodigoProducto = item.Producto.Codigo;

                    ProductoViewModel Producto = new ProductoViewModel();
                    Producto.CodigoProducto = item.Producto.Codigo;
                    Producto.NombreProducto = item.Producto.Nombre;
                    Producto.Descripcion    = item.Producto.Descripcion;
                    Producto.Precio         = item.Lista_Precio.Precio;
                    detalle.Producto        = Producto;

                    detalle.Cantidad            = item.Cantidad;
                    detalle.Precio              = item.Lista_Precio.Precio;
                    detalle.PorcentajeDescuento = item.Descuento;
                    detalle.PorcentajeIva       = item.Iva;
                    listaDetalle.Add(detalle);
                }

                factura.Detalle = listaDetalle;
                return(Ok(factura));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
コード例 #3
0
ファイル: PedidosController.cs プロジェクト: NeiGit/DG3
        private Detalle createDetalleFromModel(DetalleViewModel detalleViewModel)
        {
            Detalle detalle = new Detalle();

            detalle.codProd  = detalleViewModel.SelectedProductoId;
            detalle.cantidad = detalleViewModel.cantidad;
            return(detalle);
        }
コード例 #4
0
ファイル: PedidosController.cs プロジェクト: NeiGit/DG3
        private DetalleViewModel completarDetalle(DetalleViewModel detalle)
        {
            Producto producto = db.Producto.Where(p => p.codigo == detalle.SelectedProductoId).FirstOrDefault();

            detalle.productoNombre = producto.nombre;
            detalle.precioUnitario = producto.precio;
            return(detalle);
        }
コード例 #5
0
        public async Task <int> Add(DetalleViewModel detalle, Venta venta, Trabajador trabajador, List <Producto> productos)
        {
            NpgsqlParameter param1 = new("@p0", detalle.IdProducto);
            NpgsqlParameter param2 = new("@p1", venta.IdVenta);
            NpgsqlParameter param3 = new("@p2", trabajador.IdNegocio);
            NpgsqlParameter param4 = new("@p3", detalle.Importe);
            NpgsqlParameter param5 = new("@p4", detalle.CantidadVendida);
            /*NpgsqlParameter param6 = new("@p5", detalle.Importe);*/

            Producto prod = productos.First(s => s.IdProducto == detalle.IdProducto);

            if (detalle.CantidadVendida < prod.Stock)
            {
                var             nuevoStock = prod.Stock - detalle.CantidadVendida;
                NpgsqlParameter param6     = new("@p5", nuevoStock);
                await context.Database.ExecuteSqlRawAsync("update \"Producto\" set \"Stock\" = @p5 where \"IdProducto\" = @p0", param6, param1);

                /*
                 *  CREATE OR REPLACE PROCEDURE agregadetalleventa(
                 *          _idproducto character varying,
                 *          _idventa character varying,
                 *          _idnegocio character varying,
                 *          _preciototalventaproducto integer,
                 *          _cantidadvendida integer)
                 *  LANGUAGE 'sql'
                 *  AS $BODY$
                 *  INSERT INTO "Detalle" (
                 *                  "IdProducto",
                 *                  "IdVenta" ,
                 *                  "IdNegocio",
                 *                  "PrecioTotalVentaProducto",
                 *                  "CantidadVendida",
                 *                  "PrecioVenta"
                 *                  )
                 *      VALUES (
                 *                          _idproducto,
                 *                          _idventa,
                 *                          _idnegocio,
                 *                          _preciototalventaproducto,
                 *                          _cantidadvendida,
                 *                          (select "PrecioVenta" from "Producto" where "IdProducto"="_idproducto")
                 *                          );
                 *  $BODY$;
                 *
                 */
                return(await context.Database.ExecuteSqlRawAsync("CALL AgregaDetalleVenta(@p0,@p1,@p2,@p3,@p4)", param1, param2, param3, param4, param5));
            }
            else
            {
                throw new Exception("No hay stock para la cantidad que se quiere vender");
            }
        }
コード例 #6
0
ファイル: PedidosController.cs プロジェクト: NeiGit/DG3
        public ActionResult AgregarDetalle(DetalleViewModel nuevoDetalle)
        {
            //Completamos la información del detalle para insertarlo en la tabla de la view (nombre y precio unitario del producto)
            nuevoDetalle = completarDetalle(nuevoDetalle);

            //Buscamos el producto para luego chequear stock
            Producto producto = db.Producto.Find(nuevoDetalle.SelectedProductoId);

            //Guardamos la lista de detalles de la Session
            List <DetalleViewModel> detalles = getDetallesListFromSession();

            //Primero vemos si ya existe un detalle con el mismo producto en el pedido
            DetalleViewModel detalleExistente = detalles.Where(d => d.SelectedProductoId == nuevoDetalle.SelectedProductoId).FirstOrDefault();

            if (detalleExistente != null)
            {
                //consultamos si hay stock teniendo en cuenta la cantidad pedida en el detalle existente, y la del nuevo detalle
                int cantidadTotal = detalleExistente.cantidad + nuevoDetalle.cantidad;
                if (hayStock(producto, cantidadTotal))
                {
                    //actualizamos el detalle existente, para evitar duplicados en la lista
                    detalleExistente.cantidad     = cantidadTotal;
                    detalleExistente.totalDetalle = producto.precio * cantidadTotal;
                }
                else   //no hay stock para la cantidad pedida sumada a la del detalle existente
                {
                    ModelState.AddModelError("Error", "No hay stock suficiente");
                }
            }
            else   //no hay un detalle existente con el mismo producto
            {
                if (hayStock(producto, nuevoDetalle.cantidad))
                {
                    //esta vez si agregamos el detalle a la lista
                    nuevoDetalle.totalDetalle = producto.precio * nuevoDetalle.cantidad;
                    detalles.Add(nuevoDetalle);
                }
                else   //no hay stock para la cantidad solicitada
                {
                    ModelState.AddModelError("Error", "No hay stock suficiente");
                }
            }

            ////En cualquier caso, volvemos a asignar detalles a la Session, ya que la lista se pudo haber actualizado
            Session["detalles"] = detalles;
            ViewBag.detalles    = detalles;
            //Configuramos de nuevo el menu de productos, ya que se guarda temporalmente en la ViewBag
            configurarDropDownMenu();
            return(View("NuevoPedido"));
        }
コード例 #7
0
        public DetallePage(ComprasRequest comprasRequest)
        {
            try
            {
                BindingContext = new DetalleViewModel(comprasRequest);

                InitializeComponent();
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
コード例 #8
0
ファイル: PedidosController.cs プロジェクト: NeiGit/DG3
        private List <DetalleViewModel> getDetallesFromPedido(int numPed)
        {
            List <Detalle>          detallesPorPedido = db.Detalle.Where(detalle => detalle.numPed == numPed).ToList();
            List <DetalleViewModel> modelList         = new List <DetalleViewModel>();

            detallesPorPedido.ForEach(detalle =>
            {
                Producto producto        = db.Producto.Find(detalle.codProd);
                DetalleViewModel model   = new DetalleViewModel();
                model.SelectedProductoId = detalle.codProd;
                model.productoNombre     = producto.nombre;
                model.cantidad           = detalle.cantidad;
                model.precioUnitario     = producto.precio;
                model.totalDetalle       = producto.precio * detalle.cantidad;
                modelList.Add(model);
            });

            return(modelList);
        }
コード例 #9
0
        public ActionResult Detalle(string nombre)
        {
            using (DocumentClient client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["CosmosdbURL"]), ConfigurationManager.AppSettings["CosmosdbKey"]))
            {
                FeedOptions queryOptions = new FeedOptions {
                    MaxItemCount = 1
                };
                var collectionLink = UriFactory.CreateDocumentCollectionUri(ConfigurationManager.AppSettings["CosmosdbDatabaseId"], ConfigurationManager.AppSettings["CosmosdbCollectionId"]);

                AudioDTO audio = client.CreateDocumentQuery <AudioDTO>(collectionLink, "SELECT * FROM AudioProcesado WHERE AudioProcesado.Nombre = '" + nombre + "'", queryOptions).ToList().SingleOrDefault();
                //var childrenSqlQuery = client.CreateDocumentQuery<EntidadDTO>(collectionLink,
                //"SELECT c " +
                //"FROM c IN f.Children WHERE c.Nombre = '" + nombre + "'").ToList();
                //audio.Entidades = childrenSqlQuery;
                DetalleViewModel model = new DetalleViewModel();
                model.Audio = audio;
                return(View(model));
            }
        }
コード例 #10
0
        public ActionResult Detalle(DetalleViewModel modelo)
        {
            var aDetalle = new DetallePaciente();

            if (ModelState.IsValid)
            {
                aDetalle.DetPacId           = getGUID();
                aDetalle.Calle              = modelo.Calle;
                aDetalle.Colonia            = modelo.Colonia;
                aDetalle.Cp                 = modelo.Cp;
                aDetalle.DerechohabienciaId = modelo.DerechohabienciaId;
                aDetalle.EstadoId           = modelo.EstadoId;
                aDetalle.OcupacionId        = modelo.OcupacionId;
                aDetalle.EscolaridadId      = modelo.EscolaridadId;
                aDetalle.PacienteId         = getIdPaciente(User.Identity.GetUserId());
                db.DetallePaciente.Add(aDetalle);
                db.SaveChanges();

                return(RedirectToAction("AntPer", "Paciente"));
            }
            return(RedirectToAction("Index", "Home"));
        }
コード例 #11
0
        public async Task <VentaDocModel> VentaConsUn([FromRoute] int id)
        {
            var venta = await _context.Venta
                        .Include(v => v.usuario)
                        .Include(v => v.persona)
                        .Where(v => v.idventa == id)
                        .FirstAsync();

            if (venta == null)
            {
                return(new VentaDocModel());
            }


            VentaDocModel           ventaDocModel = new VentaDocModel();
            List <DetalleViewModel> listaDet      = new List <DetalleViewModel>();


            ventaDocModel.idventa   = venta.idventa;
            ventaDocModel.idusuario = venta.idusuario;
            ventaDocModel.usuario   = venta.usuario.nombre;
            //cliente
            ventaDocModel.idcliente     = venta.idcliente;
            ventaDocModel.cliente       = venta.persona.nombre;
            ventaDocModel.num_documento = venta.persona.num_documento;
            ventaDocModel.direccion     = venta.persona.direccion;

            //comprobante
            ventaDocModel.nom_comprobante       = venta.tipo_comprobante;
            ventaDocModel.num_serie_comprobante = venta.serie_comprobante + "-" + venta.num_comprobante;
            ventaDocModel.total_text            = Util.NumeroALetras(venta.total.ToString());

            ventaDocModel.fecha_hora = venta.fecha_hora;
            ventaDocModel.impuesto   = venta.impuesto;

            ventaDocModel.igv = venta.igv;
            ventaDocModel.bim = venta.bim;

            ventaDocModel.total  = venta.total;
            ventaDocModel.estado = venta.estado;


            var ventaDet = await _context.DetallesVentas
                           .Include(v => v.articulo)
                           .Where(v => v.idventa == id)
                           .ToListAsync();


            List <DetalleViewModel> detalleViewModelgen = new List <DetalleViewModel>();

            foreach (var item in ventaDet)
            {
                DetalleViewModel detalleViewModel1 = new DetalleViewModel();
                detalleViewModel1.articulo = item.articulo.descripcion;
                detalleViewModel1.cantidad = item.cantidad;
                detalleViewModel1.precio   = item.precio;
                detalleViewModel1.precio   = item.precio;
                detalleViewModelgen.Add(detalleViewModel1);
            }
            ventaDocModel.Detalle = detalleViewModelgen;


            return(ventaDocModel);
        }
コード例 #12
0
                public void MapearDesde(GrupoDesgasteLlanta grupoDesgasteLlanta)
                {
                    Detalle.Clear();

                    foreach (var detalle in grupoDesgasteLlanta.DetalleActivo)
                    {
                        DetalleViewModel detalleViewModel = new DetalleViewModel();
                        detalleViewModel.MapearDesde(detalle);
                        Detalle.Add(detalleViewModel);
                    }
                }
コード例 #13
0
                    public override void MapearDesde(GrupoInformeInspeccion grupoInformeInspeccion)
                    {
                        base.MapearDesde(grupoInformeInspeccion);

                        Detalle.Clear();

                        foreach (var detalle in (grupoInformeInspeccion as SubGrupoDesgasteFreno).DetalleActivo)
                        {
                            DetalleViewModel detalleViewModel = new DetalleViewModel();
                            detalleViewModel.MapearDesde(detalle);
                            Detalle.Add(detalleViewModel);
                        }
                    }
コード例 #14
0
 public void MapearDesde(GrupoArticuloMantenimiento grupoArticuloMantenimiento)
 {
     Detalle.Clear();
     Descripcion = grupoArticuloMantenimiento.Descripcion;
     Id = grupoArticuloMantenimiento.Id;
     foreach (var detalle in grupoArticuloMantenimiento.DetalleActivo)
     {
         DetalleViewModel detalleViewModel = new DetalleViewModel();
         detalleViewModel.MapearDesde(detalle);
         Detalle.Add(detalleViewModel);
     }
 }
コード例 #15
0
        public async Task <ActionResult> Insertar(FacturaViewModel model)
        {
            try
            {
                E_Factura factura = new E_Factura();
                var       cliente = await clienteServices.DevolverPorCodigo(model.CodCliente);

                factura.IdCliente = cliente.Id;
                factura.SubTotal  = model.SubTotal;
                factura.Descuento = model.TotalDescuento;
                factura.Iva       = model.TotalIva;

                if (model.Detalle != null)
                {
                    factura.Detalle = new List <E_Detalle>();

                    foreach (var item in model.Detalle)
                    {
                        E_Detalle detalle  = new E_Detalle();
                        var       producto = await productoServices.DevolverPorCodigo(item.CodigoProducto);

                        detalle.IdProducto = producto.Id;
                        detalle.Cantidad   = item.Cantidad;
                        detalle.Descuento  = item.PorcentajeDescuento;
                        detalle.Iva        = item.PorcentajeIva;
                        factura.Detalle.Add(detalle);
                    }
                }

                E_Factura fac = await facturaServices.Insertar(factura);

                FacturaViewModel facturaViewModel = new FacturaViewModel();
                facturaViewModel.NumeroFactura = fac.Codigo;
                facturaViewModel.CodCliente    = fac.Cliente.Codigo;

                var resultcli = await clienteServices.DevolverPorCodigo(fac.Cliente.Codigo);

                ClienteViewModel clienteViewModel = new ClienteViewModel();
                clienteViewModel.Codigo         = resultcli.Codigo;
                clienteViewModel.Identificacion = resultcli.Identificacion;
                clienteViewModel.Tipo_Documento = resultcli.Tipo_Identificacion.Abreviatura;
                clienteViewModel.NombreCompleto = resultcli.NombreCompleto;
                clienteViewModel.Direccion      = resultcli.Direccion;
                clienteViewModel.Telefono       = resultcli.Telefono;
                clienteViewModel.FechaNac       = resultcli.FechaNac.ToString("dd/MM/yyyy");
                clienteViewModel.Correo         = resultcli.Correo;
                facturaViewModel.Cliente        = clienteViewModel;

                facturaViewModel.Fecha          = fac.Fecha.ToString("dd/MM/yyyy");
                facturaViewModel.SubTotal       = fac.SubTotal;
                facturaViewModel.TotalDescuento = fac.Descuento;
                facturaViewModel.TotalIva       = fac.Iva;
                facturaViewModel.TotalGeneral   = fac.Total;

                List <DetalleViewModel> listaDetalle = new List <DetalleViewModel>();

                foreach (var item in fac.Detalle)
                {
                    DetalleViewModel detalle = new DetalleViewModel();
                    detalle.NumeroFactura  = fac.Codigo;
                    detalle.CodigoProducto = item.Producto.Codigo;

                    ProductoViewModel Producto = new ProductoViewModel();
                    Producto.CodigoProducto = item.Producto.Codigo;
                    Producto.NombreProducto = item.Producto.Nombre;
                    Producto.Descripcion    = item.Producto.Descripcion;
                    Producto.Precio         = item.Lista_Precio.Precio;
                    detalle.Producto        = Producto;

                    detalle.Cantidad            = item.Cantidad;
                    detalle.Precio              = item.Lista_Precio.Precio;
                    detalle.PorcentajeDescuento = item.Descuento;
                    detalle.PorcentajeIva       = item.Iva;
                    listaDetalle.Add(detalle);
                }

                facturaViewModel.Detalle = listaDetalle;
                return(Ok(facturaViewModel));
            }
            catch (System.Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }