MontajeDocVentaSinMontaje.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using sage.ew.serie.Forms;
6 using sage.ew.docventatpv;
7 using sage.ew.ewbase;
8 using System.Data;
9 using sage.ew.interficies;
10 using sage.ew.docsven;
11 
12 namespace sage.ew.serie
13 {
18  {
19  #region Constructores
20 
24  public MontajeDocVentaSinMontaje() : base() { }
25 
31  public MontajeDocVentaSinMontaje(string tcMontaje, IDocumentLinea toDocumentoLin = null) : base(tcMontaje, toDocumentoLin) { }
32 
33  #endregion Constructores
34 
35  #region ILinVenDetOperable
36 
37  //No hay restricciones de momento para esta clase
45  public bool _ObtenerSeriesPermitidas(ref List<string> tlisValidas)
46  {
47  return false;
48  }
49 
59  public bool _ComprobarValor(LinVenDetSeries toLineaSerie, string tcValor, bool tlAbono, IDocumentLinea toLinea, ref string tcMensaje)
60  {
61  bool? lActiva = null;
62 
63  MontajeInfo loInfo = new MontajeInfo(tcValor);
64 
65  if (!loInfo._ValidarArticulo(toLinea))
66  {
67  tcMensaje = String.Format("El montaje introducido no pertenece al artículo de la línea." + Environment.NewLine + "Montaje: {0}", tcValor);
68  return false;
69  }
70 
71  if (!loInfo._ValidarAlmacen(toLinea))
72  {
73  tcMensaje = String.Format("El almacén del modelo no corresponde al almacén del documento. Si desea asignar este modelo a este albarán antes debe realizar un albarán de traspaso." + Environment.NewLine + "Montaje: {0}", tcValor);
74  return false;
75  }
76 
77  // validar si existe
78  lActiva = loInfo._Disponible;
79 
80  //Si tengo montaje y no esta de baja
81  if (lActiva != null) //Existe
82  {
83  if (!tlAbono) //No es un abono, verifico que no esté de baja.
84  {
85  if (lActiva == true) //Esta libre
86  {
87  return true;
88  }
89  else
90  {
91  tcMensaje = "El montaje introducido está dado de baja."; //Montaje de baja
92  return false;
93  }
94  }
95  else //Es un Abono, verifico que no este de alta
96  {
97  if (lActiva == false) //Esta Ocupada
98  {
99  return true;
100  }
101  else
102  {
103  tcMensaje = "El montaje introducido no está dado de baja."; //Montaje de alta
104  return false;
105  }
106  }
107  }
108  else //Montaje inexistente
109  {
110  tcMensaje = "El montaje introducido no existe.";
111  return false;
112  }
113  }
114 
123  public bool _Delete(string tcMontaje, IDocumentLinea toLinea, bool tlAbono, object sender = null)
124  {
125  List<string> llisSeleccionadas = null;
126  bool llOk = false;
127 
128  if (toLinea is ewDocVentaLinPED)
129  {
130  llisSeleccionadas = ((ewDocVentaLinPED)toLinea)._Traspasar_Extensiones as List<string>;
131  }
132  else
133  {
134  if (toLinea is ewDocVentaLinPRESUP)
135  {
136  llisSeleccionadas = ((ewDocVentaLinPRESUP)toLinea)._Traspasar_Extensiones as List<string>;
137  }
138  }
139  if (llisSeleccionadas != null) //Si ha obtenido datos (que debería)
140  llOk = llisSeleccionadas.Remove(tcMontaje); //Elimino. La lista se ha recibido por referéncia por lo que estoy borrando directamente el original
141 
142  return llOk;
143  }
144 
151  public bool _ConsultarDatos(interficies.IDocumentLinea toLinea, ref DataTable tdtDatos)
152  {
153  //Dado que no hay soporte en datos me limito a fa de la lista
154  List<string> llisSeleccionadas = null;
155  bool llOk = true;
156 
157  DataColumn ldcNumero = new DataColumn("NUMERO", typeof(int));
158  DataColumn ldcSerie = new DataColumn("SERIE", typeof(string));
159  tdtDatos.Columns.AddRange(new DataColumn[] { ldcNumero, ldcSerie });
160 
161  //Obtengo la lista con los datos si existe
162  llisSeleccionadas = Obtener_Lista_Extensiones(toLinea);
163 
164  if (llisSeleccionadas != null)
165  {
166 
167  int lnContador = 1;
168  //"SELECT EMPRESA, ALBARAN, PROVEEDOR, SERIE, ARTICULO, LINEA, NUMERO, MODELO, COMPRA"
169  foreach (string lcSerie in llisSeleccionadas)
170  {
171  DataRow ldrNewRow = tdtDatos.NewRow();
172  ldrNewRow["NUMERO"] = lnContador; //Numero
173  ldrNewRow["SERIE"] = lcSerie; //Serie
174 
175  tdtDatos.Rows.Add(ldrNewRow);
176 
177  lnContador++;
178  }
179  }
180 
181  return llOk;
182  }
183 
192  public bool _Save_NullToValue(string tcMontaje, interficies.IDocumentLinea toLinea, object sender = null)
193  {
194  List<string> llisSeleccionadas = null;
195  bool llOk = true;
196 
197  llisSeleccionadas = Obtener_Lista_Extensiones(toLinea);
198 
199  //Añado el nuevo valor
200  if (!llisSeleccionadas.Contains(tcMontaje))
201  llisSeleccionadas.Add(tcMontaje);
202 
203  Actualizar_Lista_Extensiones(toLinea, llisSeleccionadas);
204 
205  return llOk;
206  }
207 
216  public bool _Save_ValueToValue(ewCampo toMontajes, interficies.IDocumentLinea toLinea, object sender = null)
217  {
218  List<string> llisSeleccionadas = null;
219  bool llOk = false;
220 
221  llisSeleccionadas = Obtener_Lista_Extensiones(toLinea);
222 
223  llOk = llisSeleccionadas.Remove(toMontajes._OldVal.ToString()); //Elimino. La lista se ha recibido por referéncia por lo que estoy borrando directamente el original
224  //Añado el nuevo valor
225  if (!llisSeleccionadas.Contains(toMontajes._NewVal.ToString()))
226  llisSeleccionadas.Add(toMontajes._NewVal.ToString());
227 
228  Actualizar_Lista_Extensiones(toLinea, llisSeleccionadas);
229 
230  return llOk;
231  }
232 
241  public bool _Save_ValueToNull(string tcMontaje, interficies.IDocumentLinea toLinea, object sender = null)
242  {
243  //Dado que no hay soporte en datos me limito a eliminar de la lista
244  List<string> llisSeleccionadas = null;
245  bool llOk = false;
246 
247  llisSeleccionadas = Obtener_Lista_Extensiones(toLinea);
248 
249  if (llisSeleccionadas == null) //No hay valores previos
250  llisSeleccionadas = new List<string>();
251 
252  llOk = llisSeleccionadas.Remove(tcMontaje); //Elimino. La lista se ha recibido por referéncia por lo que estoy borrando directamente el original
253 
254  Actualizar_Lista_Extensiones(toLinea, llisSeleccionadas);
255 
256  return llOk;
257  }
258 
265  public bool _Show(object toPadre, interficies.IDocumentLinea toLinea)
266  {
267  //Llamo un nuevo formulario y le paso como parametro el objeto LinVenDet<LinVenDetSeries> recibido.
270 
271  //Propagamos el almacen de destino a la propia linea de destino para su posterior validación
272  if (toLinea is sage.ew.docsven.Docsven.ewDocVentaLin &&
274  {
275  ((sage.ew.docsven.Docsven.ewDocVentaLin)(toLinea)).DocVenta._Cabecera._Almacen =
276  ((sage.ew.docventatpv.LinVenDet<sage.ew.serie.LinVenDetSeriesMontajes>)(toPadre))._AlmacenOperaciones;
277  }
278 
279  //Asignem els montatges a les linies de traspas
280  if (toLinea is ewDocVentaLinPRESUP)
281  {
282  int lni = 0, lnTotal = 0;
283  ewDocVentaLinPRESUP tempLin = ((ewDocVentaLinPRESUP)toLinea);
284  DataTable ldtTemp = new DataTable();
285  decimal lnTraspasar = tempLin._Traspasar_Unidades;
286  if (lnTraspasar == 0)
287  lnTraspasar = tempLin._UnidadesConSerie;
288  //Recuperem els montatges generats
289  tempLin.__Obtener_Detalle(ref ldtTemp);
290  if (ldtTemp.Rows.Count > 0)
291  {
292  foreach (var item in loForm._LinVenDetSeries._lisCodigos)
293  {
294  if (lnTraspasar > lnTotal && ldtTemp.Rows.Count > lnTotal
295  && string.IsNullOrWhiteSpace(ldtTemp.Rows[lni]["VENTA"].ToString())
296  && string.IsNullOrWhiteSpace(ldtTemp.Rows[lni]["DEPOSITO"].ToString()))
297  {
298  loForm._LinVenDetSeries._lisCodigos[lnTotal]._Codigo = ldtTemp.Rows[lni]["SERIE"].ToString();
299  lnTotal++;
300  }
301  lni++;
302  }
303  }
304  }
305 
306  loForm._ShowDialog(); //Bug 114218 Cambiar .ShowDialog() por ._ShowDialog()
307 
308  return true;
309  }
310 
318  public bool _Show(object toPadre, bool tlReadOnly, interficies.IDocumentLinea toLinea)
319  {
320  //Llamo un nuevo formulario y le paso como parametro el objeto LinVenDet<LinVenDetSeriesMontajes> recibido.
322  loFormVenta._ReadOnly = tlReadOnly;
324  //Propagamos el almacen de destino a la propia linea de destino para su posterior validación
325  if (toLinea is sage.ew.docsven.Docsven.ewDocVentaLin &&
327  {
328  ((sage.ew.docsven.Docsven.ewDocVentaLin)(toLinea)).DocVenta._Cabecera._Almacen =
329  ((sage.ew.docventatpv.LinVenDet<sage.ew.serie.LinVenDetSeriesMontajes>)(toPadre))._AlmacenOperaciones;
330  }
331  loFormVenta._ShowDialog(); //Bug 114218 Cambiar .ShowDialog() por ._ShowDialog()
332 
333  return true;
334  }
335 
344  public bool _ActualizarPosicionTabla(string tcMontaje, string tcNumero, interficies.IDocumentLinea toLinea)
345  {
346  //No se almacena en tabla
347  return true;
348  }
349 
350  #endregion ILinVenDetOperable
351 
357  private static void Actualizar_Lista_Extensiones(interficies.IDocumentLinea toLinea, List<string> tlisSeleccionadas)
358  {
359  if (toLinea is ewDocVentaLinPED)
360  {
361  ((ewDocVentaLinPED)toLinea)._Traspasar_Extensiones = tlisSeleccionadas;
362  }
363  else
364  {
365  if (toLinea is ewDocVentaLinPRESUP)
366  ((ewDocVentaLinPRESUP)toLinea)._Traspasar_Extensiones = tlisSeleccionadas;
367  }
368  }
369 
376  private static List<string> Obtener_Lista_Extensiones(interficies.IDocumentLinea toLinea, bool tlCrearSiEsNull = true)
377  {
378  List<string> llisSeleccionadas = null;
379 
380  if (toLinea is ewDocVentaLinPED)
381  {
382  llisSeleccionadas = ((ewDocVentaLinPED)toLinea)._Traspasar_Extensiones as List<string>;
383  }
384  else
385  {
386  if (toLinea is ewDocVentaLinPRESUP)
387  {
388  llisSeleccionadas = ((ewDocVentaLinPRESUP)toLinea)._Traspasar_Extensiones as List<string>;
389  }
390  }
391 
392  if (llisSeleccionadas == null && tlCrearSiEsNull) //No hay valores previos
393  llisSeleccionadas = new List<string>();
394 
395  return llisSeleccionadas;
396  }
397  }
398 }
Formulario para la entrada de series.
Clase linea del presupuesto
Definition: DocsPresup.cs:3366
decimal _Traspasar_Unidades
Unitats a traspassar
Definition: DocsPresup.cs:3576
bool _Disponible
Disponibilidad. Null si no existe
Definition: SerieInfo.cs:33
Clase linea de documento de venta de pedido
Definition: DocsPed.cs:3499
bool _ComprobarValor(LinVenDetSeries toLineaSerie, string tcValor, bool tlAbono, IDocumentLinea toLinea, ref string tcMensaje)
Realiza la validación de un valor como posible codigo
bool _Show(object toPadre, interficies.IDocumentLinea toLinea)
Nos presenta el formulario para visualizar/operar con los montajes
bool _Save_ValueToNull(string tcMontaje, interficies.IDocumentLinea toLinea, object sender=null)
Operaciones de guardado de datos asociados a la línea cuando esta pierde su valor (Hay que tratar los...
bool _ConsultarDatos(interficies.IDocumentLinea toLinea, ref DataTable tdtDatos)
Operaciones de carga de datos asociados a la línea (GESTION.VENSER)
bool _ActualizarPosicionTabla(string tcMontaje, string tcNumero, interficies.IDocumentLinea toLinea)
Establece el valor de NUMERO (posición en la lista) para el montaje dado Específico para uso interno ...
bool _ValidarAlmacen(IDocumentLinea toLinea)
Método para validar que el almacén de la línea con el obtenido de la serie sean el mismo ...
Definition: SerieInfo.cs:166
Interficie mínima de las líneas (Mantener lo mas reducida posible)
Definition: IDocument.cs:186
Classe campo para las entidades, que permitirá comprobar si se ha cambiado su valor ...
Definition: clsEwBase.cs:676
Clase para controlar toda la gestion de venta de una serie de artículo
object _OldVal
Valor viejo
Definition: clsEwBase.cs:727
Interficie para representar aquellas operciones que han de implementar las clases para poder usar Lin...
LinVenDet< LinVenDetSeriesMontajes > _LinVenDetSeries
Declaro objeto de tipo LinVenDet de series para vincular con la clase.
Clase para controlar toda la gestion de venta de un montaje
Clase especifica para montajes (deriva de Serie)
Definition: Montaje.cs:18
bool _Save_ValueToValue(ewCampo toMontajes, interficies.IDocumentLinea toLinea, object sender=null)
Operaciones de guardado de datos asociados a la línea cuando esta modifica su valor (Hay que tratar v...
Clase derivada de Montaje específica para Venta de montajes
MontajeDocVentaSinMontaje(string tcMontaje, IDocumentLinea toDocumentoLin=null)
Constructor con parámetros (utiliza el constructor base)
Classe base dels documents.
Definition: DocsVen.cs:684
override int _UnidadesConSerie
Indica el número de series / montajes asociado a la línea
Definition: DocsPresup.cs:3656
object _NewVal
Valor nuevo
Definition: clsEwBase.cs:712
MontajeDocVentaSinMontaje()
Constructor de la clase MontajeDocVentaSinMontaje
bool _Delete(string tcMontaje, IDocumentLinea toLinea, bool tlAbono, object sender=null)
Operaciones de borrado
Montajes : Auxiliary class for validadation and single query purposes
Definition: Montaje.cs:995
bool _ObtenerSeriesPermitidas(ref List< string > tlisValidas)
Método pensado para obtener una lista de valores que serán los únicos admitidos por las operaciones E...
bool _ValidarArticulo(IDocumentLinea toLinea)
Método para validar que el artículo de la línea con el obtenido de la serie sean el mismo ...
Definition: SerieInfo.cs:144
bool _Show(object toPadre, bool tlReadOnly, interficies.IDocumentLinea toLinea)
Nos presenta el formulario para visualizar/operar con los montajes
bool _Save_NullToValue(string tcMontaje, interficies.IDocumentLinea toLinea, object sender=null)
Operaciones de guardado de datos asociados a la línea cuando esta adquiere su valor (No hay que trata...
Clase que gestiona las series/lotes asignados a una linea de un documento de venta ...
Definition: LinVenDet.cs:534