Beispiel #1
0
        public Pedido PedidoGrabarTotal(int id)
        {
            RepositoryGenerico <Pedido> repository = new RepositoryGenerico <Pedido>();
            Pedido            dato  = repository.Obtener(id);
            List <PedidoItem> items = this.Listar <PedidoItem>("IdPedido", id).ToList <PedidoItem>();

            decimal total    = 0;
            int     cantidad = 0;

            items.ForEach(delegate(PedidoItem item)
            {
                total += item.Subtotal;
                cantidad++;
            });

            ServicioGenerico servGenerico = new ServicioGenerico();
            //Parametro paramProcentaje = servGenerico.ParametroListarCache().FirstOrDefault(item => item.Clave.Equals("PORCENTAJE_SUBTOTAL"));

            string paramProcentaje = servGenerico.ParametroObtenerValor("PORCENTAJE_SUBTOTAL");

            dato.Porcentaje = (paramProcentaje.ConvertirDecimal() < 0 ? 0 : paramProcentaje.ConvertirDecimal());

            dato.Total         = total + ((total * dato.Porcentaje) / 100);
            dato.CantidadItems = cantidad;

            repository.Actualizar(dato);

            return(dato);
        }
Beispiel #2
0
        public decimal DamePrecioListaClienteMayorista(int idCliente)
        {
            ServicioClientes servClientes = new ServicioClientes();
            ServicioGenerico servGenerico = new ServicioGenerico();
            decimal          precioReturn = -1;

            string codListaMayorista = servGenerico.ParametroObtenerValor("LISTA_MAYORISTA");

            ListaPrecio listaMayorista = this.ObtenerObjeto <ListaPrecio>("Codigo", codListaMayorista);

            if (listaMayorista != null)
            {
                //List<ClienteLista> lista = this.Listar<ClienteLista>("IdCliente", idCliente).ToList<ClienteLista>();
                List <ClienteLista> lista = servClientes.ClienteListaObtenerVigentesCache()
                                            .Where(item => item.IdCliente == idCliente)
                                            .ToList <ClienteLista>();

                if (lista != null)
                {
                    ClienteLista cliLista = lista.Find(item => item.ListaPrecio == listaMayorista);
                    if (cliLista != null)
                    {
                        precioReturn = cliLista.ListaPrecioCliente.Precio;
                    }
                }
            }
            return(precioReturn);
        }
Beispiel #3
0
        public DocumentoVentaObservaciones DocumentoVentaObservacionesGrabar(DocumentoVentaObservaciones datosGraba)
        {
            ServicioGenerico servGenerico = new ServicioGenerico();
            RepositoryGenerico <DocumentoVentaObservaciones> repository = new RepositoryGenerico <DocumentoVentaObservaciones>();
            DocumentoVentaObservaciones dato;

            string url_host = servGenerico.ParametroObtenerValor("URL_HOST");

            int _id = datosGraba.Id;

            if (_id == -1)
            {
                dato = new DocumentoVentaObservaciones();
            }
            else
            {
                dato = repository.Obtener(_id);
            }

            dato.IdVenta       = datosGraba.IdVenta;
            dato.Observaciones = datosGraba.Observaciones;
            dato.Adjunto       = datosGraba.Adjunto;
            dato.AdjuntoLink   = string.Format("{0}{1}{2}", url_host, "assets/adjuntos/", dato.Adjunto);

            repository.Actualizar(dato);

            return(dato);
        }
Beispiel #4
0
        public List <PedidoItem> PedidoObtenerItems(int idPedido, int numeroPagina, int cantidadRegistros)
        {
            PedidoRepository repository   = new PedidoRepository();
            ServicioGenerico servGenerico = new ServicioGenerico();

            string url_host = servGenerico.ParametroObtenerValor("URL_HOST");

            List <PedidoItem> itemsReturn = new List <PedidoItem>();

            List <PedidoItem> listItemsFULL = this.Listar <PedidoItem>("IdPedido", idPedido)
                                              .OrderBy(item => item.Producto.Ubicacion)
                                              .ToList <PedidoItem>();

            bool paginar = (numeroPagina != -1 && cantidadRegistros != -1);

            if (paginar)
            {
                int nro_fila = 1;
                listItemsFULL.ForEach(delegate(PedidoItem item)
                {
                    item.NroFila = nro_fila;
                    nro_fila++;
                });
                int filaDesde = (numeroPagina - 1) * cantidadRegistros;
                int filaHasta = filaDesde + cantidadRegistros;
                itemsReturn = listItemsFULL.FindAll(item => item.NroFila > filaDesde && item.NroFila <= filaHasta);
            }
            else
            {
                itemsReturn = listItemsFULL;
            }


            return(itemsReturn);
        }
