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