//TODO: modificar nombre "index" por punto de venta
        public IActionResult PuntoVenta()
        {
            CarroCompras cart        = SessionHelper.GetObjectFromJson <CarroCompras>(HttpContext.Session, "cart");
            var          clienteInfo = SessionHelper.GetObjectFromJson <ClienteDTO>(HttpContext.Session, "clienteInformacion");
            int          ventaId     = (int)SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "ventaId");

            PuntoVentaViewModel puntoVentaViewModel = new PuntoVentaViewModel();

            puntoVentaViewModel.CarroArticulos     = cart;
            puntoVentaViewModel.VentaId            = ventaId;
            puntoVentaViewModel.InformacionCliente = clienteInfo;

            /*
             * si hubo una venta "reinicia" ventaId a "0", el cual indica que habra una nueva venta y no
             * imprimira un comprobante de venta
             * */
            if (ventaId != 0)
            {
                SessionHelper.SetObjectAsJson(HttpContext.Session, "ventaId", 0);
                SessionHelper.SetObjectAsJson(HttpContext.Session, "clienteInformacion", null);
            }


            return(View(puntoVentaViewModel));
        }
Beispiel #2
0
 public TbSePuntoVenta ViewModelToDomain(PuntoVentaViewModel viewModel)
 {
     return(new TbSePuntoVenta
     {
         Nombre = viewModel.Nombre,
         Descripcion = viewModel.Descripcion,
         Inactivo = false,
         Tipo = viewModel.Tipo,
         EsPorDefecto = viewModel.EsPorDefecto,
         OpcionImpresion = viewModel.OpcionImpresion,
         IdContactoClienteDefecto = viewModel.IdContactoClienteDefecto,
         IdBodega = viewModel.IdBodega,
         IdMonedaPrecio = viewModel.IdMonedaPrecio,
         IdMonedaFacturaDefecto = viewModel.IdMonedaFacturaDefecto,
         TieneConcecutivoIndependiente = viewModel.TieneConcecutivoIndependiente,
         PrefijoConcecutivoIndepediente = viewModel.PrefijoConcecutivoIndepediente,
         InicioConcecutivoIndependiente = viewModel.InicioConcecutivoIndependiente,
         TieneEncabezadoIndependiente = viewModel.TieneEncabezadoIndependiente,
         TieneCajaIndependiente = viewModel.TieneCajaIndependiente,
         RazonSocial = viewModel.RazonSocial,
         CedulaJuridica = viewModel.CedulaJuridica,
         Email = viewModel.Email,
         Telefono = viewModel.Telefono,
         Web = viewModel.Web,
         Imagen = viewModel.Imagen,
         FechaCreacion = DateTime.Now,
         IdUsuarioCreacion = viewModel.IdUsuarioCreacion,
         IdTipoPrecioDefecto = viewModel.IdTipoPrecioDefecto
     });
 }
Beispiel #3
0
        public TbSePuntoVenta ViewModelToDomainEditar(PuntoVentaViewModel viewModel)
        {
            var domain = service.GetPuntoVentaById((int)viewModel.IdPuntoVenta);

            domain.Nombre                         = viewModel.Nombre;
            domain.Descripcion                    = viewModel.Descripcion;
            domain.Inactivo                       = viewModel.Inactivo;
            domain.Tipo                           = viewModel.Tipo;
            domain.EsPorDefecto                   = viewModel.EsPorDefecto;
            domain.OpcionImpresion                = viewModel.OpcionImpresion;
            domain.IdContactoClienteDefecto       = viewModel.IdContactoClienteDefecto;
            domain.IdBodega                       = viewModel.IdBodega;
            domain.IdMonedaPrecio                 = viewModel.IdMonedaPrecio;
            domain.IdMonedaFacturaDefecto         = viewModel.IdMonedaFacturaDefecto;
            domain.TieneConcecutivoIndependiente  = viewModel.TieneConcecutivoIndependiente;
            domain.PrefijoConcecutivoIndepediente = viewModel.PrefijoConcecutivoIndepediente;
            domain.InicioConcecutivoIndependiente = viewModel.InicioConcecutivoIndependiente;
            domain.TieneEncabezadoIndependiente   = viewModel.TieneEncabezadoIndependiente;
            domain.TieneCajaIndependiente         = viewModel.TieneCajaIndependiente;
            domain.RazonSocial                    = viewModel.RazonSocial;
            domain.CedulaJuridica                 = viewModel.CedulaJuridica;
            domain.Email                          = viewModel.Email;
            domain.Telefono                       = viewModel.Telefono;
            domain.Web    = viewModel.Web;
            domain.Imagen = viewModel.Imagen;
            domain.IdTipoPrecioDefecto = viewModel.IdTipoPrecioDefecto;


            return(domain);
        }
        public PuntoVentaItemPage()
        {
            InitializeComponent();
            PuntoVentaViewModel puntoVentaViewModel = PuntoVentaViewModel.GetInstance();

            BindingContext = puntoVentaViewModel.CurrentPuntoVenta;
        }