Beispiel #5
0
        public Producto ProcesarStockMayorista(int idCliente, Producto prod)
        {
            /*URL DE LA FOTO*/
            /*Se usa la URL del mayorista*/
            ServicioGenerico servGenerico = new ServicioGenerico();
            decimal          myGanancia   = servGenerico.ParametroObtenerValor("PORC_GANANCIA_GRAL").ConvertirDecimal();

            //Para revendedor, el precio unitario es el precio final del mayorista mas la ganancia
            prod.PrecioUnitario = prod.PrecioUnitarioFinal;

            if (myGanancia > 0)
            {
                prod.PrecioUnitario = prod.PrecioUnitarioFinal + ((prod.PrecioUnitarioFinal * myGanancia) / 100);
            }

            /*CALCULO DEL PRECIO SEGUN LISTA*/
            ServiciosPedido servPedido         = new ServiciosPedido();
            decimal         precioListaCliente = servPedido.DamePrecioListaClienteMayorista(idCliente);

            decimal precio = 0;

            //Aplicamos descuento para clientes que tengan asignada lista
            if (precioListaCliente != -1)
            {
                precio = prod.PrecioUnitario - ((precioListaCliente * prod.PrecioUnitario) / 100);
            }
            else
            {
                precio = prod.PrecioUnitario;
            }

            prod.PrecioUnitarioProcesado = precio;

            return(prod);
        }
Beispiel #6
0
        public ProductoList ProductoListarEstamosEnMantenimiento()
        {
            ServicioGenerico servGenerico = new ServicioGenerico();

            string url_host = servGenerico.ParametroObtenerValor("URL_HOST");

            List <Producto> listProds = new List <Producto>();

            listProds.Add(new Producto()
            {
                Id           = 9999,
                Descripcion  = "Estamos en mantenimiento",
                Vigente      = true,
                Codigo       = 9999,
                Stock        = 1,
                StockPropio  = true,
                FotoLink     = string.Format("{0}{1}", url_host, "/assets/img/EnMantenimiento.png"),
                Subcategoria = new Subcategoria()
                {
                    Id                = 1,
                    Descripcion       = "Estamos en mantenimiento",
                    Vigente           = true,
                    Carpeta           = "",
                    CantidadProductos = 1,
                    DescripcionFull   = "Estamos en mantenimiento",
                    IdDescripcion     = "1"
                },
                ListaPrecio = new ListaPrecio()
                {
                    Id            = 6,
                    Descripcion   = "",
                    Vigente       = true,
                    Codigo        = "",
                    Precio        = 0,
                    IdDescripcion = ""
                },
                PrecioUnitarioFinal     = 0,
                PrecioUnitarioProcesado = 0,
                MonedaVenta             = "",
                ProductoPedido          = false,
                CantidadPedido          = 0,
                NroFila                 = 1,
                Path                    = "",
                IdTipo                  = 1,
                IdCategoria             = 1,
                DescripcionTipo         = "",
                DescripcionCategoria    = "",
                DescripcionSubcategoria = "Estamos en mantenimiento",
                PrecioPorPeso           = true,
                PrecioPorPieza          = false,
                IdDescripcion           = ""
            });

            ProductoList listReturn = new ProductoList();

            listReturn.TotalFilas = 1;
            listReturn.Productos  = listProds;
            return(listReturn);
        }
Beispiel #7
0
        public void PedidoLiberarStock(int idPedido)
        {
            ServicioGenerico servGenerico         = new ServicioGenerico();
            string           descuentaAlConfirmar = servGenerico.ParametroObtenerValor("DESCONTAR_STCOK_AL_CONFIRMAR");

            if (!string.IsNullOrEmpty(descuentaAlConfirmar) && descuentaAlConfirmar.Equals("SI"))
            {
                PedidoRepository repository = new PedidoRepository();
                repository.PedidoLiberarStock(idPedido);
            }
        }
Beispiel #8
0
        private List <Tipo> TipoObtenerDelMayorista()
        {
            ServicioGenerico servicio     = new ServicioGenerico();
            List <Tipo>      listReturn   = new List <Tipo>();
            string           urlMayorista = servicio.ParametroObtenerValor("URL_MAYORISTA");

            if (!string.IsNullOrEmpty(urlMayorista))
            {
                urlMayorista += "api/tipo";
                using (WebClient webClient = new WebClient())
                {
                    var json = webClient.DownloadString(urlMayorista);
                    listReturn = JsonConvert.DeserializeObject <List <Tipo> >(json);
                }
            }
            return(listReturn);
        }
Beispiel #9
0
        public void PedidoCancelar(int idPedido)
        {
            ServicioGenerico servGenerico = new ServicioGenerico();
            PedidoRepository repository   = new PedidoRepository();
            Pedido           dato;

            dato        = repository.Obtener(idPedido);
            dato.Estado = this.ObtenerObjeto <Estado>((int)ESTADOS.CANCELADO_);

            repository.Actualizar(dato);

            string descuentaAlConfirmar = servGenerico.ParametroObtenerValor("DESCONTAR_STCOK_AL_CONFIRMAR");

            if (!string.IsNullOrEmpty(descuentaAlConfirmar) && descuentaAlConfirmar.Equals("SI"))
            {
                repository.PedidoLiberarStock(dato.Id);
            }
        }
