Exemplo n.º 1
0
        public ActionResult AgregarAjax(FacturacionViewModel facturacion)
        {
            if (ModelState.IsValid)
            {
                using (var dbContextTransaction = _context.Database.BeginTransaction())
                {
                    try
                    {
                        foreach (DetalleCompra item in facturacion.DetalleCompra)
                        {
                            var existeCompra = _context.DetalleCompra
                                               .Where(dc => (dc.IdCompra == facturacion.Compra.IdCompra && dc.IdProducto == item.IdProducto)).FirstOrDefault();
                            var producto = _context.Producto.Where(p => p.IdProducto == item.IdProducto).FirstOrDefault();
                            var monedero = _context.Monedero.Where(m => m.IdCliente == facturacion.Compra.IdCliente).FirstOrDefault();

                            var diferencia = ((int)existeCompra.Cantidad + (int)item.Cantidad);
                            facturacion.Compra.Importe += ((int)item.Cantidad * (int)item.PrecioUnidad);

                            if (existeCompra != null && producto != null)
                            {
                                existeCompra.Cantidad = (int)diferencia;
                                producto.Existencia  -= (int)item.Cantidad;
                                _context.Update(existeCompra);
                                _context.Update(producto);
                            }
                            else
                            {
                                DetalleCompra detalle = new DetalleCompra();
                                detalle.IdCompra     = facturacion.Compra.IdCompra;
                                detalle.IdProducto   = item.IdProducto;
                                detalle.PrecioUnidad = item.PrecioUnidad;
                                detalle.Cantidad     = item.Cantidad;
                                detalle.Descuento    = 0;
                                _context.Add(detalle);
                            }
                            monedero.Saldo -= ((int)item.Cantidad * (int)item.PrecioUnidad);

                            var compraImporte = _context.Compra.Where(c => c.IdCompra == facturacion.Compra.IdCompra).FirstOrDefault();
                            compraImporte.Importe = facturacion.Compra.Importe;
                            _context.Update(compraImporte);
                            _context.Update(monedero);
                            _context.SaveChanges();
                            dbContextTransaction.Commit();
                        }
                        return(Json(new { result = true }));
                    }
                    catch
                    {
                        dbContextTransaction.Rollback();
                    }
                }
            }
            return(Json(new { result = false }));
        }
        public PartialViewResult IngresarFacturacion(FacturacionViewModel model)
        {
            //Datos Pruebas
            var FacturaList = new List <FacturacionViewModel>();

            if (model != null)
            {
                if (model.Contabilidad == 0)
                {
                    model.Contabilidad = (int)Session["NuevaContabilidad"];
                }
                _presupuestoSvc.guardarFacturacion(new FacturacionDto
                {
                    Mes = Convert.ToInt32(model.Mes),
                    NumeroContabilidad = model.Contabilidad,
                    NumeroCuota        = model.NumeroCuotas,
                    NumeroGuia         = model.Factura,
                    ValorCuota         = model.Valor
                });
            }

            var fact = _presupuestoSvc.obtenerFacturacion(model.Contabilidad);

            if (fact.Any())
            {
                FacturaList = fact.Select(f => new FacturacionViewModel
                {
                    Contabilidad = f.NumeroContabilidad,
                    Factura      = f.NumeroGuia,
                    Mes          = f.Mes.ToString(),
                    NumeroCuotas = f.NumeroCuota,
                    Valor        = Convert.ToInt32(f.ValorCuota)
                }).ToList();
            }
            else
            {
                if (Session["Facturacion"] != null)
                {
                    FacturaList = (List <FacturacionViewModel>)Session["Facturacion"];
                }
                FacturaList.Add(model);
            }

            Session["Facturacion"] = FacturaList;

            return(PartialView("Facturacion", FacturaList));
        }
Exemplo n.º 3
0
        public IActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var             compra    = _context.Compra.Where(c => c.IdCompra == id).FirstOrDefault();
            List <Producto> productos = _context.Producto.Where(p => p.Existencia > 0).Include(p => p.IdCategoriaNavigation).ToList();

            ViewData["Producto"] = productos;

            List <DetalleCompra> detallecompra = _context.DetalleCompra.Where(d => d.IdCompra == id).Include(d => d.IdProductoNavigation).ToList();

            ViewData["DetalleCompra"] = detallecompra;
            FacturacionViewModel facturacion = new FacturacionViewModel();

            facturacion.Compra = compra;
            //facturacion.DetalleCompra = detallecompra;
            return(View(facturacion));
        }
        public Task <FacturacionViewModel> GetFacturacion(int year)
        {
            var facturacionVm = new FacturacionViewModel();

            foreach (var mes in _pacientesDbContext.FacturasHeaders.Where(x => x.Fecha.Year == year).Include(x => x.Lineas).GroupBy(x => x.Fecha.Month))
            {
                var facturaItem = new FacturacionItem
                {
                    Mes        = GetMes(mes.Key),
                    Year       = year,
                    TotalBruto = 0,
                    TotalNeto  = 0,
                    TotalIrpf  = 0
                };
                foreach (var factura in mes)
                {
                    var total = 0.0;
                    foreach (var linea in factura.Lineas)
                    {
                        total += linea.Cantidad * linea.Precio;
                    }
                    var conDescuento = total * (1 - (factura.Descuento / 100.0));
                    facturaItem.TotalBruto += conDescuento;
                    facturaItem.TotalNeto  += conDescuento * (1 - (factura.IRPF / 100.0));
                    facturaItem.TotalIrpf  += conDescuento * (factura.IRPF / 100.0);
                }

                facturaItem.TotalBruto = Math.Round(facturaItem.TotalBruto, 2);
                facturaItem.TotalNeto  = Math.Round(facturaItem.TotalNeto, 2);
                facturaItem.TotalIrpf  = Math.Round(facturaItem.TotalIrpf, 2);
                facturacionVm.FacturacionData.Add(facturaItem);
                facturacionVm.TotalBruto += facturaItem.TotalBruto;
                facturacionVm.TotalNeto  += facturaItem.TotalNeto;
                facturacionVm.TotalIrpf  += facturaItem.TotalIrpf;
            }

            return(Task.FromResult(facturacionVm));
        }