Beispiel #5
0
        public IActionResult CrearEditarPuntoVenta(PuntoVentaViewModel viewModel)
        {
            try
            {
                if (viewModel.Imagen == null)
                {
                    viewModel.Imagen = " ";
                }

                if (!viewModel.TieneConcecutivoIndependiente)
                {
                    viewModel.PrefijoConcecutivoIndepediente = "";
                    viewModel.InicioConcecutivoIndependiente = 0;
                }
                if (!viewModel.TieneEncabezadoIndependiente)
                {
                    viewModel.RazonSocial    = "";
                    viewModel.CedulaJuridica = "";
                    viewModel.Email          = "";
                    viewModel.Telefono       = "";
                    viewModel.Web            = "";
                    viewModel.Imagen         = "";
                }
                var existe     = service.GetPuntoVentaById((int)viewModel.IdPuntoVenta);
                var puntoVenta = new TbSePuntoVenta();
                if (viewModel.IdPuntoVenta != 0)
                {
                    if (existe.IdPuntoVenta == viewModel.IdPuntoVenta)
                    {
                        puntoVenta = map.Update(viewModel);
                    }
                    else
                    {
                        return(Json(new { success = false }));
                    }
                }
                else
                {
                    if (existe == null)
                    {
                        viewModel.IdUsuarioCreacion = int.Parse(User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value);
                        puntoVenta = map.Create(viewModel);
                    }
                    else
                    {
                        return(Json(new { success = false }));
                    }
                }



                return(Json(new { success = true, id = puntoVenta.IdPuntoVenta }));
            }
            catch (Exception ex)
            {
                AltivaLog.Log.Insertar(ex.ToString(), "Error");
                throw;
            }
        }
        private void ExecuteEditar()
        {
            PuntoVentaViewModel puntoVentaViewModel = PuntoVentaViewModel.GetInstance();

            puntoVentaViewModel.SetCurrentPuntoVenta(this);
            this.Nuevo           = false;                                      /// Importante indicaque se modificara el registro actual
            this.DeleteIsEnabled = true;
            App.PuntoVentaPage.Navigation.PushAsync(new PuntoVentaItemPage()); // Navegacion
        }
        private void AlmacenarInformacionClienteSession(PuntoVentaViewModel ventaViewModel)
        {
            ClienteDTO objClienteDTO  = new ClienteDTO();
            ClienteDTO clienteSession = SessionHelper.GetObjectFromJson <ClienteDTO>(HttpContext.Session, "clienteInformacion");

            objClienteDTO.NombreCompleto = ventaViewModel.InformacionCliente?.NombreCompleto ?? clienteSession?.NombreCompleto;
            objClienteDTO.Domicilio      = ventaViewModel.InformacionCliente?.Domicilio ?? clienteSession?.Domicilio;
            objClienteDTO.Localidad      = ventaViewModel.InformacionCliente?.Localidad ?? clienteSession?.Localidad;
            objClienteDTO.CodiPostal     = ventaViewModel.InformacionCliente?.CodiPostal ?? clienteSession?.CodiPostal;
            objClienteDTO.Telefono       = ventaViewModel.InformacionCliente?.Telefono ?? clienteSession?.Telefono;

            SessionHelper.SetObjectAsJson(HttpContext.Session, "clienteInformacion", objClienteDTO);
        }
        public IActionResult VenderArticulos(PuntoVentaViewModel p_puntoVentaViewModel)
        {
            try
            {
                CarroCompras cart = SessionHelper.GetObjectFromJson <CarroCompras>(HttpContext.Session, "cart");
                if (cart == null)
                {
                    throw new Exception("Debe agregar articulos al carro de compras para generar una venta");
                }
                if (cart.Articulos?.Count != 0)
                {
                    int ventaId = this._ventaService.GenerarVenta(cart.Articulos, p_puntoVentaViewModel.InformacionCliente);
                    if (ventaId != 0)
                    {
                        cart = null;
                        SessionHelper.SetObjectAsJson(HttpContext.Session, "cart", null);               //TODO: verificar si esto esta de mas
                        SessionHelper.SetObjectAsJson(HttpContext.Session, "clienteInformacion", null); //TODO: verificar si esto esta de mas
                        SessionHelper.SetObjectAsJson(HttpContext.Session, "ventaId", ventaId.ToString());
                        ViewBag.result = "Se realizo la venta con exito.";
                    }
                    return(RedirectToAction("PuntoVenta"));
                }
                else
                {
                    ViewBag.info = "Debe agregar articulos al carro de compras.";
                    return(RedirectToAction("PuntoVenta"));
                }
            }
            catch (Exception e)
            {
                ViewBag.error = e.Message;

                AlmacenarInformacionClienteSession(p_puntoVentaViewModel);

                return(View("PuntoVenta", p_puntoVentaViewModel));
            }
        }
        public IActionResult AgregarArticulo([FromQuery] string p_codigoBarras, [FromQuery] int cantidadUnideades, PuntoVentaViewModel puntoVentaViewModel)
        {
            try
            {
                bool hayStoy = false;
                //debe traer el registro de un articulo el cual tiene asignado stock, sino retorna null
                ArticuloDTO articuloDTO = this._articuloService.ObtenerArticuloPorCodigoBarras(p_codigoBarras);
                if (articuloDTO != null)
                {
                    hayStoy = (articuloDTO.CantidadStock - cantidadUnideades) >= 0;
                }

                if (articuloDTO != null && hayStoy)
                {
                    if (SessionHelper.GetObjectFromJson <CarroCompras>(HttpContext.Session, "cart") == null)
                    {
                        CarroCompras cart = new CarroCompras();
                        cart.Articulos.Add(new CarroItemDTO
                        {
                            Id                   = articuloDTO.Id,
                            Descripcion          = articuloDTO.Descripcion,
                            CategoriaDescripcion = articuloDTO.CategoriaDescripcion,
                            ModeloDescripcion    = articuloDTO.ModeloDescripcion,
                            ColorDescripcion     = articuloDTO.ColorDescripcion,
                            Precio               = articuloDTO.Precio,
                            CantidadUnidades     = cantidadUnideades,
                            Total                = cantidadUnideades * articuloDTO.Precio,
                        });
                        SessionHelper.SetObjectAsJson(HttpContext.Session, "cart", cart);
                        AlmacenarInformacionClienteSession(puntoVentaViewModel);
                    }
                    else
                    {
                        CarroCompras cart  = SessionHelper.GetObjectFromJson <CarroCompras>(HttpContext.Session, "cart");
                        int          index = isExist(articuloDTO.Id);
                        if (index != -1)
                        {
                            //cart.CarroArticulos[index].ca++;
                        }
                        else
                        {
                            cart.Articulos.Add(new CarroItemDTO
                            {
                                Id                = articuloDTO.Id,
                                Descripcion       = articuloDTO.Descripcion,
                                ModeloDescripcion = articuloDTO.ModeloDescripcion,
                                ColorDescripcion  = articuloDTO.ColorDescripcion,
                                Precio            = articuloDTO.Precio,
                                CantidadUnidades  = cantidadUnideades,
                                Total             = cantidadUnideades * articuloDTO.Precio,
                            });
                        }
                        SessionHelper.SetObjectAsJson(HttpContext.Session, "cart", cart);
                        AlmacenarInformacionClienteSession(puntoVentaViewModel);
                    }
                    var puntoDeVentaVM = ConstruirPuntoVentaViewModel();
                    return(View("PuntoVenta", puntoDeVentaVM));
                }
                else
                {
                    if (!hayStoy)
                    {
                        ViewBag.info = $"El articulo ingresado no tiene stock disponible para la cantidad ingresada. su stock disponible es de: {articuloDTO?.CantidadStock}.";
                    }
                    if (articuloDTO == null)
                    {
                        ViewBag.info = "El articulo no tiene stock asignado o no existe, solo se puede agregar articulos con stock asignado.";
                    }

                    var cart        = SessionHelper.GetObjectFromJson <CarroCompras>(HttpContext.Session, "cart");
                    var clienteInfo = SessionHelper.GetObjectFromJson <ClienteDTO>(HttpContext.Session, "clienteInformacion");


                    var puntoDeVentaVM = ConstruirPuntoVentaViewModel();
                    puntoDeVentaVM.InformacionCliente = clienteInfo;
                    return(View("PuntoVenta", puntoDeVentaVM));
                }
            }
            catch (Exception ex)
            {
                ViewBag.error = ex.Message;
                var puntoDeVentaVM = ConstruirPuntoVentaViewModel();
                return(View("PuntoVenta", puntoDeVentaVM));
            }
        }
Beispiel #10
0
 public TbSePuntoVenta Update(PuntoVentaViewModel viewModel)
 {
     return(service.Update(ViewModelToDomainEditar(viewModel)));
 }
Beispiel #11
0
 public TbSePuntoVenta Create(PuntoVentaViewModel viewModel)
 {
     return(service.Save(ViewModelToDomain(viewModel)));
 }