Beispiel #10
0
        private List <Producto> ProductoObtenerDelMayorista(bool conStock, int idSubcategoria, string textoBuscar, int idCliente)
        {
            ServicioGenerico servicio       = new ServicioGenerico();
            ProductoList     prodsMayorista = null;
            List <Producto>  listReturn     = new List <Producto>();

            string urlMayorista = servicio.ParametroObtenerValor("URL_MAYORISTA");

            if (!string.IsNullOrEmpty(urlMayorista))
            {
                try
                {
                    string keyItem             = string.Format("GetProductosMayorista{0}{1}{2}", conStock.ToString(), idSubcategoria.ToString(), textoBuscar);
                    var    prodsMayoristaCache = CacheManager.GetToCache <string>(gobalKeyCache, keyItem);

                    if (prodsMayoristaCache == null)
                    {
                        if (textoBuscar == string.Empty)
                        {
                            textoBuscar = "1";
                        }
                        urlMayorista += string.Format("api/producto/listarbusqueda/{0}/{1}/{2}/{3}/1/250", conStock, idSubcategoria, textoBuscar, idCliente);
                        using (WebClient webClient = new WebClient())
                        {
                            prodsMayoristaCache = webClient.DownloadString(urlMayorista);
                            CacheManager.AddToCache(gobalKeyCache, keyItem, prodsMayoristaCache);
                        }
                    }

                    if (prodsMayoristaCache != null)
                    {
                        prodsMayorista = JsonConvert.DeserializeObject <ProductoList>(prodsMayoristaCache);
                        listReturn     = prodsMayorista.Productos;
                        listReturn.ForEach(item => item.StockPropio = false);
                    }
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(string.Format("API Mayorista url: {0} - textoBuscar:{1}", urlMayorista, textoBuscar), ex);
                }
            }
            return(listReturn);
        }
Beispiel #11
0
        //devuelve el pedido con estado INGRESADO del cliente
        //si no existe lo crea
        public Pedido PedidoObtenerClienteIngresado(int idCliente, int numeroPagina, int cantidadRegistros)
        {
            PedidoRepository repository = new PedidoRepository();
            Pedido           pedido     = repository.ObtenerPedidoClienteIngresado(idCliente);

            if (pedido == null)
            {
                pedido = this.PedidoCrear(idCliente);
            }

            pedido.Items = this.PedidoObtenerItems(pedido.Id, numeroPagina, cantidadRegistros);

            ServicioGenerico servGenerico       = new ServicioGenerico();
            string           paramsCompraMinima = servGenerico.ParametroObtenerValor("COMPRA_MINIMA");

            pedido.CompraMinima = paramsCompraMinima.ConvertirDecimal() > 0 ? paramsCompraMinima.ConvertirDecimal() : -1;

            return(pedido);
        }
Beispiel #12
0
        public Producto ProductoObtenerDelMayorista(int codigo)
        {
            ServicioGenerico servicio       = new ServicioGenerico();
            ProductoList     prodsMayorista = null;
            Producto         prodReturn     = null;

            string urlMayorista = servicio.ParametroObtenerValor("URL_MAYORISTA");

            if (!string.IsNullOrEmpty(urlMayorista))
            {
                urlMayorista += string.Format("api/producto/buscar/{0}/true/-1/-1", codigo.ToString());
                using (WebClient webClient = new WebClient())
                {
                    var prodResponse = webClient.DownloadString(urlMayorista);
                    prodsMayorista = JsonConvert.DeserializeObject <ProductoList>(prodResponse);
                    if (prodsMayorista != null)
                    {
                        prodReturn = prodsMayorista.Productos[0];
                    }
                }
            }
            return(prodReturn);
        }
