public static bool AgregarProductosDelRecuperardorAlCarrito(string pSucursal, string[] pArrayNombreProducto, int[] pArrayCantidad, bool[] pArrayOferta)
        {
            bool resultado = false;

            if (System.Web.HttpContext.Current.Session["clientesDefault_Usuario"] != null && System.Web.HttpContext.Current.Session["clientes_pages_Recuperador_Tipo"] != null && System.Web.HttpContext.Current.Session["clientesDefault_Cliente"] != null && System.Web.HttpContext.Current.Session["clientes_pages_Recuperador_CantidadDia"] != null)
            {
                List <cProductosAndCantidad> listaAUX = new List <cProductosAndCantidad>();
                for (int i = 0; i < pArrayNombreProducto.Count(); i++)
                {
                    cProductosAndCantidad obj = new cProductosAndCantidad();
                    obj.cantidad          = pArrayCantidad[i];
                    obj.codProductoNombre = pArrayNombreProducto[i];
                    listaAUX.Add(obj);
                }
                List <cProductosGenerico> listaProductos = WebService.RecuperarTodosProductosDesdeTabla(listaAUX, ((cClientes)System.Web.HttpContext.Current.Session["clientesDefault_Cliente"]).cli_codsuc, ((cClientes)System.Web.HttpContext.Current.Session["clientesDefault_Cliente"]).cli_codprov, ((cClientes)System.Web.HttpContext.Current.Session["clientesDefault_Cliente"]).cli_codigo);
                if (isCAR)
                {
                    List <cProductosAndCantidad> listaProductos_capaCAR = new List <cProductosAndCantidad>();
                    for (int i = 0; i < pArrayNombreProducto.Count(); i++)
                    {
                        cProductosGenerico objProducto = listaProductos.Where(x => x.pro_nombre == pArrayNombreProducto[i]).First();
                        int cantidad        = pArrayCantidad[i];
                        int cantidadAgregar = 0;

                        List <int> cantidadBD         = WebService.RecuperarCantidadProductoEnCarritoYCarritoTransferFacturacionDirecta(((cClientes)System.Web.HttpContext.Current.Session["clientesDefault_Cliente"]).cli_codigo, pSucursal, objProducto.pro_codigo, objProducto.pro_nombre);
                        int        cantidadTotalMasBD = cantidad;
                        if (cantidadBD != null)
                        {
                            cantidadTotalMasBD += cantidadBD[0] + cantidadBD[1];
                        }
                        List <int> listaCantidades = FuncionesPersonalizadas.CargarProductoCantidadDependiendoTransfer(objProducto, cantidadTotalMasBD);

                        cProductosAndCantidad objProductosAndCantidad = new cProductosAndCantidad();
                        objProductosAndCantidad.codProductoNombre            = objProducto.pro_nombre;
                        objProductosAndCantidad.codProducto                  = objProducto.pro_codigo;
                        objProductosAndCantidad.codSucursal                  = pSucursal;
                        objProductosAndCantidad.cantidad                     = listaCantidades[0];
                        objProductosAndCantidad.isTransferFacturacionDirecta = false;
                        listaProductos_capaCAR.Add(objProductosAndCantidad);



                        cProductosAndCantidad objProductosAndCantidad_transfer = new cProductosAndCantidad();
                        objProductosAndCantidad_transfer.codProductoNombre            = objProducto.pro_nombre;
                        objProductosAndCantidad_transfer.codProducto                  = objProducto.pro_codigo;
                        objProductosAndCantidad_transfer.codSucursal                  = pSucursal;
                        objProductosAndCantidad_transfer.cantidad                     = listaCantidades[1];
                        objProductosAndCantidad_transfer.isTransferFacturacionDirecta = true;
                        objProductosAndCantidad_transfer.tde_codtfr                   = objProducto.tde_codtfr;
                        listaProductos_capaCAR.Add(objProductosAndCantidad_transfer);
                        //capaCAR_decision.AgregarProductosTransfersAlCarrito(tempListaProductos, (int)((Usuario)System.Web.HttpContext.Current.Session["clientesDefault_Usuario"]).usu_codCliente, ((Usuario)System.Web.HttpContext.Current.Session["clientesDefault_Usuario"]).id, objProducto.tde_codtfr, pSucursal, Constantes.cTipo_CarritoTransfers);

                        WebService.BorrarPorProductosFaltasProblemasCrediticiosV2(pSucursal, (int)((Usuario)System.Web.HttpContext.Current.Session["clientesDefault_Usuario"]).usu_codCliente, Convert.ToInt32(System.Web.HttpContext.Current.Session["clientes_pages_Recuperador_Tipo"]), objProducto.pro_nombre, Convert.ToInt32(System.Web.HttpContext.Current.Session["clientes_pages_Recuperador_CantidadDia"]), cantidadAgregar);
                    }
                    return(ActualizarProductoCarritoSubirArchivo(listaProductos_capaCAR));
                }
                else
                {
                    for (int i = 0; i < pArrayNombreProducto.Count(); i++)
                    {
                        cProductosGenerico objProducto = listaProductos.Where(x => x.pro_nombre == pArrayNombreProducto[i]).First();
                        int cantidad        = pArrayCantidad[i];
                        int cantidadAgregar = 0;

                        List <int> cantidadBD         = WebService.RecuperarCantidadProductoEnCarritoYCarritoTransferFacturacionDirecta(((cClientes)System.Web.HttpContext.Current.Session["clientesDefault_Cliente"]).cli_codigo, pSucursal, objProducto.pro_codigo, objProducto.pro_nombre);
                        int        cantidadTotalMasBD = cantidad;
                        if (cantidadBD != null)
                        {
                            cantidadTotalMasBD += cantidadBD[0] + cantidadBD[1];
                        }
                        List <int> listaCantidades = FuncionesPersonalizadas.CargarProductoCantidadDependiendoTransfer(objProducto, cantidadTotalMasBD);

                        // Carrito comun
                        WebService.AgregarProductoAlCarritoDesdeRecuperador(pSucursal, objProducto.pro_nombre, listaCantidades[0], (int)((Usuario)System.Web.HttpContext.Current.Session["clientesDefault_Usuario"]).usu_codCliente, ((Usuario)System.Web.HttpContext.Current.Session["clientesDefault_Usuario"]).id);

                        List <cProductosAndCantidad> tempListaProductos      = new List <cProductosAndCantidad>();
                        cProductosAndCantidad        objProductosAndCantidad = new cProductosAndCantidad();
                        objProductosAndCantidad.codProductoNombre = objProducto.pro_nombre;
                        objProductosAndCantidad.cantidad          = listaCantidades[1];
                        tempListaProductos.Add(objProductosAndCantidad);
                        capaCAR_decision.AgregarProductosTransfersAlCarrito(tempListaProductos, (int)((Usuario)System.Web.HttpContext.Current.Session["clientesDefault_Usuario"]).usu_codCliente, ((Usuario)System.Web.HttpContext.Current.Session["clientesDefault_Usuario"]).id, objProducto.tde_codtfr, pSucursal, Constantes.cTipo_CarritoTransfers);

                        WebService.BorrarPorProductosFaltasProblemasCrediticiosV2(pSucursal, (int)((Usuario)System.Web.HttpContext.Current.Session["clientesDefault_Usuario"]).usu_codCliente, Convert.ToInt32(System.Web.HttpContext.Current.Session["clientes_pages_Recuperador_Tipo"]), objProducto.pro_nombre, Convert.ToInt32(System.Web.HttpContext.Current.Session["clientes_pages_Recuperador_CantidadDia"]), cantidadAgregar);
                    }
                    resultado = true;
                }
            }
            return(resultado);
        }
        public static List <cCarrito> RecuperarCarritosPorSucursalYProductos_generica(int pIdCliente, string pTipo)
        {
            if (WebService.VerificarPermisos(WebService.CredencialAutenticacion))
            {
                cClientes objClientes       = WebService.RecuperarClientePorId(pIdCliente);
                DataSet   dsProductoCarrito = new DataSet();
                if (pTipo == Constantes.cTipo_Carrito)
                {
                    dsProductoCarrito = capaCAR.RecuperarCarritosPorSucursalYProductos(pIdCliente);
                }
                else if (pTipo == Constantes.cTipo_CarritoDiferido)
                {
                    dsProductoCarrito = capaCAR.RecuperarCarritosDiferidosPorCliente(pIdCliente);
                }

                List <cCarrito> listaSucursal = (from item in dsProductoCarrito.Tables[1].AsEnumerable()
                                                 select new cCarrito {
                    car_id = item.Field <int>("car_id"), lrc_id = item.Field <int>("car_id"), codSucursal = item.Field <string>("car_codSucursal")
                }).ToList();

                foreach (cCarrito item in listaSucursal)
                {
                    item.proximoHorarioEntrega = FuncionesPersonalizadas.ObtenerHorarioCierre(objClientes.cli_codsuc, item.codSucursal, objClientes.cli_codrep);
                    List <cProductosGenerico> listaProductoCarrtios = new List <cProductosGenerico>();
                    foreach (DataRow itemProductoCarrtio in dsProductoCarrito.Tables[0].Select("cad_codCarrito = " + item.lrc_id))
                    {
                        cProductos         objProducto          = WebService.ConvertToProductos(itemProductoCarrtio);
                        cProductosGenerico objProductosGenerico = new cProductosGenerico(objProducto);
                        if (itemProductoCarrtio.Table.Columns.Contains("stk_stock") && itemProductoCarrtio["stk_stock"] != DBNull.Value)
                        {
                            objProductosGenerico.stk_stock = itemProductoCarrtio["stk_stock"].ToString();
                        }
                        if (itemProductoCarrtio.Table.Columns.Contains("cad_codProducto") && itemProductoCarrtio["cad_codProducto"] != DBNull.Value)
                        {
                            objProductosGenerico.codProducto = itemProductoCarrtio["cad_codProducto"].ToString();
                        }
                        if (itemProductoCarrtio.Table.Columns.Contains("cad_cantidad") && itemProductoCarrtio["cad_cantidad"] != DBNull.Value)
                        {
                            objProductosGenerico.cantidad = Convert.ToInt32(itemProductoCarrtio["cad_cantidad"]);
                        }
                        listaProductoCarrtios.Add(objProductosGenerico);
                    }
                    /// Nuevo
                    List <cTransferDetalle> listaTransferDetalle = null;
                    if (dsProductoCarrito.Tables.Count > 2)
                    {
                        listaTransferDetalle = new List <cTransferDetalle>();
                        DataTable tablaTransferDetalle = dsProductoCarrito.Tables[2];
                        foreach (DataRow itemTransferDetalle in tablaTransferDetalle.Rows)
                        {
                            cTransferDetalle objTransferDetalle = WebService.ConvertToTransferDetalle(itemTransferDetalle);
                            objTransferDetalle.CargarTransfer(WebService.ConvertToTransfer(itemTransferDetalle));
                            listaTransferDetalle.Add(objTransferDetalle);
                        }
                    }
                    /// FIN Nuevo
                    for (int iPrecioFinal = 0; iPrecioFinal < listaProductoCarrtios.Count; iPrecioFinal++)
                    {
                        listaProductoCarrtios[iPrecioFinal].PrecioFinal = FuncionesPersonalizadas.ObtenerPrecioFinal(objClientes, listaProductoCarrtios[iPrecioFinal]);
                        /// Nuevo
                        listaProductoCarrtios[iPrecioFinal].isProductoFacturacionDirecta = false;
                        if (listaTransferDetalle != null)
                        {
                            List <cTransferDetalle> listaAUXtransferDetalle = listaTransferDetalle.Where(x => x.tde_codpro == listaProductoCarrtios[iPrecioFinal].pro_nombre).ToList();
                            if (listaAUXtransferDetalle.Count > 0)
                            {
                                listaProductoCarrtios[iPrecioFinal].isProductoFacturacionDirecta = true;
                                listaProductoCarrtios[iPrecioFinal].CargarTransferYTransferDetalle(listaAUXtransferDetalle[0]);
                                listaProductoCarrtios[iPrecioFinal].PrecioFinalTransfer = FuncionesPersonalizadas.ObtenerPrecioFinalTransferBase(objClientes, listaProductoCarrtios[iPrecioFinal].tfr_deshab, listaProductoCarrtios[iPrecioFinal].tfr_pordesadi, listaProductoCarrtios[iPrecioFinal].pro_neto, listaProductoCarrtios[iPrecioFinal].pro_codtpopro, listaProductoCarrtios[iPrecioFinal].pro_descuentoweb, listaProductoCarrtios[iPrecioFinal].tde_predescuento == null ? 0 : (decimal)listaProductoCarrtios[iPrecioFinal].tde_predescuento, listaProductoCarrtios[iPrecioFinal].tde_PrecioConDescuentoDirecto, listaProductoCarrtios[iPrecioFinal].tde_PorcARestarDelDtoDeCliente);
                            }
                        }
                        /// FIN Nuevo
                    }
                    item.listaProductos = listaProductoCarrtios;
                }
                listaSucursal.RemoveAll(x => x.listaProductos.Count == 0);
                return(listaSucursal);
            }
            // sin no valida la credencial
            return(null);
        }