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); }
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); }
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); }
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); }
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); }
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); }
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); } }
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); }
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); } }
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); }
//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); }
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); }
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)); }
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_, "")); }
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)); }
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); }
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); }
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); }