Exemplo n.º 5
0
        public ActionResult EliminarAjax(FacturacionViewModel facturacion)
        {
            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                try
                {
                    foreach (DetalleCompra item in facturacion.DetalleCompra)
                    {
                        var DetalleproductoEliminar = _context.DetalleCompra
                                                      .Where(dc => dc.IdCompra == facturacion.Compra.IdCompra && dc.IdProducto == item.IdProducto)
                                                      .FirstOrDefault();
                        var producto = _context.Producto
                                       .Where(p => p.IdProducto == DetalleproductoEliminar.IdProducto)
                                       .FirstOrDefault();
                        var monedero = _context.Monedero
                                       .Where(m => m.IdCliente == facturacion.Compra.IdCliente)
                                       .FirstOrDefault();
                        producto.Existencia += (int)DetalleproductoEliminar.Cantidad;
                        monedero.Saldo      += (int)DetalleproductoEliminar.Cantidad * (int)DetalleproductoEliminar.PrecioUnidad;

                        var compra = _context.Compra.Where(c => c.IdCompra == facturacion.Compra.IdCompra).FirstOrDefault();
                        compra.Importe += (int)DetalleproductoEliminar.Cantidad * (int)DetalleproductoEliminar.PrecioUnidad;
                        _context.Update(compra);
                        _context.Update(producto);
                        _context.Update(monedero);
                        _context.Remove(DetalleproductoEliminar);
                    }
                    _context.SaveChanges();
                    dbContextTransaction.Commit();
                }
                catch
                {
                    dbContextTransaction.Rollback();
                }
                return(Json(new { result = true, }));
            }
        }
Exemplo n.º 6
0
        public IActionResult Guardar(FacturacionViewModel factura)
        {
            if (ModelState.IsValid)
            {
                using (var dbContextTransaction = _context.Database.BeginTransaction())
                {
                    try
                    {
                        Compra comprar = new Compra//Agregar compra
                        {
                            //IdCompra = ((int)factura.Compra.IdCompra),
                            IdCliente  = factura.Compra.IdCliente,
                            Fecha      = factura.Compra.Fecha,
                            Importe    = ((int)factura.Compra.Importe),
                            IdEmpleado = factura.Compra.IdEmpleado
                        };

                        _context.Add(comprar);
                        _context.SaveChanges();
                        foreach (DetalleCompra item in factura.DetalleCompra)
                        {
                            DetalleCompra detalle = new DetalleCompra//Agregar detalleCompra
                            {
                                IdCompra     = ((int)factura.Compra.IdCompra),
                                IdProducto   = item.IdProducto,
                                PrecioUnidad = item.PrecioUnidad,
                                Cantidad     = item.Cantidad,
                                Descuento    = 0
                            };
                            var producto = _context.Producto.Where(p => p.IdProducto == item.IdProducto);
                            foreach (var item2 in producto)//descuenta producto del stock
                            {
                                item2.Existencia = ((int)item2.Existencia - (int)item.Cantidad);
                                _context.Update(item2);
                            }

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

                        var monederoCliente = _context.Monedero.Where(m => m.IdCliente == ((int)factura.Compra.IdCliente));
                        foreach (var item3 in monederoCliente)//resta el monedero
                        {
                            item3.Saldo = ((double)item3.Saldo - ((double)factura.Compra.Importe));
                            _context.Update(item3);
                        }
                        _context.SaveChanges();
                        dbContextTransaction.Commit();
                    }
                    catch
                    {
                        dbContextTransaction.Rollback();
                    }
                }

                Thread.Sleep(2000);
                return(RedirectToAction("Index"));
            }

            ViewData["Fecha"] = DateTime.Now.ToString("dd/MM/yyyy");
            List <Cliente> clientes = _context.Cliente.Where(c => c.Estado == "Activo").ToList();

            ViewData["Cliente"] = clientes;
            List <Empleado> empleados = _context.Empleado.Where(e => e.Estado == "Activo").ToList();

            ViewData["Empleado"] = empleados;
            List <Producto> productos = _context.Producto.Where(p => p.Existencia > 0).Include(p => p.IdCategoriaNavigation).ToList();

            ViewData["Producto"] = productos;
            return(View());
        }