2 using System.Collections.Generic;
5 using System.ComponentModel;
12 using System.Drawing.Design;
13 using System.Windows.Forms.Design;
14 using System.Windows.Forms;
19 using System.Globalization;
31 [DefaultPropertyAttribute(
"_Titulo")]
37 private String _cTituloOriginal =
"";
38 private String _cTituloNavegacion =
"";
39 private String _cMante =
"";
40 private String _cType =
"";
41 private Int32 _nWidth = 100;
42 private Int32 _nUserWidth = 100;
43 private Int32 _nPosicion;
44 private Int32 _nTipoCampo = 0;
45 private Boolean _lIncluirSageReports =
true;
46 private Boolean _lIncluirCSV =
true;
47 private Boolean _lPermitirNavegacion =
false;
48 private Boolean _bVisible =
true;
49 private Boolean _bInmobilizada =
false;
50 private Boolean _bIncluirComunicados =
true;
51 private Boolean _bOculta =
false;
53 private Color _oColorLetra = Color.Black;
54 private Color _oColorFondo = Color.White;
56 private Dictionary<String, ColumnDefinition> _oColumnsList;
59 private List<IListadoComunicado> _oComunicados =
new List<IListadoComunicado>();
61 private static List<Type> _oTypesComunicados;
75 [Description(
"Ninguna")]
80 [Description(
"Porcentaje")]
85 [Description(
"Total")]
90 [Description(
"Gran total")]
100 [Description(
"Unidades")]
105 [Description(
"Cajas")]
110 [Description(
"Precio/Coste")]
122 [Description(
"Ninguna")]
127 [Description(
"Contador")]
132 [Description(
"Media")]
137 [Description(
"Mínimo")]
142 [Description(
"Máximo")]
147 [Description(
"Suma")]
169 private static List<Type> _TypesComunicados
173 if ( _oTypesComunicados == null)
184 _oTypesComunicados.AddRange(loModulo.
_Assembly.GetTypes().Where(f => typeof(
IListadoComunicado).IsAssignableFrom(f) && !f.IsAbstract).ToList());
186 catch (Exception loEx)
188 DB.Registrar_Error(loEx);
194 return _oTypesComunicados;
202 public bool _ColumnAdded
214 public Boolean _Oculta
236 public List<IListadoComunicado> _Comunicados
240 return _oComunicados;
247 [
ComunicadoAttribute, CategoryAttribute(
"Propiedades de la columna"), DisplayName(
"Comunicados"), Description(
"Incluir los comunicados de la columna al listado"), DefaultValueAttribute(1)]
248 [Editor(typeof(
EnumEditor), typeof(UITypeEditor))]
250 public Activo _IncluirComunicados
258 _bIncluirComunicados = (value ==
Activo.Si);
266 public Boolean _Inmobilizada
270 return _bInmobilizada;
274 _bInmobilizada = value;
281 [CategoryAttribute(
"Propiedades de la columna"), DisplayName(
"Título"), Description(
"Título de la columna")]
282 [RefreshProperties(RefreshProperties.All)]
283 public override String _Titulo
291 _cTituloOriginal = value;
292 if (value.Length > 0)
294 if (value.Substring(0, 1) ==
"*")
296 value = value.Substring(1).ToUpper();
298 else if (value.Substring(0, 1) ==
"@")
300 value = value.Substring(1);
304 value = FUNCTIONS._Proper(value);
307 base._Titulo = value;
314 [CategoryAttribute(
"Propiedades de la columna"), DisplayName(
"Tamaño"), Description(
"Tamaño de la columna"), DefaultValueAttribute(100)]
315 [RefreshProperties(RefreshProperties.All)]
332 public Int32 _UserWidth
348 [
NumericAttribute, CategoryAttribute(
"Propiedades de la columna"), DisplayName(
"Máscara"), Description(
"Máscara"), DefaultValueAttribute(3)]
349 [RefreshProperties(RefreshProperties.All)]
350 [Editor(typeof(
EnumEditor), typeof(UITypeEditor))]
352 public TipoMascara _Mascara
356 return _IsNumeric ? _oMascara :
TipoMascara.Ninguna;
368 public override List<ColumnDefEntidad> _ListPath
372 return base._ListPath;
376 base._ListPath = value;
377 _ActualizarComunicados();
385 [
NumericAttribute, CategoryAttribute(
"Propiedades de la columna"), DisplayName(
"Totalizar"), Description(
"Acción a realizar"), DefaultValueAttribute(0)]
386 [RefreshProperties(RefreshProperties.All)]
387 [Editor(typeof(
EnumEditor), typeof(UITypeEditor))]
389 public Accion _Accion
404 [
EnumerationDefinitionAttribute, CategoryAttribute(
"Propiedades de la columna"), DisplayName(
"Valores"), Description(
"Valores de la columna"), DefaultValueAttribute(0)]
405 [RefreshProperties(RefreshProperties.All)]
412 if (_oDefinicionValores == null) _oDefinicionValores =
new EmptyDefinition(
this);
413 return _oDefinicionValores;
417 _oDefinicionValores = value;
451 [
ManteAttribute, CategoryAttribute(
"Navegación"), DisplayName(
"Permitir"), Description(
"Permitir la navegabilidad"), DefaultValueAttribute(0)]
452 [RefreshProperties(RefreshProperties.All)]
453 [Editor(typeof(
EnumEditor), typeof(UITypeEditor))]
455 public Activo _PermitirNavegacion
463 _lPermitirNavegacion = (value ==
Activo.Si);
464 _SetReadOnlyProperty(
"_TituloNavegacion", !_lPermitirNavegacion);
471 [CategoryAttribute(
"Sage Reports"), DisplayName(
"Añadir"), Description(
"Si se establece el valor a \"Sí\", al editar un report la columna se añadirá automáticamente al documento"), DefaultValueAttribute(1)]
472 [RefreshProperties(RefreshProperties.All)]
473 [Editor(typeof(
EnumEditor), typeof(UITypeEditor))]
475 public Activo _IncluirSageReports
483 _lIncluirSageReports = (value ==
Activo.Si);
490 [CategoryAttribute(
"Sage Reports"), DisplayName(
"Fichero CSV"), Description(
"Si se establece el valor a \"Sí\", el campo se incluirá en la exportación a CSV aunque no este definido en el report"), DefaultValueAttribute(1)]
491 [RefreshProperties(RefreshProperties.All)]
492 [Editor(typeof(
EnumEditor), typeof(UITypeEditor))]
494 public Activo _IncluirExportacionCSV
502 _lIncluirCSV = (value ==
Activo.Si);
510 public Boolean _PermiteNavegacion
514 return _lPermitirNavegacion;
522 public Boolean _PermiteGoogleMaps
526 return _NTipoCampo > 0;
534 public Boolean _IncluidoSageReports
538 return _lIncluirSageReports;
546 public Boolean _IncluidoCSV
558 public Boolean _ColorsChanged
562 return _oColorFondo.ToArgb() != Color.White.ToArgb() || _ColorLetra.ToArgb() != Color.Black.ToArgb();
569 [
ManteAttribute, CategoryAttribute(
"Navegación"), DisplayName(
"Título"), Description(
"Título del botón de navegación")]
570 [RefreshProperties(RefreshProperties.All)]
572 public String _TituloNavegacion
576 return _cTituloNavegacion;
580 _cTituloNavegacion = value;
588 [CategoryAttribute(
"Posición"), DisplayName(
"Posición"), Description(
"Posición de la columna ")]
589 [RefreshProperties(RefreshProperties.All)]
591 public Int32 _Posicion
622 [CategoryAttribute(
"Diseño"), DisplayName(
"Color de fondo"), Description(
"Color de fondo"), DefaultValue(typeof(Color),
"White")]
623 [RefreshProperties(RefreshProperties.All)]
624 public Color _ColorFondo
632 _oColorFondo = value;
639 [CategoryAttribute(
"Diseño"), DisplayName(
"Color de la letra"), Description(
"Colorde la letra"), DefaultValue(typeof(Color),
"Black")]
640 [RefreshProperties(RefreshProperties.All)]
641 public Color _ColorLetra
649 _oColorLetra = value;
650 _DefinicionValores._DefaultColor = _oColorLetra;
657 [
GoogleMapsAttribute, CategoryAttribute(
"Google maps"), DisplayName(
"Presentar"), Description(
"Permitir la navegación a google maps"), DefaultValueAttribute(0)]
658 [RefreshProperties(RefreshProperties.All)]
659 [Editor(typeof(
EnumEditor), typeof(UITypeEditor))]
661 public Activo _GoogleMaps
665 return _GoogleMapsConfig._Activo ?
Activo.Si :
Activo.No;
669 _GoogleMapsConfig._Activo = value ==
Activo.Si;
670 _SetReadOnlyProperty(
"_GoogleMapsConfig", !_GoogleMapsConfig._Activo);
677 [
GoogleMapsAttribute, CategoryAttribute(
"Google maps"), DisplayName(
"Columnas"), Description(
"Selecciona las columnas de navegación a google maps")]
678 [RefreshProperties(RefreshProperties.All)]
686 if (_oGoogleMapsConfig == null) _oGoogleMapsConfig =
new GoogleMapsConfig();
688 return _oGoogleMapsConfig;
692 _oGoogleMapsConfig = value;
708 _NTipoCampo = Convert.ToInt32(value);
716 public Int32 _NTipoCampo
732 public Boolean _IsNumeric
736 return _Type ==
"numerico";
744 public Boolean _IsMemo
748 return _Type ==
"memo";
756 public Boolean _IsBoolean
760 return _Type ==
"logico";
768 if (String.IsNullOrEmpty(_cType) && _DefEntidad is
IDefEntidad)
770 _cType = DB.SQLTipoCampo(_DefEntidad._DB, _DefEntidad._Tabla, _DefEntidad._Campo);
772 if (_cType ==
"caracter")
774 String lcTipoTmp = DB._TablesInformationSchema(_DefEntidad._DB, _DefEntidad._Tabla)._TipoCampo(_DefEntidad._Campo);
775 if (lcTipoTmp ==
"text" || lcTipoTmp ==
"ntext") _cType =
"memo";
787 public Boolean _IsDate
791 if (String.IsNullOrEmpty(_cType) && _DefEntidad is
IDefEntidad) _cType = DB.SQLTipoCampo(_DefEntidad._DB, _DefEntidad._Tabla, _DefEntidad._Campo);
793 return _cType ==
"fecha";
801 public Dictionary<String, ColumnDefinition> _ColumnsList
805 return _oColumnsList;
809 _oColumnsList = value;
817 public Boolean _Visible
833 public String _Entidad
837 return _GetCodigo(_ListPath, 1);
847 public static String
_GetCodigo(List<ColumnDefEntidad> loList, Int32 lnPosMax)
849 if (lnPosMax < 0) lnPosMax = 0;
850 if (loList.Count < lnPosMax) lnPosMax = loList.Count;
852 List<String> loCodigos = (from loDef in loList.GetRange(0, lnPosMax)
853 select loDef._Codigo).ToList();
856 return loCodigos.Count > 0 ? loCodigos.Aggregate((a, b) => a +
"_" + b) :
"";
859 #endregion propiedades 861 private void _SetReadOnlyProperty(
string tcPropertyName,
bool tlValue)
863 PropertyDescriptor propDescr = TypeDescriptor.GetProperties(this.GetType())[tcPropertyName];
864 ReadOnlyAttribute attr = propDescr.Attributes[typeof(ReadOnlyAttribute)] as ReadOnlyAttribute;
868 FieldInfo aField = attr.GetType().GetField(
"isReadOnly",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
869 aField.SetValue(attr, tlValue);
878 _SetReadOnlyProperty(
"_GoogleMapsConfig", !_GoogleMapsConfig._Activo);
879 _SetReadOnlyProperty(
"_TituloNavegacion", !_lPermitirNavegacion);
888 String lcMascara =
"";
919 lcMascara =
"dd/MM/yyyy";
930 return _ListPath.Count - 1 > 0 ? _GetCodigo(_ListPath, _ListPath.Count - 1) : _Codigo;
941 else if(_IsNumeric && !String.IsNullOrEmpty(tcValores))
943 loDef =
new NumericDefinition(
this, tcValores);
947 loDef =
new EmptyDefinition(
this);
953 private DefinicionValores _GetDefinicionValores(XElement toValores)
955 DefinicionValores loDef = null;
959 if(toValores is XElement)
961 loDef =
new BooleanDefinition(
this, toValores);
965 loDef =
new BooleanDefinition(
this);
968 else if (_IsNumeric && toValores is XElement)
970 loDef =
new NumericDefinition(
this, toValores);
974 loDef =
new EmptyDefinition(
this);
987 String lcCampoParseado;
989 if (!String.IsNullOrEmpty(tcAlias) && !tcAlias.Trim().EndsWith(
".")) tcAlias = String.Format(
"{0}.", tcAlias.Trim());
990 lcCampoParseado = String.Format(
"{0}{1}", tcAlias, _DefEntidad._Campo);
992 if (_DefinicionValores._Count > 0)
994 lcCampoParseado = _DefinicionValores._ToSQL(lcCampoParseado);
998 lcCampoParseado = $
"CAST({lcCampoParseado} as varchar(254))";
1000 else if(_DefEntidad._Campo ==
"FECHABAJA" && _DefEntidad._Tabla ==
"ARTICULO")
1002 lcCampoParseado = DB.SQLIif($
"{tcAlias}BAJA = 1", $
"{tcAlias}FECHABAJA",
"NULL");
1005 return $
"{lcCampoParseado} as '{_Codigo}'";
1034 : base(toRow, tlInicial)
1036 _Mante = Convert.ToString(toRow[
"MANTE"]).Trim();
1037 _NTipoCampo = Convert.ToInt32(toRow[
"GOOGLE"]);
1039 _oDefinicionValores = _GetDefinicionValores(Convert.ToString(toRow[
"VALORES"]).Trim());
1040 _oComunicados = _GetComunicados(Convert.ToString(toRow[
"COMUNICADOS"]).Trim());
1043 _ActualizarComunicados();
1047 private List<IListadoComunicado> _GetComunicados(
string tcComunicados)
1049 List<string> loClasses;
1050 List<IListadoComunicado> loComunidados =
new List<IListadoComunicado>();
1052 if (!
string.IsNullOrEmpty(tcComunicados))
1054 loClasses = tcComunicados.Split(
new char[] {
',',
';' }).ToList();
1055 loComunidados = _GetComunicadosByType(loClasses);
1058 return loComunidados;
1070 List<IListadoComunicado> loComunidados =
new List<IListadoComunicado>();
1072 loTypes = (toClasses == null || toClasses.Count == 0) ? _TypesComunicados : _TypesComunicados.Where(f => toClasses.Contains(f.FullName,
new StringComparerToLower())).ToList();
1074 loTypes.ForEach(f =>
1078 loObjeto = Activator.CreateInstance(f);
1081 catch (Exception ex)
1083 DB.Registrar_Error(ex);
1087 return loComunidados;
1091 private void _ActualizarComunicados()
1093 _oComunicados.ForEach(f => f._KeyCampoListado = _Codigo);
1106 _Nombre = toElement.Element(
"Nombre").Value;
1107 _Titulo = toElement.Element(
"Caption") != null ? toElement.Element(
"Caption").Value : _Nombre;
1108 _Width = Convert.ToInt32(toElement.Element(
"Ancho").Value);
1109 _UserWidth = toElement.Element(
"AnchoVisible") is XElement ? Convert.ToInt32(toElement.Element(
"AnchoVisible").Value) : _Width;
1110 _Posicion = Convert.ToInt32(toElement.Element(
"DisplayIndex").Value);
1111 _Visible = toElement.Element(
"Visible") is XElement ? Convert.ToBoolean(toElement.Element(
"Visible").Value) :
true;
1112 _Inmobilizada = toElement.Element(
"Inmobilizada") is XElement && Boolean.TryParse(toElement.Element(
"Inmobilizada").Value, out lInmo) ? lInmo :
false;
1114 _ColorFondo = toElement.Element(
"BackColor") is XElement ? _ToColor(toElement.Element(
"BackColor").Value, Color.White) : Color.White;
1115 _ColorLetra = toElement.Element(
"ForeColor") is XElement ? _ToColor(toElement.Element(
"ForeColor").Value, Color.Black) : Color.Black;
1117 _PermitirNavegacion = toElement.Element(
"PermitirNavegacion") is XElement && Boolean.TryParse(toElement.Element(
"PermitirNavegacion").Value, out lInmo) ? lInmo ?
Activo.Si :
Activo.No :
Activo.No;
1118 _TituloNavegacion = toElement.Element(
"TituloNavegacion") is XElement ? toElement.Element(
"TituloNavegacion").Value : String.Empty;
1119 _Mante = toElement.Element(
"Mante") is XElement ? toElement.Element(
"Mante").Value : String.Empty;
1121 _IncluirSageReports = toElement.Element(
"IncluirSageReports") is XElement && Boolean.TryParse(toElement.Element(
"IncluirSageReports").Value, out lInmo) ? lInmo ?
Activo.Si :
Activo.No :
Activo.Si;
1122 _IncluirExportacionCSV = toElement.Element(
"IncluirExportacionCSV") is XElement && Boolean.TryParse(toElement.Element(
"IncluirExportacionCSV").Value, out lInmo) ? lInmo ?
Activo.Si :
Activo.No :
Activo.Si;
1124 _oMascara = toElement.Element(
"Mascara") is XElement && Enum.TryParse<
TipoMascara>(toElement.Element(
"Mascara").Value, out loMask) ? loMask :
TipoMascara.Ninguna;
1125 _oAccion = toElement.Element(
"Totalizar") is XElement && Enum.TryParse<
Accion>(toElement.Element(
"Totalizar").Value, out loAccion) ? loAccion :
Accion.Ninguna;
1127 _NTipoCampo = toElement.Element(
"TipoCampo") is XElement ? Convert.ToInt32(toElement.Element(
"TipoCampo").Value) : 0;
1129 _bOculta = toElement.Element(
"Oculta") is XElement && Boolean.TryParse(toElement.Element(
"Oculta").Value, out lInmo) ? lInmo :
false;
1131 _DefinicionEntidades.Clear();
1132 if (toElement.Element(
"Path") is XElement)
1134 XElement loElement = toElement.Element(
"Path");
1136 foreach (XElement loDef
in loElement.Elements(
"Def"))
1138 ColumnDefEntidad loDefEntidad =
new ColumnDefEntidad(loDef.Element(
"Codigo").Value, loDef.Element(
"Campo").Value, loDef.Element(
"Tabla").Value, loDef.Element(
"Relacion").Value, loDef.Element(
"DB").Value);
1140 if (loDef.Elements(
"DataRel").Count() > 0)
1142 XElement loDefRel = loDef.Element(
"DataRel");
1146 if(loDef.Element(
"CampoRel") is XElement) loDefEntidad.
_CampoRel = Convert.ToInt32(loDef.Element(
"CampoRel").Value);
1148 _oListDefEntidad.Add(loDefEntidad);
1149 _oDefEntidad = loDefEntidad;
1153 if (toElement.Element(
"GoogleMapsConfig") is XElement)
1155 _GoogleMapsConfig =
new GoogleMapsConfig(toElement.Element(
"GoogleMapsConfig"));
1158 _oDefinicionValores = _GetDefinicionValores(toElement.Element(
"ValoresDefinidos") is XElement ? toElement.Element(
"ValoresDefinidos") : null);
1160 XElement loComunicados;
1162 loComunicados = toElement.Element(
"Comunicados");
1164 if(loComunicados is XElement)
1166 _IncluirComunicados = loComunicados.Element(
"Incluir") is XElement && Boolean.TryParse(loComunicados.Element(
"Incluir").Value, out lInmo) ? lInmo ?
Activo.Si :
Activo.No :
Activo.No;
1167 _oComunicados = _GetComunicados(loComunicados.Element(
"Clases") is XElement ? loComunicados.Element(
"Clases").Value : null);
1170 _ActualizarComunicados();
1180 _Nombre = toElement.ColumnName;
1181 _Titulo = toElement.Caption;
1183 if (toElement.ExtendedProperties.ContainsKey(
"Width")) _Width = Convert.ToInt32(toElement.ExtendedProperties[
"Width"]);
1184 if (toElement.ExtendedProperties.ContainsKey(
"NoSeleccionada")) _Visible = !Convert.ToBoolean(toElement.ExtendedProperties[
"NoSeleccionada"]);
1187 #endregion constructor 1189 private Color _ToColor(String tcColor, Color toColorDefecte)
1191 Int32 lnColorInt = 0;
1192 Color loColor = toColorDefecte;
1194 if (!String.IsNullOrEmpty(tcColor) && Int32.TryParse(tcColor, out lnColorInt))
1196 loColor = Color.FromArgb(lnColorInt);
1208 List<XElement> loList =
new List<XElement>();
1209 List<XElement> loPath =
new List<XElement>();
1210 List<XElement> loValores =
new List<XElement>();
1212 loList.Add(
new XElement(
"Nombre", _Nombre));
1213 loList.Add(
new XElement(
"Ancho", _Width));
1214 loList.Add(
new XElement(
"AnchoVisible", _UserWidth));
1215 loList.Add(
new XElement(
"Visible", _Visible));
1216 loList.Add(
new XElement(
"DisplayIndex", _Posicion));
1217 loList.Add(
new XElement(
"Caption", _cTituloOriginal));
1218 loList.Add(
new XElement(
"Inmobilizada", _Inmobilizada ? Boolean.TrueString : Boolean.FalseString));
1219 loList.Add(
new XElement(
"BackColor", _ColorFondo.ToArgb()));
1220 loList.Add(
new XElement(
"ForeColor", _ColorLetra.ToArgb()));
1221 loList.Add(
new XElement(
"IncluirSageReports", _IncluidoSageReports ? Boolean.TrueString : Boolean.FalseString));
1222 loList.Add(
new XElement(
"IncluirExportacionCSV", _IncluidoCSV ? Boolean.TrueString : Boolean.FalseString));
1223 loList.Add(
new XElement(
"PermitirNavegacion", _PermiteNavegacion ? Boolean.TrueString : Boolean.FalseString));
1224 loList.Add(
new XElement(
"TituloNavegacion", _TituloNavegacion ));
1225 loList.Add(
new XElement(
"Mante", _Mante));
1226 loList.Add(
new XElement(
"Mascara", Convert.ToInt32(_Mascara)));
1227 loList.Add(
new XElement(
"Totalizar", Convert.ToInt32(_Accion)));
1228 loList.Add(
new XElement(
"TipoCampo", _NTipoCampo));
1229 loList.Add(
new XElement(
"Oculta", _Oculta));
1230 loList.Add(
new XElement(
"Comunicados",
new XElement(
"Incluir", _bIncluirComunicados ? Boolean.TrueString : Boolean.FalseString),
new XElement(
"Clases", _Comunicados.Count > 0 ?
string.Join(
",", _Comunicados.Select(f => f.GetType().ToString())) :
"")));
1232 if (_ListPath.Count > 0)
1236 loPath.Add(
new XElement(
"Def",
new XElement(
"Codigo", loDef.
_Codigo),
new XElement(
"DB", loDef.
_DB),
new XElement(
"Tabla", loDef.
_Tabla),
new XElement(
"Campo", loDef.
_Campo),
new XElement(
"Relacion", loDef.
_Relacion),
new XElement(
"CampoRel", loDef.
_CampoRel),
new XElement(
"DataRel",
new XElement(
"DB", loDef.
_DataFieldRelation.
_DB),
new XElement(
"Tabla", loDef.
_DataFieldRelation.
_Tabla),
new XElement(
"Campo", loDef.
_DataFieldRelation.
_Campo))));
1238 loList.Add(
new XElement(
"Path", loPath.ToArray()));
1241 if(_GoogleMapsConfig._Activo) loList.Add(_GoogleMapsConfig._ToXElement());
1245 loElement =
new XElement(
"Columna", loList.ToArray());
1257 if (toColumns == null)
1262 List<DataRow> loRows;
1264 DataTable loDt =
new DataTable();
1266 loIds = toColumns.Where(f => f._ColumnAdded).Select(f => $
"(ca.campo = '{f._DefEntidad._Campo}' AND ta.BASEDATOS = '{f._DefEntidad._DB}' AND ta.TABLA = '{f._DefEntidad._Tabla}') ").ToList();
1268 if (loIds.Count > 0)
1270 lcSQL = $
@"SELECT ca.CAMPO,ta.BASEDATOS, ta.TABLA, ca.CONDICION FROM {DB.SQLDatabase("COMUNES
", "CAMPOS
")} ca " +
1271 $
@"INNER JOIN { DB.SQLDatabase("COMUNES
", "TABLAS
")} ta ON ca.IDTABLA = ta.ID " +
1272 $
@"WHERE CONDICION <> '' AND ({string.Join(" OR
", loIds)})";
1274 if (DB.SQLExec(lcSQL, ref loDt) && loDt.Rows.Count > 0)
1276 loRows = (from loRow in loDt.AsEnumerable()
1277 where !_ValidateCondition(Convert.ToString(loRow[
"CONDICION"]))
1278 select loRow).ToList();
1280 loRows.ForEach(loRow =>
1282 loCol = toColumns.Where(f => f._ColumnAdded && f._DefEntidad._Campo.Trim() == Convert.ToString(loRow[
"CAMPO"]).Trim() && f._DefEntidad._DB.Trim() == Convert.ToString(loRow[
"BASEDATOS"]).Trim() && f._DefEntidad._Tabla.Trim() == Convert.ToString(loRow[
"TABLA"]).Trim()).FirstOrDefault();
1292 private static bool _ValidateCondition(
string tcCondition)
1294 tcCondition = tcCondition.Trim();
1296 return (
string.IsNullOrEmpty(tcCondition) || (!
string.IsNullOrEmpty(tcCondition) &&
Menu50.
_EvaluarCondicion(tcCondition))) ? true :
false;
1299 #region "TypeDescriptor Implementation" 1307 return TypeDescriptor.GetClassName(
this,
true);
1316 return TypeDescriptor.GetAttributes(
this,
true);
1325 return TypeDescriptor.GetComponentName(
this,
true);
1334 return TypeDescriptor.GetConverter(
this,
true);
1343 return TypeDescriptor.GetDefaultEvent(
this,
true);
1352 return TypeDescriptor.GetDefaultProperty(
this,
true);
1362 return TypeDescriptor.GetEditor(
this, editorBaseType,
true);
1370 public EventDescriptorCollection
GetEvents(Attribute[] attributes)
1372 return TypeDescriptor.GetEvents(
this, attributes,
true);
1381 return TypeDescriptor.GetEvents(
this,
true);
1391 List<PropertyDescriptor> fullList =
new List<PropertyDescriptor>();
1394 PropertyDescriptorCollection defaultProperties = TypeDescriptor.GetProperties(
this, attributes,
true);
1396 foreach (PropertyDescriptor prop
in defaultProperties)
1400 if (_IsNumeric && _DefinicionValores._Count == 0) fullList.Add(prop);
1404 if ((_IsNumeric || _IsBoolean) && _DefinicionValores._Count > 0) fullList.Add(prop);
1408 if (!String.IsNullOrEmpty(_Mante)) fullList.Add(prop);
1412 if (_PermiteGoogleMaps) fullList.Add(prop);
1416 if (Convert.ToBoolean(EW_GLOBAL._GetVariable(
"WL_COMUNICADOS")) && _Comunicados.Count > 0) fullList.Add(prop);
1424 return new PropertyDescriptorCollection(fullList.ToArray());
1434 return TypeDescriptor.GetProperties(
this,
true);
1500 #endregion attributtes 1507 private String _cCodigo;
1508 private String _cTablaId;
1511 private Int32 _nCampoRel = 0;
1518 public Int32 _CampoRel
1526 if (_nCampoRel != value)
1542 if (_oColumnRel == null && _nCampoRel > 0)
1545 if (loDt.Rows.Count > 0) _oColumnRel =
new ColumnDefEntidad(loDt.Rows[0],
false);
1554 public String _Codigo
1569 public String _TablaId
1588 if (_oDataFieldRelation == null) _oDataFieldRelation =
new ColumnDefEntidad();
1589 return _oDataFieldRelation;
1593 _oDataFieldRelation = value;
1613 String tcTitulo = Convert.ToString(toRow[
"NOMBRE"]).Trim();
1614 String tcIdMante = Convert.ToString(toRow[tlInicial ?
"ID" :
"IDMANTE"]);
1615 String tcIdTabla = Convert.ToString(toRow[
"ID"]);
1616 String lcCodigo = Convert.ToString(toRow[
"IDCAMPO"]).Trim();
1617 String lcCampo = Convert.ToString(toRow[
"CAMPO"]).Trim();
1618 String lcMante = Convert.ToString(toRow[
"MANTE"]).Trim().ToLower();
1619 Int32 lnIdCampoRel = Convert.ToInt32(toRow[
"IDCAMPOR"]);
1621 lcCodigo = String.IsNullOrWhiteSpace(lcMante) ? String.Format(
"{0}", lcCampo).ToLower() : String.Format(
"{0}_{1}", lcMante, lcCampo).ToLower();
1623 ColumnDefEntidad loDefEntidadRel =
new ColumnDefEntidad() { _DB = Convert.ToString(toRow[
"BASEDATOS_REL"]).Trim(), _Tabla = Convert.ToString(toRow[
"TABLA_REL"]).Trim(), _Campo = Convert.ToString(toRow[
"CAMPO_REL"]).Trim(), _Empresa =
false };
1626 _DB = Convert.ToString(toRow[
"BASEDATOS"]).Trim();
1627 _TablaId = tcIdTabla;
1628 _Tabla = Convert.ToString(toRow[
"TABLA"]).Trim();
1630 _Relacion = tcIdMante;
1632 _DataFieldRelation = loDefEntidadRel;
1633 _CampoRel = lnIdCampoRel;
1647 public ColumnDefEntidad(
string tcCodigo,
string tcCampo,
string tcTabla,
string tcRelacion,
string tcDb =
"GESTION",
bool tlEmpresa =
false)
1648 : base(tcCampo, tcTabla, tcRelacion, tcDb, tlEmpresa)
1650 _cCodigo = tcCodigo;
1664 public override UITypeEditorEditStyle
GetEditStyle(ITypeDescriptorContext context)
1666 ReadOnlyAttribute attr = context.PropertyDescriptor.Attributes[typeof(ReadOnlyAttribute)] as ReadOnlyAttribute;
1667 return attr.IsReadOnly ? UITypeEditorEditStyle.None : UITypeEditorEditStyle.Modal;
1677 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider,
object value)
1679 IWindowsFormsEditorService svc = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
1680 ReadOnlyAttribute attr = context.PropertyDescriptor.Attributes[typeof(ReadOnlyAttribute)] as ReadOnlyAttribute;
1682 if (svc != null && !attr.IsReadOnly)
1690 loForm._ShowDialog();
1692 if (DialogResult.OK == loForm.DialogResult)
1712 public override UITypeEditorEditStyle
GetEditStyle(ITypeDescriptorContext context)
1714 return UITypeEditorEditStyle.Modal;
1724 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider,
object value)
1726 IWindowsFormsEditorService svc = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
1735 loForm._ShowDialog();
1737 if (DialogResult.OK == loForm.DialogResult)
1758 public override UITypeEditorEditStyle
GetEditStyle(ITypeDescriptorContext context)
1760 return UITypeEditorEditStyle.Modal;
1770 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider,
object value)
1772 IWindowsFormsEditorService svc = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
1782 loForm._ShowDialog();
1784 if (DialogResult.OK == loForm.DialogResult)
1799 private IWindowsFormsEditorService _editorService;
1800 private bool _cancel;
1807 public override UITypeEditorEditStyle
GetEditStyle(ITypeDescriptorContext context)
1809 return UITypeEditorEditStyle.DropDown;
1819 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider,
object value)
1823 _editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
1825 loListBox = _GetListBox();
1827 Type enumType = value.GetType();
1828 if (enumType.IsEnum)
1830 foreach (FieldInfo fi
in _GetFields(context, enumType))
1832 EnumItem item =
new EnumItem();
1833 item.Value = fi.GetValue(null);
1835 object[] atts = fi.GetCustomAttributes(typeof(DescriptionAttribute),
true);
1836 if (atts != null && atts.Length > 0)
1838 item.Name = ((DescriptionAttribute)atts[0]).Description;
1842 item.Name = fi.Name;
1845 int index = loListBox.Items.Add(item);
1847 if (fi.Name == value.ToString())
1849 loListBox.SetSelected(index,
true);
1855 throw new InvalidOperationException();
1858 loListBox.Height = Convert.ToInt32(loListBox.Items.Count * (loListBox.ItemHeight + 5));
1861 _editorService.DropDownControl(loListBox);
1862 if (_cancel || loListBox.SelectedIndices.Count == 0)
1865 return ((EnumItem)loListBox.SelectedItem).Value;
1868 private ListBox _GetListBox()
1870 ListBox loListBox =
new ListBox();
1872 loListBox.DisplayMember =
"Name";
1873 loListBox.IntegralHeight =
true;
1874 loListBox.SelectionMode = SelectionMode.One;
1875 loListBox.MouseClick += OnListBoxMouseClick;
1876 loListBox.KeyDown += OnListBoxKeyDown;
1877 loListBox.PreviewKeyDown += OnListBoxPreviewKeyDown;
1878 loListBox.BorderStyle = BorderStyle.None;
1880 return _ConfigureListBox(loListBox);
1899 protected virtual IEnumerable<FieldInfo>
_GetFields(ITypeDescriptorContext context, Type toEnumType)
1901 return toEnumType.GetFields(BindingFlags.Public | BindingFlags.Static);
1904 private class EnumItem
1906 public object Value {
get;
set; }
1907 public string Name {
get;
set; }
1910 private void OnListBoxPreviewKeyDown(
object sender, PreviewKeyDownEventArgs e)
1912 if (e.KeyCode == Keys.Escape)
1915 _editorService.CloseDropDown();
1919 private void OnListBoxMouseClick(
object sender, MouseEventArgs e)
1921 int index = ((ListBox)sender).IndexFromPoint(e.Location);
1924 _editorService.CloseDropDown();
1928 private void OnListBoxKeyDown(
object sender, KeyEventArgs e)
1930 if (e.KeyCode == Keys.Enter)
1932 _editorService.CloseDropDown();
1950 public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture,
object value, Type destinationType)
1952 return String.Empty ;
1970 return sourceType == typeof(
string) || base.CanConvertFrom(context, sourceType);
1980 public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture,
object value)
1982 string svalue =
string.Format(culture,
"{0}", value);
1984 if (Enum.TryParse(svalue, out e))
1987 foreach (FieldInfo fi
in typeof(TEnum).GetFields(BindingFlags.Public | BindingFlags.Static))
1989 object[] atts = fi.GetCustomAttributes(typeof(DescriptionAttribute),
true);
1990 if (atts != null && atts.Length > 0)
1992 if (
string.Compare(((DescriptionAttribute)atts[0]).Description, svalue, StringComparison.OrdinalIgnoreCase) == 0)
1993 return fi.GetValue(null);
1997 return base.ConvertFrom(context, culture, value);
2006 public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
2008 return destinationType == typeof(
string) || base.CanConvertTo(context, destinationType);
2019 public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture,
object value, Type destinationType)
2021 if (destinationType == typeof(
string))
2023 string svalue =
string.Format(culture,
"{0}", value);
2024 foreach (FieldInfo fi
in typeof(TEnum).GetFields(BindingFlags.Public | BindingFlags.Static))
2026 object[] atts = fi.GetCustomAttributes(typeof(DescriptionAttribute),
true);
2027 if (atts != null && atts.Length > 0)
2029 if (
string.Compare(fi.Name, svalue, StringComparison.OrdinalIgnoreCase) == 0)
2030 return ((DescriptionAttribute)atts[0]).Description;
2034 return base.ConvertTo(context, culture, value, destinationType);
2038 #region ValuesDefinition 2049 public override List<DefinicionValor> _Values
2053 return new List<DefinicionValor>();
2062 : base(toColumnDefinition)
2073 private String _cDefaultDefinicionValorTrue =
"Sí";
2074 private String _cDefaultDefinicionValorFalse =
"No";
2081 : base(toColumnDefinition)
2083 _SetValue(
true, _cDefaultDefinicionValorTrue,
"Verdadero");
2084 _SetValue(
false, _cDefaultDefinicionValorFalse,
"Falso");
2092 public override String
_ToSQL(String tcFieldName)
2094 Dictionary<String, String> loDic =
new Dictionary<string, string>();
2096 loDic.Add(DB.SQLTrue(), DB.SQLString(_GetValue(
true)));
2097 loDic.Add(DB.SQLFalse(), DB.SQLString(_GetValue(
false)));
2099 return DB.SQLCase(tcFieldName, loDic,
"''");
2108 :base(toColumnDefinition, toValores)
2110 _SetKeyDescription(
true,
"Verdadero");
2111 _SetKeyDescription(
false,
"Falso");
2127 :base(toColumnDefinition)
2129 _SetValores(tcValores);
2138 : base(toColumnDefinition, toValores)
2140 _ComprobarValores();
2143 private void _ComprobarValores()
2146 DataTable loDt =
new DataTable();
2148 lcSql = String.Format(
"SELECT c.VALORES FROM {0} c INNER JOIN {1} t ON t.ID = c.IDTABLA WHERE c.CAMPO = '{2}' AND t.TABLA = '{3}' AND t.BASEDATOS = '{4}' ", DB.SQLDatabase(
"COMUNES",
"CAMPOS"), DB.SQLDatabase(
"COMUNES",
"TABLAS"), _ColumDefinition._DefEntidad._Campo, _ColumDefinition._DefEntidad._Tabla, _ColumDefinition._DefEntidad._DB);
2150 if(DB.SQLExec(lcSql , ref loDt) && loDt.Rows.Count > 0)
2152 List<DefinicionValor> loDefTmp;
2153 List<DefinicionValor> loTmp = _Values.Where(f=>f._ColorChanged()).ToList();
2155 _SetValores(Convert.ToString(loDt.Rows[0][
"VALORES"]));
2157 foreach(DefinicionValor loDef
in loTmp)
2159 loDefTmp = _Values.Where(f => f._Key == loDef._Key).ToList();
2160 if (loDefTmp.Count > 0) loDefTmp.First()._Color = loDef._Color;
2165 private void _SetValores(String tcValores)
2168 String lcKey, lcValue, lcValorTmp;
2174 if (!String.IsNullOrEmpty(tcValores.Trim()))
2176 loValores = tcValores.Split(
',');
2178 foreach (String lcValor
in loValores)
2180 lcValorTmp = lcValor.Trim();
2181 lcKey = lcValorTmp.Substring(0, lcValorTmp.IndexOf(
' '));
2182 lcValue = lcValorTmp.Trim().Substring(lcValorTmp.IndexOf(
' ') + 1);
2184 _SetValue(lcKey, lcValue);
2201 private List<DefinicionValor> _oValues =
new List<DefinicionValor>();
2202 private Color _oDefaultColor = Color.Black;
2207 public Color _DefaultColor
2211 return _oDefaultColor;
2215 _oDefaultColor = value;
2219 loDefinicionValor._DefaultColor = _oDefaultColor;
2227 public String _ColumnName
2231 return _oColumnDefinition.
_Codigo;
2242 return _oColumnDefinition;
2253 return _oValues.Count;
2260 public virtual List<DefinicionValor> _Values
2281 public void _SetValue(Object toKey, Object toValue, Color toColor, String tcKeyDescription =
"")
2285 lcKey = toKey.ToString().Trim();
2290 loValue.
_Value = toValue.ToString();
2291 loValue.
_Color = toColor;
2292 loValue._DefaultColor = _oColumnDefinition.
_ColorLetra;
2297 _oValues.Add(
new DefinicionValor(lcKey, toValue.ToString()) { _Color = toColor, _KeyDescription = tcKeyDescription, _DefaultColor = _oColumnDefinition.
_ColorLetra });
2308 _SetValue(toKey, toValue, _DefaultColor);
2317 public void _SetValue(Object toKey, Object toValue, String tcKeyDescription)
2319 _SetValue(toKey, toValue, _DefaultColor, tcKeyDescription);
2331 lcKey = toKey.ToString();
2348 lcKey = toKey.ToString();
2359 public virtual String
_ToSQL(String tcFieldName)
2361 return DB.SQLCase(tcFieldName, _oValues.ToDictionary(a => a._Key, a => DB.SQLString(a._Value)),
"''");
2369 private Color _ToColor(String tcColor)
2371 Int32 lnColorInt = 0;
2372 Color loColor = Color.Black;
2374 if (!String.IsNullOrEmpty(tcColor) && Int32.TryParse(tcColor, out lnColorInt))
2376 loColor = Color.FromArgb(lnColorInt);
2387 List<XElement> loLisXElements =
new List<XElement>();
2389 loLisXElements = (from loValue in _Values
2390 select
new XElement(
"ValorDefinido",
new XElement[] {
new XElement(
"Key", loValue._Key),
new XElement(
"Value", loValue._Value),
new XElement(
"Color", loValue._Color.ToArgb()) })).ToList();
2392 return new XElement(
"ValoresDefinidos", loLisXElements);
2402 _Values = toSageReportsValuesDefinition.
_Values;
2411 :this(toColumnDefinition)
2413 if (toElement.Name ==
"ValoresDefinidos")
2415 foreach (XElement loe
in toElement.Elements())
2417 if (loe.Element(
"Key") is XElement && loe.Element(
"Value") is XElement)
2419 _SetValue(loe.Element(
"Key").Value.ToString(), loe.Element(
"Value").Value.ToString(), _ToColor(loe.Element(
"Color").Value.ToString()));
2430 _oColumnDefinition = toColumnDefinition;
2439 private String _cKey;
2440 private String _cKeyDescription;
2441 private String _cValue;
2442 private Color _oColor;
2443 private Color _oDefaultColor = Color.Black;
2448 internal Color _DefaultColor
2452 if (!_ColorChanged()) _oColor = value;
2453 _oDefaultColor = value;
2460 public String _KeyDescription
2464 return String.IsNullOrEmpty(_cKeyDescription) ? _Key : _cKeyDescription;
2468 _cKeyDescription = value.Trim();
2483 _cKey = value.Trim();
2490 public String _Value
2523 return _oColor.ToArgb() != _oDefaultColor.ToArgb();
2541 _oColor = _oDefaultColor;
2548 #endregion ValuesDefinition 2554 : IEqualityComparer<string>
2564 return x.ToLower() == y.ToLower();
2574 return obj.GetHashCode();
PE-93426 Interficie para los módulos de la aplicación
Assembly _Assembly
Contendra el Assembly del addon
static AddonsController Instance
Instancia al objeto singleton Addons
Clase parcial para listados, en esta definición se especificarán los métodos comunes para las demás c...
string _Relacion
Campo relacionado con la relación actual
Argumentos para los eventos lanzados por el addons en caso de error
Interfície para la gestión de comunicados desde los listados
string _DB
Base de datos de la relación (GESTION, COMUNES, ETC)
KeyDiccionarioMascara
Clave para diccionario de máscaras
Entidad de relación (Columnas adicionales en listados)
_Operacion_Calculo
Enumeración de las operaciones de cálculo disponibles para __Totalizar
Clase base para la gestión de comunicados
string _Tabla
Tabla de la relación
IAddonsManager AddonsManager
Gestor de Addons
string _Campo
Campo de la relación
Interficie que define una entidad de relación (Columnas adicionales en listados)
Dictionary< string, object > GetAddons()
Devuelve los addons cargados