Beispiel #13
0
        public async Task <Pedido> PedidoProveedor(int idPedido)
        {
            ServicioGenerico   servicio      = new ServicioGenerico();
            ServiciosProductos servProductos = new ServiciosProductos();
            string             urlMayorista  = servicio.ParametroObtenerValor("URL_MAYORISTA");
            string             myIdCliente   = servicio.ParametroObtenerValor("TRADING_ID_CLIENTE");

            if (string.IsNullOrEmpty(urlMayorista))
            {
                throw new ApplicationException("No está vinculado ningún proveedor mayorista");
            }

            if (string.IsNullOrEmpty(myIdCliente))
            {
                throw new ApplicationException("No tiene asingdo IdCliente en el proveedor mayorista");
            }

            RepositoryGenerico <Pedido> repository = new RepositoryGenerico <Pedido>();
            Pedido pedido = repository.Obtener(idPedido);

            if (pedido == null)
            {
                throw new ApplicationException("No existe pedido");
            }

            //PEdido se se enviara al proveedor
            PedidoDTO pedidoProveedor = new PedidoDTO();


            pedido.Items = this.Listar <PedidoItem>("IdPedido", idPedido).ToList <PedidoItem>();
            //agregamos los productos de nuestro cliente en al app del mayorista
            pedido.Items
            .FindAll(item => item.Producto.StockPropio == false)
            .ForEach(delegate(PedidoItem item)
            {
                int cantidadProducto = item.Cantidad;

                PedidoItemDTO itemProveedor  = new PedidoItemDTO();
                itemProveedor.Id             = -1;
                itemProveedor.CodigoProducto = item.Producto.Codigo;

                if (item.ItemProductos.Count == 0)
                {
                    itemProveedor.Cantidad      = item.Cantidad;
                    itemProveedor.Observaciones = string.Format("Cant: {0} - Obs: {1}", item.Cantidad, item.Observaciones);
                }
                else
                {
                    item.ItemProductos.ToList <PedidoItemProducto>()
                    .ForEach(delegate(PedidoItemProducto pip)
                    {
                        PedidoItemProductoDTO pipProv = new PedidoItemProductoDTO()
                        {
                            Cantidad = pip.Cantidad,
                            Medida   = pip.Medida
                        };
                        itemProveedor.ItemProductos.Add(pipProv);
                    });
                }
                pedidoProveedor.Items.Add(itemProveedor);
            });

            pedidoProveedor.IdCliente = myIdCliente.ConvertirInt();
            //enviamos el id y numero del pedido para mantener trazabilidad
            pedidoProveedor.IdPedidoMinorista     = pedido.Id;
            pedidoProveedor.NumeroPedidoMinorista = pedido.Numero;

            Pedido nuevoPedidoGenerado = new Pedido();

            using (var httpClient = new HttpClient())
            {
                httpClient.BaseAddress = new Uri(urlMayorista);
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(pedidoProveedor), Encoding.UTF8);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                HttpResponseMessage Res = await httpClient.PostAsync("api/Pedido/Minorista", httpContent);

                if (Res.IsSuccessStatusCode)
                {
                    var pedidoResponse = Res.Content.ReadAsStringAsync().Result;
                    nuevoPedidoGenerado = JsonConvert.DeserializeObject <Pedido>(pedidoResponse);
                }
                else
                {
                    throw new ApplicationException("Error");
                }
            }


            if (nuevoPedidoGenerado.VerificarStock)
            {
                List <PedidoItem> itemsVerificar = nuevoPedidoGenerado.Items.ToList <PedidoItem>();
                pedido.Items.ToList <PedidoItem>()
                .ForEach(delegate(PedidoItem pit)
                {
                    PedidoItem piVerificar = itemsVerificar.Find(x => x.Producto.Codigo == pit.Producto.Codigo);
                    if (piVerificar != null)
                    {
                        List <PedidoItemProducto> pitNuevoPedido = piVerificar.ItemProductos.ToList <PedidoItemProducto>();

                        if (pit.ItemProductos.Count > 0)
                        {
                            pit.ItemProductos.ToList <PedidoItemProducto>()
                            .ForEach(delegate(PedidoItemProducto pip)
                            {
                                pip.StockDisponible = pitNuevoPedido.Find(x => x.Medida.Descripcion == pip.Medida.Descripcion).StockDisponible;
                            });
                        }
                    }
                });
            }
            /**  ATENCION!!!  SI EL PEDIDO VIENE CON VerificarStock  TRUE => NO SE DEBE MODIFICAR EL ESTADO NI LOS NUMEROS DEL PROVEEDRO **/
            //para la trazabilidad, guardo el id y el numero del pedido en el proveedor
            pedido.IdPedidoProveedor     = nuevoPedidoGenerado.Id;
            pedido.NumeroPedidoProveedor = nuevoPedidoGenerado.Numero;
            pedido.Estado = this.ObtenerObjeto <Estado>((int)ESTADOS.PROVEEDOR_);

            repository.Actualizar(pedido);

            return(this.PedidoObtener(pedido.Id));
        }
