ListadoBase.cs
4 using sage.ew.botones.Clases;
5 using sage.ew.db;
6 using sage.ew.enumerations;
7 using sage.ew.functions;
8 using sage.ew.global;
9 using sage.ew.interficies;
10 using sage.ew.objetos;
12 using System;
13 using System.Collections.Generic;
14 using System.Data;
15 using System.Linq;
16 using System.Text;
17 using System.Windows.Forms;
18 
19 namespace sage.addons.services.Negocio.Listados
20 {
21  public abstract class ListadoBaseServicios
22  : sage.ew.listados.Clases.Listados
23  {
24 
25  private txtFiltroBase _oFiltroTipo;
26  private TipoServicio _oTipoServicio;
27  protected List<String> _oReportColumns = null;
28 
29  protected bool _UsaSeries = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_series"));
30  protected bool _TrabajaConObras = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_obra"));
31 
35  private FiltroCamposAdicionalesServicios _oCamposAdicionales = null;
36 
40  public override AgrupacionFiltro _AgrupacionFiltroArticulo
41  {
42  get
43  {
44  return AgrupacionFiltro.Agrupado;
45  }
46  }
47 
48  public override Dictionary<string, string> _NavigateButtons
49  {
50  get
51  {
52  return new Dictionary<string, string>() { { "servicio", "Ver Servicio" } };
53  }
54  set
55  {
56  base._NavigateButtons = value;
57  }
58  }
59 
60  protected TipoServicio _TipoServicio
61  {
62  get
63  {
64  return _oTipoServicio;
65  }
66  set
67  {
68  _oTipoServicio = value;
69  }
70  }
71 
72 
76  protected FiltroCamposAdicionalesServicios _CamposAdicionales
77  {
78  get
79  {
80  if (_oCamposAdicionales == null)
81  {
82  _oCamposAdicionales = new FiltroCamposAdicionalesServicios();
83  _oCamposAdicionales._TipoServicio = _TipoServicio?._Codigo;
84  }
85  return _oCamposAdicionales;
86  }
87  }
88 
89  protected override List<IInfoAdicionalListados> _GetInformacionAdicional()
90  {
91  List<IInfoAdicionalListados> loInfo = new List<IInfoAdicionalListados>();
92 
93  loInfo.Add(_CamposAdicionales);
94 
95  return loInfo;
96  }
97 
98  protected override void _OnLoadInfoAdicional(Dictionary<string, object> toFiltros, Dictionary<string, object> toOpciones)
99  {
100  if (toFiltros.ContainsKey("txtTipoServDesdeHasta") && toFiltros["txtTipoServDesdeHasta"] is txtFiltroBase)
101  {
102  ((txtFiltroBase)toFiltros["txtTipoServDesdeHasta"])._Hasta = _oCamposAdicionales._TipoServicio;
103  ((txtFiltroBase)toFiltros["txtTipoServDesdeHasta"])._oFiltroHasta._Codigo = _oCamposAdicionales._TipoServicio;
104  }
105  }
106 
107  public override void _SetDefaultValues(Dictionary<string, object> toControlsFiltros = null, Dictionary<string, object> toControlsOpciones = null)
108  {
109  base._SetDefaultValues(toControlsFiltros, toControlsOpciones);
110 
111  ewcombobox loCombo;
112 
113  if (toControlsOpciones.ContainsKey("cmbSiNoTodoscombo") && toControlsOpciones["cmbSiNoTodoscombo"] is ewcombobox)
114  {
115  loCombo = (ewcombobox)toControlsOpciones["cmbSiNoTodoscombo"];
116  loCombo.SelectedIndex = loCombo.FindString("Todos");
117  }
118 
119  if (toControlsFiltros.ContainsKey("txtTipoServDesdeHasta") && toControlsFiltros["txtTipoServDesdeHasta"] is txtFiltroBase)
120  {
121  if (toControlsOpciones.ContainsKey("btOpcionesDefectoCamposAdic"))
122  {
123  btOpcionesDefectoCamposAdic btCamposAdicionales = (btOpcionesDefectoCamposAdic)toControlsOpciones["btOpcionesDefectoCamposAdic"];
124  btCamposAdicionales._Negocio = _CamposAdicionales;
125  btCamposAdicionales.Text = "Filtro información adicional";
126  btCamposAdicionales._Tooltip = "Filtrar por los campos adicionales del tipo de servicio";
127  btCamposAdicionales.OnClickInvalidate += btCamposAdicionales_OnClickInvalidate;
128  }
129 
130  _oFiltroTipo = (txtFiltroBase)toControlsFiltros["txtTipoServDesdeHasta"];
131  }
132 
133  txtFiltroBase loTxtFiltroBase;
134 
135  //Nombre variables
136  if (toControlsFiltros.ContainsKey("txtEstServ") && toControlsFiltros["txtEstServ"] is txtFiltroBase)
137  {
138  loTxtFiltroBase = (txtFiltroBase)toControlsFiltros["txtEstServ"];
139  loTxtFiltroBase._VariableFiltro = "estserv";
140  }
141 
142  if (toControlsFiltros.ContainsKey("txtGrupTipGas") && toControlsFiltros["txtGrupTipGas"] is txtFiltroBase)
143  {
144  loTxtFiltroBase = (txtFiltroBase)toControlsFiltros["txtGrupTipGas"];
145  loTxtFiltroBase._VariableFiltro = "grupogastos";
146  }
147 
148  if (toControlsFiltros.ContainsKey("txtTipoGastos") && toControlsFiltros["txtTipoGastos"] is txtFiltroBase)
149  {
150  loTxtFiltroBase = (txtFiltroBase)toControlsFiltros["txtTipoGastos"];
151  loTxtFiltroBase._VariableFiltro = "tipogasto";
152  }
153 
154  if (toControlsFiltros.ContainsKey("txtTecnicos") && toControlsFiltros["txtTecnicos"] is txtFiltroBase)
155  {
156  loTxtFiltroBase = (txtFiltroBase)toControlsFiltros["txtTecnicos"];
157  loTxtFiltroBase._VariableFiltro = "tec_in";
158  }
159 
160  if (toControlsFiltros.ContainsKey("txtTecnicos1") && toControlsFiltros["txtTecnicos1"] is txtFiltroBase)
161  {
162  loTxtFiltroBase = (txtFiltroBase)toControlsFiltros["txtTecnicos1"];
163  loTxtFiltroBase._VariableFiltro = "tec_out";
164  }
165 
166  //Ocultar filtros
167  _HideFilters(new List<string>() { "txtArticuloDesdeHasta", "txtMarcaDesdeHasta", "txtFamiliaDesdeHasta", "txtSubfamDesdeHasta" }, toControlsFiltros);
168  }
169 
170  private void _HideFilters(List<String> toListNames, Dictionary<string, object> toControlsFiltros = null)
171  {
172  txtFiltroBase loTxtFiltroBase;
173 
174  if (toControlsFiltros is Dictionary<string, object>)
175  {
176  foreach (String lcName in toListNames)
177  {
178  if (toControlsFiltros.ContainsKey(lcName) && toControlsFiltros[lcName] is txtFiltroBase)
179  {
180  loTxtFiltroBase = (txtFiltroBase)toControlsFiltros[lcName];
181  loTxtFiltroBase.Visible = false;
182  }
183  }
184  }
185  }
186 
187  private void _oFiltroHasta__Codigo_Cambiado()
188  {
189  _CamposAdicionales._TipoServicio = _oFiltroTipo._Hasta;
190  _TipoServicio = new TipoServicio(_oFiltroTipo._Hasta);
191  }
192 
193  private void btCamposAdicionales_OnClickInvalidate(ewbutton toButton, ref bool tlCancel)
194  {
195  if (String.IsNullOrEmpty(_oFiltroTipo._Desde.Trim()))
196  {
197  FUNCTIONS._MessageBox("Para poder filtrar por la información adicional, debe indicar el tipo de servicio.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
198  _oFiltroTipo._Focus();
199  tlCancel = true;
200  }
201  else
202  {
203  _oCamposAdicionales._TipoServicio = _oFiltroTipo._Desde;
204  }
205  }
206 
207  public override bool _Valid()
208  {
209  return base._Valid();
210  }
211 
212 
213  public override void _SetColumnCaptions(Dictionary<string, string> tldTranslate = null)
214  {
215  if (tldTranslate == null) tldTranslate = new Dictionary<string, string>();
216 
217  foreach (var filtroCampoAdicional in _oCamposAdicionales.GetFiltros())
218  {
219  String lcCodigoColumna = filtroCampoAdicional.ObtenerCodigoParaColumna();
220  String lcNombreColumna = filtroCampoAdicional.ObtenerDescripcionParaColumna();
221 
222  if (!tldTranslate.ContainsKey(lcCodigoColumna)) tldTranslate.Add(lcCodigoColumna, lcNombreColumna);
223 
224  }
225  base._SetColumnCaptions(tldTranslate);
226  }
227 
228  protected DataTable _TrataInfoAdicional(DataTable toDt, String tcCodigoTipoServicio, String tcSqlWhere)
229  {
230  // Tratamientos para CAMPOS ADICIONALES
231  if (!String.IsNullOrEmpty(tcCodigoTipoServicio))
232  {
233  _CamposAdicionales._WhereAdicional = tcSqlWhere;
234  _CamposAdicionales._TipoServicio = tcCodigoTipoServicio;
235 
236  toDt = _CamposAdicionales.IncorporarInformacionDeCamposAdicionales(toDt);
237 
238  List<String> loList = _CamposAdicionales.GetCodigosColumnas().ToList();
239 
240  if (_ReportColumns.Count > 0)
241  {
242  loList.ForEach(f => _ReportColumns.Add(f));
243  }
244 
245 
246  foreach (DataColumn loColumn in toDt.Columns)
247  {
248  if(!loList.Contains(loColumn.ColumnName) && !loColumn.ExtendedProperties.ContainsKey("NoBuild"))
249  {
250  loColumn.ExtendedProperties.Add("NoBuild", true);
251  }
252  }
253  }
254 
255  return toDt;
256  }
257 
258 
264  public override void _Navigate(String tcKeyNavigate, DataRow trRow)
265  {
266  TipoServicio loTipoServicio;
267  String lcEmpresa, lcCodigo;
268 
269  if (trRow is DataRow)
270  {
271  lcEmpresa = Convert.ToString(EW_GLOBAL._GetVariable("wc_empresa"));
272 
273  switch (tcKeyNavigate)
274  {
275  case "clientes":
276 
277  lcCodigo = Convert.ToString(trRow["cliente"]).TrimEnd();
278  if (!String.IsNullOrWhiteSpace(lcCodigo)) _Navegar(Pantalla.Clientes, new List<string>() { lcCodigo });
279 
280  break;
281  case "tiposervicio":
282 
283  lcCodigo = Convert.ToString(trRow["tiposerv"]).Trim();
284 
285  if (!String.IsNullOrWhiteSpace(lcCodigo))
286  {
287  loTipoServicio = new TipoServicio(lcCodigo);
288  loTipoServicio._Show();
289  }
290 
291  break;
292  case "servicio":
293 
294  if (!String.IsNullOrEmpty(Convert.ToString(trRow["numero"]).Trim()))
295  {
296  Services loServicio = new Services();
297  loServicio._Empresa = Convert.ToString(trRow["empresa"]).TrimEnd();
298  loServicio._Ejercicio = Convert.ToString(trRow["ejercicio"]).TrimEnd();
299  loServicio._Letra = Convert.ToString(trRow["letra"]).TrimEnd();
300  loServicio._Numero = Convert.ToString(trRow["numero"]).TrimEnd();
301 
302  loServicio._Show();
303  }
304  break;
305  case "albaran":
306 
307  lcCodigo = Convert.ToString(trRow["albaran"]).Trim();
308  if (!String.IsNullOrEmpty(lcCodigo)) _Navegar(Pantalla.AlbaVen, new List<String>() { Convert.ToString(trRow["empresa"]), Convert.ToString(trRow["alb_let"]), lcCodigo, Convert.ToString(trRow["alb_ejer"]) });
309 
310  break;
311  }
312  }
313  }
314 
315 
316  public override DataTable _DataTable()
317  {
318  DataTable loDt = new DataTable();
319  DataTable loDtTmp = new DataTable();
320  String lcSql, lcCodigoTipoServicio;
321 
322  _TipoServicio = null;
323  _oReportColumns = null;
324 
325  lcCodigoTipoServicio = (_Filtros.ContainsKey("tiposervUnico") && !String.IsNullOrEmpty(Convert.ToString(_Filtros["tiposervUnico"]).Trim())) ? Convert.ToString(_Filtros["tiposervUnico"]).Trim() : "";
326 
327  lcSql = _GetSQL();
328 
329  DB.SQLExec(lcSql, ref loDt);
330 
331  loDt = _BeforeInfoAdicional(loDt);
332 
333  //lcSqlWhere = lcSql.Contains("WHERE") ? lcSql.Substring(lcSql.LastIndexOf("WHERE")) : "";
334 
335  loDt = _TrataInfoAdicional(loDt, lcCodigoTipoServicio, "");
336 
337  _TipoServicio = new TipoServicio(lcCodigoTipoServicio);
338  _CamposAdicionales._TipoServicio = lcCodigoTipoServicio;
339 
340  return loDt;
341  }
342 
343  public override void _SetColumnWidth(Dictionary<string, int> tldTranslate = null)
344  {
345  if(tldTranslate == null) tldTranslate = new Dictionary<string, int>();
346 
347  if(!tldTranslate.ContainsKey("servicio")) tldTranslate.Add("servicio", 80);
348  if (!tldTranslate.ContainsKey("estadoserv")) tldTranslate.Add("estadoserv", 60);
349  if (!tldTranslate.ContainsKey("nombreest")) tldTranslate.Add("nombreest", 200);
350  if (!tldTranslate.ContainsKey("fecha")) tldTranslate.Add("fecha", 80);
351  if (!tldTranslate.ContainsKey("cliente")) tldTranslate.Add("cliente", 80);
352  if (!tldTranslate.ContainsKey("nombre")) tldTranslate.Add("nombre", 200);
353  if (!tldTranslate.ContainsKey("direccion")) tldTranslate.Add("direccion", 200);
354  if (!tldTranslate.ContainsKey("poblacion")) tldTranslate.Add("poblacion", 100);
355  if (!tldTranslate.ContainsKey("provincia")) tldTranslate.Add("provincia", 100);
356  if (!tldTranslate.ContainsKey("codpost")) tldTranslate.Add("codpost", 60);
357  if (!tldTranslate.ContainsKey("telefono")) tldTranslate.Add("telefono", 60);
358  if (!tldTranslate.ContainsKey("problemacorto")) tldTranslate.Add("problemacorto", 200);
359  if (!tldTranslate.ContainsKey("fech_previ")) tldTranslate.Add("fech_previ", 80);
360  if (!tldTranslate.ContainsKey("tiposerv")) tldTranslate.Add("tiposerv", 60);
361  if (!tldTranslate.ContainsKey("nombretipo")) tldTranslate.Add("nombretipo", 200);
362 
363  if (_TrabajaConObras)
364  {
365  if (!tldTranslate.ContainsKey("obra")) tldTranslate.Add("obra", 60);
366  if (!tldTranslate.ContainsKey("nombreobra")) tldTranslate.Add("nombreobra", 200);
367  }
368 
369  base._SetColumnWidth(tldTranslate);
370  }
371 
372  protected string _FiltroText(String tcFiltro, String tcCampo)
373  {
374  String lcFiltro = "", lcValue;
375 
376  lcValue = _Opcion_String(tcFiltro).Trim();
377 
378  if(!String.IsNullOrWhiteSpace(lcValue))
379  {
380  lcValue = lcValue.Replace(" ", "%").Replace("'", "''");
381  lcFiltro = String.Format(" AND {1} LIKE '%{0}%' ", lcValue, tcCampo);
382  }
383 
384  return lcFiltro;
385  }
386 
387  public override bool _PrintPersonalize(DataTable tdtDataTableListado)
388  {
389  String lcTitulo;
390 
391  foreach (DataColumn loColum in tdtDataTableListado.Columns)
392  {
393  lcTitulo = loColum.Caption;
394 
395  if (lcTitulo.Length > 0)
396  {
397  // Caption de cada columna
398  if (lcTitulo.Substring(0, 1) == "*") //PE-90882
399  {
400  // Todo en mayusculas
401  lcTitulo = lcTitulo.Substring(1).ToUpper();
402  }
403  else if (lcTitulo.Substring(0, 1) == "@") //PE-92745
404  {
405  // Dejar el título como viene
406  lcTitulo = lcTitulo.Substring(1);
407  }
408  else
409  {
410  lcTitulo = FUNCTIONS._Proper(lcTitulo);
411  }
412  }
413 
414  loColum.Caption = lcTitulo;
415  }
416 
417  return false;
418  }
419 
420  protected virtual DataTable _BeforeInfoAdicional(DataTable toDt)
421  {
422  return toDt;
423  }
424 
425  public abstract string _GetSQL();
426  }
427 
428 }
Plantilla para la creación de controles de tipo Filtro
OnClickInvalidate_Handler OnClickInvalidate
Desencadena el evento
Clase sage.ew.objetos.ewcombobox
override bool _Valid()
Método que se utiliza para validar que los filtros e opciones son correctas Este método actualizará l...
Definition: ListadoBase.cs:207
virtual DataTable _BeforeInfoAdicional(DataTable toDt)
Definition: ListadoBase.cs:420
AgrupacionFiltro
Indica si los filtros de marca/familia/subfamila/articulo se mostrará separados o se creará un agrupa...
Definition: Listados.cs:58
override bool _PrintPersonalize(DataTable tdtDataTableListado)
PE-89372: Método para poder personalizar la impresión del listado pasando otro DataTable y realizando...
Definition: ListadoBase.cs:387
override void _Navigate(String tcKeyNavigate, DataRow trRow)
Añadir navegación al asiento
Definition: ListadoBase.cs:264
string _Tooltip
Tooltip del control para asignar por código
virtual void _Focus(Boolean tbHasta=false)
Establece el foco en uno de los ewtxtcodlabels del control
virtual void _Show()
Muestra el formulario asiociado
Definition: clsEwBase.cs:5021
override DataTable _DataTable()
Método que nos devuelve el resultado del datatable. A partir de las propiedades _Filtros, _Opciones y _Ejercicios se obtendrá el DataTable resultante del listado En caso de error deberá actualizar la propiedad _Error_Message y el DataTable resultante será NULO
Definition: ListadoBase.cs:316
override void _SetColumnCaptions(Dictionary< string, string > tldTranslate=null)
Responsable de la traducción del DataTable de los resultados. Contiene un dicionario con las principa...
Definition: ListadoBase.cs:213
override List< IInfoAdicionalListados > _GetInformacionAdicional()
Devuelve la el listado de objets que tiene información adicional
Definition: ListadoBase.cs:89
override void _OnLoadInfoAdicional(Dictionary< string, object > toFiltros, Dictionary< string, object > toOpciones)
Se ejecuta al cargar información adicional
Definition: ListadoBase.cs:98
DataTable _TrataInfoAdicional(DataTable toDt, String tcCodigoTipoServicio, String tcSqlWhere)
Definition: ListadoBase.cs:228
override void _SetDefaultValues(Dictionary< string, object > toControlsFiltros=null, Dictionary< string, object > toControlsOpciones=null)
Método que se utiliza para establecer los valores por defecto de los controles de los listados...
Definition: ListadoBase.cs:107
Clase base para el módulo services
Definition: SageAddons.cs:102
Base para los botones de Eurowin
Este es el espacio de nombres de su módulo. Puede encontrar más información y ayuda en el fichero rea...
override IEnumerable< FiltroCampoAdicional > GetFiltros()
Obtiene la colección de filtros
override void _SetColumnWidth(Dictionary< string, int > tldTranslate=null)
Especifica el tamaño que tendrá la columan en Pixels para que en el grid no todas las columnas tengan...
Definition: ListadoBase.cs:343
string _FiltroText(String tcFiltro, String tcCampo)
Definition: ListadoBase.cs:372
CamposAdicionalesParaListados _Negocio
Negocio de campos adicionales (clase base)