public void SearchValoresDisponibles()
        {
            this._valoresDisponibles.Clear();
            this._valores.Clear();
            _responsableCajaOrigen = tfi_InstanciasCaja.GetResponsableXInstanciaDeCaja(_idInstanciaDeCajaOrigen);
            //DataTable table = tfi_InstanciasCaja.GetListXInstanciaAnterior(_idInstanciaDeCajaOrigen);
            DataTable table = tfi_InstanciasCaja.GetListXInstancia(_idInstanciaDeCajaOrigen);

            foreach (DataRow row in table.Rows)
            {
                DetalleValorMovimiento vm = new DetalleValorMovimiento();
                vm.IdValor            = row["IdValor"].ToString();
                vm.ValorOrigen        = Convert.ToDecimal(row["Valor"]);
                vm.ValorDestino       = Convert.ToDecimal(row["Valor"]);
                vm.IdTDCompTesoreria  = row["IdTDCompTesoreria"].ToString();
                vm.Agrupado           = Convert.ToBoolean(row["Agrupado"]);
                vm.Descripcion        = row["Descripcion"].ToString();
                vm.Numero             = row["Numero"].ToString();
                vm.FechaVencimiento   = Convert.ToDateTime(row["FechaVencimiento"]);
                vm.Entidad            = row["Entidad"].ToString();
                vm.Moneda             = row["Moneda"].ToString();
                vm.IdMoneda           = row["IdMoneda"].ToString();
                vm.IdCotizacionMoneda = row["IdCotizacionMoneda"].ToString();

                if (_agrupaValores)
                {
                    if (vm.Agrupado == true)
                    {
                        DetalleValorMovimiento vmDisp = GetValorDisponible(vm.Moneda, vm.IdTDCompTesoreria);
                        if (vmDisp == null)                         //Significa que es el primer valor agrupado disponible
                        {
                            this._valoresDisponibles.Add(vm);
                        }
                        else
                        {
                            ArrayList ar = Util.Parse(vmDisp.IdValor, ",");
                            if (!ar.Contains(vm.IdValor))
                            {
                                vmDisp.ValorOrigen  = vmDisp.ValorOrigen + vm.ValorOrigen;
                                vmDisp.ValorDestino = vmDisp.ValorOrigen;
                                vmDisp.IdValor      = vmDisp.IdValor + "," + vm.IdValor;
                            }
                        }
                    }
                    else
                    {
                        this._valoresDisponibles.Add(vm);
                    }
                }
                else
                {
                    this._valoresDisponibles.Add(vm);
                }

                //this._valores.Add(vm.ShallowClone()); //En este objeto nunca agrupo tengo todos los valores (para sacar los totales individuales) cuando haga commit
            }
        }
        public void Transferir(int indexOrigen)
        {
            DetalleValorMovimiento vm = (DetalleValorMovimiento)_valoresDisponibles[indexOrigen];

            if (this._valoresATransferir.IndexOf(vm.IdValor) == -1)
            {
                if (vm.ValorOrigen != vm.ValorDestino && !vm.Agrupado)
                {
                    vm.ValorDestino = vm.ValorOrigen;
                }
                vm.Enabled = false;
                this._valoresATransferir.Add(vm);
            }
        }
 public int Add(DetalleValorMovimiento item)
 {
     return(base.Add(item));
 }