Beispiel #14
0
        public MensajeResponse PedidoAvanzar(Pedido datosGraba, bool esReenvioPedidoMinorista)
        {
            ServicioGenerico servGenerico = new ServicioGenerico();
            //Actualizamos el pedido
            Pedido pedido = this.PedidoGrabar(datosGraba);

            //Validamos que esté completo
            //string validaciones = pedido.Validar();
            //if (validaciones != string.Empty)
            //    return new MensajeResponse((int)ESTADOS_RESPONSE.ERROR_, validaciones);


            //3ro Actualizamos items modificados en caso que hubiera
            List <PedidoItem> itemsPedido = datosGraba.Items.FindAll(item => item.Modificado).ToList <PedidoItem>();

            if (itemsPedido != null && itemsPedido.Count > 0)
            {
                itemsPedido.ForEach(delegate(PedidoItem item)
                {
                    this.PedidoItemGrabarSinTotalPedido(item);
                });
                pedido = this.PedidoGrabarTotal(pedido.Id);
            }

            string descuentaAlConfirmar = servGenerico.ParametroObtenerValor("DESCONTAR_STCOK_AL_CONFIRMAR");

            PedidoRepository repository = new PedidoRepository();

            pedido = repository.Obtener(pedido.Id);

            //si está todo OK avanzamos el estado y actualizamos el pedido
            Estado proximoEstado = this.ObtenerObjeto <Estado>(pedido.Estado.PorximoEstado);

            switch (proximoEstado.Id)
            {
            case (int)ESTADOS.SOLICITADO_:

                string verificarStock = servGenerico.ParametroObtenerValor("VERIFICAR_STCOK");
                string esMayorista    = servGenerico.ParametroObtenerValor("VENTA_MAYORISTA");


                if ((!string.IsNullOrEmpty(verificarStock) && verificarStock.Equals("SI")) &&
                    (!string.IsNullOrEmpty(esMayorista) && esMayorista.Equals("SI")))
                {
                    pedido.Items = repository.PedidoVerificarStock(pedido.Id);

                    bool stockDisponibleOK = true;
                    pedido.Items.ForEach(delegate(PedidoItem pi)
                    {
                        //hago esta truchada para que si una vez da false no se pise con el true, y no puedo cortar la ejecucion del foreach
                        if (stockDisponibleOK)
                        {
                            stockDisponibleOK = pi.ItemProductos.ToList <PedidoItemProducto>()
                                                .FindAll(x => x.Cantidad > 0 && x.Cantidad != x.StockDisponible).Count == 0;
                        }
                    });

                    if (!stockDisponibleOK)
                    {
                        string verificarStockMsjError = servGenerico.ParametroObtenerValor("VERIFICAR_STCOK_ MSJ_ERROR");
                        return(new MensajeResponse((int)ESTADOS_RESPONSE.ERROR_, (string.IsNullOrEmpty(verificarStockMsjError) ? "Verificar pedido por falta de stock disponible." : verificarStockMsjError)));
                    }
                }

                //se reserva el stock
                if (!string.IsNullOrEmpty(descuentaAlConfirmar) && descuentaAlConfirmar.Equals("SI"))
                {
                    repository.PedidoReservarStock(pedido.Id);
                    CacheManager.RemoveToCache(gobalKeyCache);
                }

                //asignamos Fecha y Número
                Pedido ultimo = repository.ObtenerUltimoPedido();
                pedido.Numero = (ultimo != null) ? (ultimo.Numero + 1) : 1;
                pedido.Fecha  = DateTime.Now;
                pedido.Estado = proximoEstado;

                if (esReenvioPedidoMinorista)
                {
                    pedido.IdPedidoMinorista     = datosGraba.IdPedidoMinorista;
                    pedido.NumeroPedidoMinorista = datosGraba.NumeroPedidoMinorista;
                }

                repository.Actualizar(pedido);

                break;

            case (int)ESTADOS.FINALIZADO_:

                if (!string.IsNullOrEmpty(descuentaAlConfirmar) && descuentaAlConfirmar.Equals("SI"))
                {
                    repository.PedidoDescontarStock(pedido.Id);
                    CacheManager.RemoveToCache(gobalKeyCache);
                }
                pedido.Estado = proximoEstado;
                repository.Actualizar(pedido);

                break;
            }


            return(new MensajeResponse((int)ESTADOS_RESPONSE.OK_, ""));
        }
