Skip to content

Instantly share code, notes, and snippets.

@gastonprieto
Created April 7, 2014 23:22
Show Gist options
  • Save gastonprieto/10072862 to your computer and use it in GitHub Desktop.
Save gastonprieto/10072862 to your computer and use it in GitHub Desktop.
long_method
public bool FormLleno
{
get
{
var ret = true;
if (!HayErrores.GetValueOrDefault(false) && TipoMovimientoSeleccionado != null)
{
// No tiene errores y hay tipo de movimiento seleccionado.
var tipoMov = ObtenerTipo(TipoMovimientoSeleccionado).Value;
if (CodigoAjusteSeleccionado == null || CodigoAjusteSeleccionado.Elemento == null) return false;
if (Asociacion)
{
if (PartidasEncontradas == null) return false;
// Se chequea que haya alguna asociación hecha.
if (tipoMov.Equals(TipoMovimiento.DirectoDeposito))
{
ret = ret && _window.PartidasEncontradasDataGrid.SelectedItem != null
&& Deposito.HasValue;
// Dependiendo del código de ajuste valido o no iva.
ret = ret && (!CodigoAjusteSeleccionado.Elemento.validarIva || Iva.HasValue);
}
else if (tipoMov.Equals(TipoMovimiento.DirectoCobranza))
{
ret = ret && _window.PartidasEncontradasDataGrid.SelectedItem != null
&& Cantidad.HasValue && Cobranza.HasValue;
// Dependiendo del código de ajuste valido o no comisión.
ret = ret && (!CodigoAjusteSeleccionado.Elemento.validarComision || Comision.HasValue);
}
else
{
var relacionadas = PartidasParaAsociar();
ret = ret && relacionadas.Any();
foreach (var partidaWrapper in relacionadas)
{
ret = ret && EntradaCompleta(partidaWrapper);
}
}
// Chequeo que la grilla de partidas no tenga campos erróneos.
// Esto debería validarse automáticamente por los bindeos, pero
// no se pudo hacer que los validators de la grilla disparen los
// handlers de errores definidos en la ventana.
var cells = _window.PartidasEncontradasDataGrid.GetCells(ValidarFila);
foreach (var cell in cells)
{
if (cell != null && cell.Column.Visibility.Equals(Visibility.Visible))
{
ret = ret && WPFValidationUtils.IsValid(cell);
}
}
}
else
{
// Chequeo de importes para cuando no hay asociación.
if (EsDeposito(tipoMov))
{
ret = ret && Deposito.HasValue;
if (EsApertura(tipoMov) && !EsConComputoDeInteres)
{
ret = ret && Observacion != null;
}
// Dependiendo del código de ajuste valido o no iva.
ret = ret && (!CodigoAjusteSeleccionado.Elemento.validarIva || Iva.HasValue);
}
else
{
// Movimiento de cobranza.
ret = ret && (Cantidad.HasValue && Cobranza.HasValue);
// Dependiendo del código de ajuste valido o no comisión.
ret = ret && (!CodigoAjusteSeleccionado.Elemento.validarComision || Comision.HasValue);
}
}
// En el caso apertura depósito sin cómputo de interes
// la observación es opcional.
if (tipoMov.Equals(TipoMovimiento.AperturaDeposito) && !EsConComputoDeInteres)
{
ret = ret && Observacion != null;
}
// Si es de apertura tiene que tener fecha de saldo destino.
// Si es de imputación, tiene que tener entidad destino.
if (EsApertura(tipoMov) && !Asociacion)
{
ret = ret && Fecha.HasValue && !Fecha.Value.Equals(_saldo.Content.fecha);
}
else if (EsImputacion(tipoMov))
{
ret = ret
&& MonedaSeleccionada != null;
if (!Asociacion)
{
ret = ret && EntidadSeleccionada != null;
}
// La moneda o la entidad deben ser distintos a la del saldo.
if (EntidadSeleccionada != null)
{
ret = ret &&
!(EntidadSeleccionada.Elemento.codigo.Equals(_saldo.Content.entidad.codigo));
}
if (PreferenciasGlobalesUtils.EsRapipago(_saldo.Content.empresa.codigo))
{
ret = ret && MonedaSeleccionada.codigo.Equals(_saldo.Content.moneda.codigo);
}
}
// Si se marca que se desea crear una partida o escasa sugerida
// tiene que estar el valor especificado.
if (CreoEscasa)
{
ret = ret && ImporteEscasa.HasValue;
}
else if(CreoPartida)
{
ret = ret && ImportePartida.HasValue && ObservacionPartida != null && CodigoPartidaSeleccionado != null;
}
} else
{
ret = false;
}
return ret;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment