2 using System.Collections.Generic;
8 namespace sage.ew.contabilidad
13 internal class AsientoPredefinidoEjecutado
17 private readonly AsientosPredefinidosGenerador generadorPredefinidos;
18 private readonly IEnumerable<AsientoPredefinido.LineaAsientoPredefinido> lineasPredefinido;
19 private readonly
IAsientos asientoGenerado;
29 private AsientoPredefinidoEjecutado() { }
37 public AsientoPredefinidoEjecutado(AsientosPredefinidosGenerador toGenerador, IEnumerable<AsientoPredefinido.LineaAsientoPredefinido> toLineas,
IAsientos toAsiento)
39 lineasPredefinido = toLineas;
40 asientoGenerado = toAsiento;
41 generadorPredefinidos = toGenerador;
46 #endregion Constructores 48 #region Métodos públicos 56 public AsientosPredefinidosGenerador GetGenerador()
58 return generadorPredefinidos;
67 return asientoGenerado;
74 public IEnumerable<AsientoPredefinido.LineaAsientoPredefinido> GetLineas()
76 return lineasPredefinido;
85 return tipoAsientoPrevisto;
94 public bool EsFactura()
96 return generadorPredefinidos._DebeContenerInformacionDeFactura(lineasPredefinido);
103 public bool EsFacturaDeVenta()
105 return generadorPredefinidos._EsFacturaVenta(lineasPredefinido);
112 public bool EsFacturaDeCompra()
114 return generadorPredefinidos._EsFacturaCompra(lineasPredefinido);
121 public bool EsUnCobro()
130 public bool EsUnPago()
139 public bool EsUnCobroConRelaciones()
142 bool relaciones = ContieneRelaciones();
143 return (cobro && relaciones);
150 public bool EsUnPagoConRelaciones()
153 bool relaciones = ContieneRelaciones();
154 return (pago && relaciones);
161 public bool ContieneBancos()
163 var lineasDeBancos = lineasPredefinido.Where(lolinea => CONTABILIDAD._EsBanco(lolinea._Cuenta)).ToList();
164 return lineasDeBancos.Any();
171 public bool ContieneTesoreria()
173 var lineasDeCajas = lineasPredefinido.Where(lolinea => CONTABILIDAD._EsTesoreria(lolinea._Cuenta)).ToList();
174 return lineasDeCajas.Any();
181 public bool ContieneClientes()
183 var lineasDeClientes = lineasPredefinido.Where(lolinea => CONTABILIDAD._EsCliente(lolinea._Cuenta)).ToList();
184 return lineasDeClientes.Any();
191 public bool ContieneProveedores()
193 var lineasDeProveedores = lineasPredefinido.Where(lolinea => CONTABILIDAD._EsProveedor(lolinea._Cuenta)).ToList();
194 return lineasDeProveedores.Any();
201 public bool ContieneTrabajadores()
203 var lineasDeTrabajadores = lineasPredefinido.Where(lolinea => CONTABILIDAD._EsTrabajador(lolinea._Cuenta)).ToList();
204 return lineasDeTrabajadores.Any();
211 public bool ContieneRelaciones()
213 return lineasPredefinido.Any(lolinea => !
String.IsNullOrWhiteSpace(lolinea._Relacion));
220 public IEnumerable<string> ObtenerRelaciones()
222 List<string> lisRelaciones =
new List<string>();
223 var lineasConRelaciones = lineasPredefinido.Where(lolinea => !
String.IsNullOrWhiteSpace(lolinea._Relacion)).ToList();
224 lineasConRelaciones.ForEach(loLinea => lisRelaciones.Add(loLinea._Relacion));
225 return lisRelaciones;
228 #endregion Métodos públicos 230 #region Métodos privados 235 private void evaluarTipoAsiento()
237 if (asientoGenerado == null)
241 if (generadorPredefinidos._DebeContenerInformacionDeFactura(lineasPredefinido))
243 evaluarTipoAsiento_Facturas();
247 if (ContieneTesoreria())
249 evaluarTipoAsiento_CobrosPagos();
261 private void evaluarTipoAsiento_Facturas()
263 bool esFacturaVenta = EsFacturaDeVenta();
264 bool esFacturaCompra = EsFacturaDeCompra();
266 if (esFacturaVenta && esFacturaCompra)
283 private void evaluarTipoAsiento_CobrosPagos()
285 bool tieneClientes = ContieneClientes();
286 bool tieneProveedores = ContieneProveedores() || ContieneTrabajadores();
288 if (tieneClientes && tieneProveedores)
297 if (tieneProveedores)
302 #endregion Métodos privados
eTipoAsientoPredefinidoPrevisto
Tipos de asiento que se puede generar