Beispiel #15
0
        public Producto ProductoGrabar(Producto datoGraba, string carpetaFoto)
        {
            ServicioGenerico   servGenerico = new ServicioGenerico();
            ProductoRepository repository   = new ProductoRepository();
            Producto           dato;

            string pathOrigen = string.Empty;

            if (datoGraba.Id == -1)
            {
                dato = new Producto();
                string codigoAutomatico = servGenerico.ParametroObtenerValor("CODIGO_AUTOMATICO");
                string primerCodigo     = servGenerico.ParametroObtenerValor("PRIMER_CODIGO_AUTOMATICO");

                if (codigoAutomatico != null && codigoAutomatico.Equals("SI"))
                {
                    Producto ultimo = repository.ObtenerUltimoProducto();
                    if (ultimo == null)
                    {
                        dato.Codigo = primerCodigo.ConvertirInt();
                    }
                    else
                    {
                        dato.Codigo = ultimo.Codigo + 1;
                    }
                }
            }
            else
            {
                dato = repository.Obtener(datoGraba.Id);
                if (dato == null)
                {
                    throw new ApplicationException("No existe Producto");
                }
                pathOrigen = dato.Path;
            }


            string url_host = servGenerico.ParametroObtenerValor("URL_HOST");


            if (!string.IsNullOrEmpty(datoGraba.Foto))
            {
                Producto validar = null;
                validar = repository.Obtener("Foto", datoGraba.Foto);
                if (validar != null && validar.Id != datoGraba.Id)
                {
                    throw new ApplicationException("Ya existe un producto con la misma foto");
                }
            }

            dato.Vigente     = true;
            dato.Descripcion = datoGraba.Descripcion;

            dato.Peso       = datoGraba.Peso;
            dato.TipoPrecio = datoGraba.TipoPrecio;

            if (dato.PrecioPorPeso)
            {
                dato.PrecioUnitario = 0;
            }
            else
            {
                dato.PrecioUnitario = datoGraba.PrecioUnitario;
            }

            bool cambioSubcategoria = (dato.Subcategoria != null && dato.Subcategoria.Id != datoGraba.Subcategoria.Id);

            dato.Subcategoria = this.ObtenerObjeto <Subcategoria>(datoGraba.Subcategoria.Id);

            dato.Ubicacion = datoGraba.Ubicacion;

            dato.Foto = datoGraba.Foto;

            if (string.IsNullOrEmpty(dato.FotoLink) && !string.IsNullOrEmpty(dato.Foto))
            {
                dato.FotoLink = string.Format("{0}{1}{2}{3}", url_host, "assets/fotos", dato.Path, dato.Foto);
            }

            dato.ListaPrecio = this.ObtenerObjeto <ListaPrecio>(datoGraba.ListaPrecio.Id);

            //este gtupo orden no puede quedar null, para esos casos va GRUPOS_ORDEN.DEFAULT_ que es 1
            ProductoGrupoOrden gpo = null;

            if (datoGraba.GrupoOrden.Id > 1)
            {
                gpo = this.ObtenerObjeto <ProductoGrupoOrden>(datoGraba.GrupoOrden.Id);
            }
            else
            {
                gpo = this.ObtenerObjeto <ProductoGrupoOrden>((int)GRUPOS_ORDEN.DEFAULT_);
            }

            if (gpo != null)
            {
                dato.GrupoOrden = gpo;
            }

            dato.Stock       = datoGraba.Stock;
            dato.StockPropio = true;

            repository.Actualizar(dato);
            this.ProductoStockGrabar(datoGraba, dato.Id, cambioSubcategoria);

            //if (!string.IsNullOrEmpty(dato.Foto) && pathOrigen != dato.Path)
            //{
            //    string pathRoot = carpetaFoto.Substring(0, carpetaFoto.Length - 1);
            //    string fileOrigen = string.Format("{0}{1}{2}", pathRoot, pathOrigen, dato.Foto);
            //    string fileDestino = string.Format("{0}{1}{2}", pathRoot, dato.Path, dato.Foto);
            //    FileHelper.CopyFile(fileOrigen.Replace(@"/", @"\"), fileDestino.Replace(@"\", @"/"), true);
            //    FileHelper.DeleteFile(fileOrigen);

            //    dato = repository.Obtener(dato.Id);
            //    dato.FotoLink = string.Format("{0}{1}{2}{3}", url_host, "assets/fotos", dato.Path, dato.Foto);
            //    repository.Actualizar(dato);
            //}

            CacheManager.RemoveToCache(gobalKeyCache);

            return(this.ObtenerObjeto <Producto>(dato.Id));
        }
Beispiel #16
0
        public ProductoList ProductoListarCarrito(bool conStock, int idSubcategoria, string textoBuscar, int idCliente, int numeroPagina, int cantidadRegistros)
        {
            ServiciosPedido  servPedido   = new ServiciosPedido();
            ServicioGenerico servGenerico = new ServicioGenerico();

            ProductoRepository repository  = new ProductoRepository();
            List <Producto>    listProds   = new List <Producto>();
            List <PedidoItem>  pedidoItems = new List <PedidoItem>();

            /* MONEDA_VENTA => Se parametriza desde el ABM de Cotizaciones
             * valores posibles
             * * PESO_ARGENTINO
             * * DOLAR_EEUU
             */

            /*Parametros del sistema*/
            string monedaVenta = servGenerico.ParametroObtenerValor("MONEDA_VENTA");
            string url_host    = servGenerico.ParametroObtenerValor("URL_HOST");
            string myIdCliente = servGenerico.ParametroObtenerValor("TRADING_ID_CLIENTE");

            List <ClienteLista> listaCliente = null;

            if (idCliente > 0)
            {
                ServicioClientes servClientes = new ServicioClientes();
                listaCliente = servClientes.ClienteListaObtenerVigentesCache()
                               .Where(item => item.IdCliente == idCliente)
                               .ToList <ClienteLista>();
                //Pedido pedido = servPedido.PedidoObtenerClienteIngresado(idCliente, -1, -1);
            }
            else
            {
                //cuando se muestra el carrito a usuarios no registrados se fuerza PESO_ARGENTINO
                monedaVenta = "PESO_ARGENTINO";
            }

            decimal cotizacionDolar = this.CotizacionDolarVigente().Cotizacion;

            List <Producto> listProdsFull = new List <Producto>();

            if (idSubcategoria != -1)
            {
                //1ro se obtienen y listan los productos del MONORISTA

                if (textoBuscar.Contains("ETIQUETA=NOVEDAD"))
                {
                    listProdsFull.AddRange(this.ProductoObtenerVigentesCache(idSubcategoria)
                                           .FindAll(item => item.Stock > 0 && item.Etiquetas.Contains("NOVEDAD"))
                                           .OrderBy(item => item.Orden)
                                           .ToList <Producto>());
                }
                else
                {
                    List <Producto> listAux = this.ProductoObtenerVigentesCache(idSubcategoria);
                    listProdsFull.AddRange(listAux
                                           .FindAll(item => item.Stock > 0)
                                           .OrderBy(item => item.Orden)
                                           .ToList <Producto>());
                }

                //despues se buscan los del mayorista
                SubcategoriaMerge subcateMerge = this.ObtenerSubcategoriaMerge(idSubcategoria);
                if (subcateMerge != null && subcateMerge.IdSubcategoriaMayorista > 0)
                {
                    idSubcategoria = subcateMerge.IdSubcategoriaMayorista;
                    textoBuscar    = subcateMerge.Etiqueta;
                }
            }
            else
            {
                listProdsFull.AddRange(repository.BuscarProductos(textoBuscar, conStock, true, 1, 100));
            }

            //2ro se obtienen y listan los productos del MAYORISTA
            listProdsFull.AddRange(this.ProductoObtenerDelMayorista(conStock, idSubcategoria, textoBuscar, myIdCliente.ConvertirInt()));

            int totalFilas = listProdsFull.Count;

            bool paginar = (numeroPagina != -1 && cantidadRegistros != -1);

            if (paginar)
            {
                int nro_fila = 1;
                listProdsFull
                .ForEach(delegate(Producto item)
                {
                    item.NroFila = nro_fila;
                    nro_fila++;
                });
                int filaDesde = (numeroPagina - 1) * cantidadRegistros;
                int filaHasta = filaDesde + cantidadRegistros;
                listProds = listProdsFull.FindAll(item => item.NroFila > filaDesde && item.NroFila <= filaHasta);
            }
            else
            {
                listProds = listProdsFull;
            }


            listProds.ForEach(delegate(Producto prod)
            {
                if (prod.StockPropio)
                {
                    prod = ProcesarStockPropio(listaCliente, url_host, prod);
                }
                else
                {
                    prod = ProcesarStockMayorista(idCliente, prod);
                }

                prod.MonedaVenta = monedaVenta == "DOLAR_EEUU" ? "USD" : "$";
                if (monedaVenta != "DOLAR_EEUU")
                {
                    prod.PrecioUnitarioFinal = Decimal.Round(prod.PrecioUnitarioProcesado * cotizacionDolar, 2);
                }
                else
                {
                    prod.PrecioUnitarioFinal = Decimal.Round(prod.PrecioUnitarioProcesado, 2);
                }


                prod.CantidadPedido = 0;
                prod.ProductoPedido = false;
            });

            ProductoList listReturn = new ProductoList();

            listReturn.TotalFilas = totalFilas;
            listReturn.Productos  = listProds;
            return(listReturn);
        }
