5 using System.Collections.Generic;
6 using System.ComponentModel;
11 namespace sage.ew.serie
17 internal class GeneradorMontajes
24 public BindingList<LinVenDetSeriesMontajes> _Lista
26 get {
return _lisLista; }
27 set { _lisLista = value; }
29 private BindingList<LinVenDetSeriesMontajes> _lisLista;
37 public bool _MontajeMinimoAutomatico
39 get {
return _lMontajeMinimaAutomatica; }
40 set { _lMontajeMinimaAutomatica = value; }
42 private bool _lMontajeMinimaAutomatica;
47 public string _Inicial
50 set { _cIni = value; }
52 private string _cIni =
"";
60 set { _cFin = value; }
62 private string _cFin =
"";
67 public string _Prefijo
69 get {
return _cPrefijo; }
70 set { _cPrefijo = value; }
72 private string _cPrefijo =
"";
77 public bool _FiltrarAlmacen
79 get {
return _lFiltrarAlmacen; }
80 set { _lFiltrarAlmacen = value; }
82 private bool _lFiltrarAlmacen =
true;
84 #endregion Propiedades 94 private int _nRequeridas = 0;
104 private List<string> _ListaExclusiones
108 if (_llisExclusiones == null)
109 _llisExclusiones =
new List<string>();
111 return _llisExclusiones;
113 set { _llisExclusiones = value; }
115 private List<string> _llisExclusiones = null;
118 #region Constructores 126 _oLineaDocumento = toLinea;
129 #endregion Constructores 131 #region Métodos públicos 137 public bool _Montajes_Automaticos()
139 if (!_ComprobacionesInicialesOk())
143 if (_nRequeridas == 0)
return true;
147 string lcArticulo = _oLineaDocumento.
_Articulo.Trim();
150 bool llBaja = (Convert.ToInt32(_oLineaDocumento.
_Unidades) < 0);
153 string lcAlmacen =
string.Empty;
154 if (_FiltrarAlmacen) lcAlmacen = _oLineaDocumento.
_Almacen.Trim();
157 CrearListaExclusiones();
159 #endregion parametros 164 ldtDatos = _oMontaje._Obtener_Montajes(lcArticulo, llBaja, _Inicial, _Final, lcAlmacen, _ListaExclusiones);
166 if (ldtDatos.Rows.Count > 0)
171 foreach (DataRow ldr
in ldtDatos.Rows)
174 int lnIndiceLista = _PrimerElementoVacio();
177 _Lista[lnIndiceLista]._Codigo = ldr[0].ToString();
181 if (_nRequeridas == 0)
break;
193 #endregion Métodos públicos 195 #region Métodos privados 201 private int _PrimerElementoVacio()
203 int lnPrimerElemtoVacio = _Lista.IndexOf(_Lista.First(loObj =>
string.IsNullOrEmpty(loObj._Codigo)));
204 return lnPrimerElemtoVacio;
211 private int _Cuantos_montajes_faltan()
214 int lnRequeridas = _Lista.Count(loObj =>
string.IsNullOrEmpty(loObj._Codigo));
222 private bool _ComprobacionesInicialesOk()
225 if (
string.IsNullOrEmpty(_oLineaDocumento.
_Articulo))
return false;
228 _nRequeridas = _Cuantos_montajes_faltan();
231 if (_nRequeridas == 0)
return true;
234 if (
string.IsNullOrWhiteSpace(_Inicial) && _MontajeMinimoAutomatico)
235 _Inicial = _Lista[_Lista.IndexOf(_Lista.Min())]._Codigo;
243 private void CrearListaExclusiones()
246 foreach (LinVenDetSeriesMontajes ldr
in _Lista)
248 if (!
String.IsNullOrWhiteSpace(ldr._Codigo))
250 _ListaExclusiones.Add(ldr._Codigo.Trim());
255 #endregion Métodos privados
Interficie mínima de las líneas (Mantener lo mas reducida posible)