Beispiel #17
0
        public Cliente ClienteGrabar(Cliente datoGraba)
        {
            RepositoryGenerico <Cliente> repository = new RepositoryGenerico <Cliente>();
            Cliente dato;

            if (datoGraba.Id == -1)
            {
                dato = new Cliente();
            }
            else
            {
                dato = repository.Obtener(datoGraba.Id);
                if (dato == null)
                {
                    throw new ApplicationException("No existe el Cliente");
                }
            }

            if (datoGraba.Rol == null || datoGraba.Rol.Id < 0)
            {
                throw new ApplicationException("Debe indicar Rol del cliente");
            }

            Cliente validar = null;

            validar = repository.Obtener("Email", datoGraba.Email);
            if (validar != null && validar.Id != datoGraba.Id)
            {
                throw new ApplicationException("Ya existe un cliente con el Email ingresado");
            }

            dato.Email    = datoGraba.Email;
            dato.Rol      = this.ObtenerObjeto <Rol>(datoGraba.Rol.Id);
            dato.Clave    = (datoGraba.Clave == null ? "123" : datoGraba.Clave);
            dato.Apellido = datoGraba.Apellido;
            dato.Nombre   = datoGraba.Nombre;
            dato.Celular  = datoGraba.Celular;
            dato.IdentificacionTributaria = datoGraba.IdentificacionTributaria;
            dato.RazonSocial     = datoGraba.RazonSocial;
            dato.NombreFantasia  = datoGraba.NombreFantasia;
            dato.Vigente         = datoGraba.Vigente;
            dato.Direccion       = datoGraba.Direccion;
            dato.Localidad       = datoGraba.Localidad;
            dato.Provincia       = this.ObtenerObjeto <Provincia>(datoGraba.Provincia.Id);
            dato.CodigoPostal    = datoGraba.CodigoPostal;
            dato.SituacionIVA    = this.ObtenerObjeto <SituacionIVA>(datoGraba.SituacionIVA.Id);
            dato.Observaciones   = datoGraba.Observaciones;
            dato.ComisionApp     = datoGraba.ComisionApp;
            dato.DescuentoOculto = datoGraba.DescuentoOculto;

            repository.Actualizar(dato);

            ServicioGenerico servGenerico   = new ServicioGenerico();
            string           listaMayorista = servGenerico.ParametroObtenerValor("LISTA_MAYORISTA");

            string listaMayoristaDefault = string.Empty;

            if (datoGraba.AsignarListaMayorista)
            {
                listaMayoristaDefault = servGenerico.ParametroObtenerValor("LISTA_MAYORISTA_DESCUENTO");
            }
            else
            {
                listaMayoristaDefault = servGenerico.ParametroObtenerValor("LISTA_MAYORISTA_DEFAULT");
            }

            if (!string.IsNullOrEmpty(listaMayoristaDefault) && !string.IsNullOrEmpty(listaMayoristaDefault))
            {
                string[] listasPrecios = listaMayoristaDefault.Split(';');
                for (int i = 0; i < listasPrecios.Length; i++)
                {
                    ClienteLista clienteLista = new ClienteLista();
                    clienteLista.IdCliente = dato.Id;
                    //clienteLista.ListaPrecio = servGenerico.ObtenerObjeto<ListaPrecio>("Codigo", listaMayorista);
                    clienteLista.ListaPrecioCliente = servGenerico.ObtenerObjeto <ListaPrecioCliente>("Codigo", listasPrecios[i]);
                    if (clienteLista.ListaPrecioCliente == null)
                    {
                        throw new ApplicationException(string.Format("Error lista de precio Codigo: {10}", listasPrecios[i]));
                    }
                    clienteLista.ListaPrecio = clienteLista.ListaPrecioCliente.ListaPrecio;

                    if (clienteLista.ListaPrecio != null && clienteLista.ListaPrecioCliente != null)
                    {
                        this.ClienteListaGrabar(clienteLista);
                    }
                }
            }

            return(dato);
        }
Beispiel #18
0
        public ProductoList ProductoListarABM(int idSubcategoria, int tipoListado, int numeroPagina, int cantidadRegistros)
        {
            //este metodo no lee los datos del Cache
            ServicioGenerico servGenerico = new ServicioGenerico();

            ProductoRepository repository = new ProductoRepository();
            List <Producto>    listProds  = new List <Producto>();

            string url_host = servGenerico.ParametroObtenerValor("URL_HOST");


            List <Producto> listProdsFull = new List <Producto>();

            bool paginar = (numeroPagina != -1 && cantidadRegistros != -1);


            switch (tipoListado)
            {
            case 1:
                listProdsFull.AddRange(this.Listar <Producto>("Subcategoria.Id", idSubcategoria).ToList <Producto>());
                break;

            case 2:
                //listar solo productos CON stock
                listProdsFull.AddRange(this.Listar <Producto>("Subcategoria.Id", idSubcategoria).ToList <Producto>()
                                       .FindAll(item => item.Stock > 0).ToList <Producto>());
                break;

            case 3:
                //listar solo productos SIN stock
                listProdsFull.AddRange(this.Listar <Producto>("Subcategoria.Id", idSubcategoria).ToList <Producto>()
                                       .FindAll(item => item.Stock <= 0).ToList <Producto>());
                break;
            }



            int totalFilas = listProdsFull.Count;

            if (paginar)
            {
                int nro_fila = 1;
                listProdsFull.ForEach(delegate(Producto item)
                {
                    item.NroFila = nro_fila;
                    nro_fila++;
                });
                int filaDesde = (numeroPagina - 1) * cantidadRegistros;
                int filaHasta = filaDesde + cantidadRegistros;
                listProds = listProdsFull.FindAll(item => item.NroFila > filaDesde && item.NroFila <= filaHasta);
            }
            else
            {
                listProds = listProdsFull;
            }

            ProductoList listReturn = new ProductoList();

            listReturn.TotalFilas = totalFilas;
            listReturn.Productos  = listProds;
            return(listReturn);
        }