2 using System.Collections.Generic;
12 namespace sage.addons.rgpd
14 internal enum eTipoPlantilla
16 [TipoPlantillaInfo(
"Solicitud de consentimiento", RgpdConfig.PLANTILLA_RECOGIDA_DATOS,
"PLDATOS")]
18 [TipoPlantillaInfo(
"Notificación de usuario", RgpdConfig.PLANTILLA_ACCESO,
"PLACCESO")]
20 [TipoPlantillaInfo(
"Emisión de fichero de portabilidad", RgpdConfig.PLANTILLA_PORTABILIDAD,
"PLPORTA")]
22 [TipoPlantillaInfo(
"Confirmación de solicitud de supresión", RgpdConfig.PLANTILLA_SUPRESION,
"PLSUPRE")]
29 public static class RgpdConfig
31 #region Constantes de configuración 36 private const string DIRECTORIO_DOCUMENTOS =
@"modulos\rgpd\Documentos";
41 private const int LONGITUD_PREFIJO_ENTIDADES = 6;
46 internal const string PLANTILLA_RECOGIDA_DATOS =
"RGPD01";
47 internal const string PLANTILLA_ACCESO =
"RGPD02";
48 internal const string PLANTILLA_PORTABILIDAD =
"RGPD03";
49 internal const string PLANTILLA_SUPRESION =
"RGPD04";
51 internal const string LITERAL_SOLICITUD_CONSENTIMIENTO =
"SolicitudConsentimiento";
52 internal const string LITERAL_RECEPCION_CONSENTIMIENTO =
"RecepcionConsentimiento";
53 internal const string LITERAL_SOLICITUD_SUPRESION =
"SolicitudSupresion";
54 internal const string LITERAL_SOLICITUD_BLOQUEO =
"SolicitudBloqueo";
55 internal const string LITERAL_SOLICITUD_PORTABILIDAD =
"SolicitudPortabilidad";
56 internal const string LITERAL_DATOS_PORTABILIDAD =
"DatosPortabilidad";
57 internal const string LITERAL_SOLICITUD_ACCESO =
"SolicitudAcceso";
58 internal const string LITERAL_DERECHO_ACCESO =
"DerechoAcceso";
59 internal const string LITERAL_EMISION_PORTABILIDAD =
"EmisionPortabilidad";
61 internal const string ENTIDAD_CLIENTE =
"00000001";
62 internal const string ENTIDAD_CLIENTEPOTENCIAL =
"00000002";
64 #endregion Constantes de configuración 69 public static string _RutaDocumentos
73 string lcRutaServidor = Convert.ToString(
sage.
ew.
global.
EW_GLOBAL._GetVariable(
"wc_iniservidor",
@"C:\eurowinsprb\std\ew800serv")).TrimEnd();
74 string lcRutaDocumentos = Path.Combine(lcRutaServidor, DIRECTORIO_DOCUMENTOS);
75 return lcRutaDocumentos;
82 public static int _LongitudPrefijoEntidad
84 get {
return LONGITUD_PREFIJO_ENTIDADES; }
90 public static int _IdCarpetaConsentimiento
94 if (_DiccionarioCarpetas.ContainsKey(20))
95 return _DiccionarioCarpetas[20];
104 public static int _IdCarpetaSupresion
108 if (_DiccionarioCarpetas.ContainsKey(30))
109 return _DiccionarioCarpetas[30];
118 public static int _IdCarpetaAcceso
122 if (_DiccionarioCarpetas.ContainsKey(40))
123 return _DiccionarioCarpetas[40];
133 internal static Dictionary<int, int> _DiccionarioCarpetas
137 if (diccionarioCarpetas == null)
138 garantizarCarpetasDeTrabajoRgpd(getGestdocOperationProvider());
139 return RgpdConfig.diccionarioCarpetas;
141 set { RgpdConfig.diccionarioCarpetas = value; }
143 private static Dictionary<int, int> diccionarioCarpetas = null;
149 internal static DataTable _TablaTrazaRgpd
153 if (dtTrazaRgpd == null)
154 dtTrazaRgpd = crearTablaTrazaRgpd();
157 set { dtTrazaRgpd = value; }
159 private static DataTable dtTrazaRgpd = null;
166 private static DataTable crearTablaTrazaRgpd()
168 string lcSql =
"Select id, nombre, propiedad, grupo " +
169 "From " + DB.SQLDatabase(
"RGPD",
"Trazargpd");
171 DataTable dtTrazargpd =
new DataTable();
173 DB.SQLExec(lcSql, ref dtTrazargpd);
193 if (loModuloGestDoc.Any())
199 ew.functions.FUNCTIONS._MessageBox(
"El addon de gestión documental no está instalado. " + Environment.NewLine
200 +
"Debe instalarlo para poder gestionar los ficheros relativos al RGPD.",
201 "Falta addon gestión documental",
System.Windows.Forms.MessageBoxButtons.OK,
202 System.Windows.Forms.MessageBoxIcon.Error,
System.Windows.Forms.MessageBoxDefaultButton.Button1);
217 if (toModulo == null)
220 GestorCarpetas loGestorCarpetas =
new GestorCarpetas(toModulo);
221 loGestorCarpetas._GarantizarCarpetasRgpd();
224 diccionarioCarpetas = loGestorCarpetas._ToDictionary();
228 internal static void crearRegistrosParaGestionAccesos()
230 string lcSql =
string.Empty;
232 lcSql =
"insert into " + DB.SQLDatabase(
"GESTION",
"MODULOS") +
" (NOMBRE, DESCRIPCIO, EXE) " +
233 " SELECT DATOS.PANTALLA, DATOS.NOMBRE, DATOS.EXE "+
235 "SELECT pantalla, nombre, 'RGPD' as EXE " +
236 " FROM " + DB.SQLDatabase(
"RGPD",
"MANTES") +
238 "SELECT Cast(pantalla as char(" + DB.SQLAnchuraCampo(
"RGPD",
"MANTES",
"PANTALLA") +
")), nombre, 'RGPD' as EXE " +
239 "FROM " + DB.SQLDatabase(
"RGPD",
"LISTADOS") +
241 " WHERE DATOS.PANTALLA NOT IN (SELECT NOMBRE FROM " + DB.SQLDatabase(
"GESTION",
"MODULOS") +
") ";
254 internal static string _HtmlFromTrataInfo(DataTable tdtDatos,
bool tlIncluirPlazoConservacion=
false)
256 if (tdtDatos.Rows.Count == 0)
259 System.Web.UI.HtmlControls.HtmlTable tableHtml;
261 string htmlcategoria =
"", htmltotal =
"";
263 string lcColorCabeceras =
System.Drawing.ColorTranslator.ToHtml(
System.Drawing.Color.WhiteSmoke);
267 int lnIndiceFila = 0;
268 int lnIndiceTabla = 0;
269 string lcCategoria =
"";
271 while (lnIndiceFila < tdtDatos.Rows.Count)
273 lcCategoria = Convert.ToString(tdtDatos.Rows[lnIndiceFila][
"codcateg"]).Trim();
277 if (!tlIncluirPlazoConservacion)
278 tableHtml = crearTablaHtmlCategoriaCabecSimple(
"Categoría de información: " + Convert.ToString(tdtDatos.Rows[lnIndiceFila][
"desc_categ"]).Trim(),
System.Drawing.ColorTranslator.ToHtml(
System.Drawing.Color.WhiteSmoke), 800, -1);
280 tableHtml = crearTablaHtmlCategoriaCabecDoble(
"Categoría de información: " + Convert.ToString(tdtDatos.Rows[lnIndiceFila][
"desc_categ"]).Trim(),
"Plazo conservación (años)",
System.Drawing.ColorTranslator.ToHtml(
System.Drawing.Color.WhiteSmoke), 800);
283 while (lnIndiceFila < tdtDatos.Rows.Count && Convert.ToString(tdtDatos.Rows[lnIndiceFila][
"codcateg"]) == lcCategoria)
285 if (!tlIncluirPlazoConservacion)
286 anadirFilaHtml(tableHtml, 1, Convert.ToString(tdtDatos.Rows[lnIndiceFila][
"desc_trata"]).Trim());
288 anadirFilaHtml(tableHtml, 2, Convert.ToString(tdtDatos.Rows[lnIndiceFila][
"desc_trata"]).Trim(), Convert.ToString(tdtDatos.Rows[lnIndiceFila][
"plazo_trata"]).Trim(),
"",
"Center");
295 using (var sw =
new StringWriter())
297 tableHtml.RenderControl(
new System.Web.UI.HtmlTextWriter(sw));
298 htmlcategoria = sw.ToString();
299 htmltotal += (lnIndiceTabla != 0 ?
"<br><br>" :
"") + htmlcategoria;
321 internal static string _HtmlFromCamposTrataInfo(DataTable tdtCamposEntidad,
string tcCodigoEntidad)
323 if (tdtCamposEntidad.Rows.Count == 0)
329 System.Web.UI.HtmlControls.HtmlTable tableHtml;
330 string htmlcategoria =
"", htmltotal =
"", lcCategoria =
"", lcNombreBd =
"", lcNombreTabla =
"", lcDescTabla =
"", lcCampoFiltro =
"";
331 string lcColorCabecerasCategoria =
System.Drawing.ColorTranslator.ToHtml(
System.Drawing.Color.LightGray);
333 bool llProcesarTabla =
false;
334 int lnIndiceFila = 0, lnIndiceTabla = 0;
340 while (lnIndiceFila < tdtCamposEntidad.Rows.Count)
342 lcCategoria = Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"codcateg"]).Trim();
346 tableHtml = crearTablaHtmlCategoriaCabecSimple(
"Categoría de información: " + Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"desc_categ"]).Trim(), lcColorCabecerasCategoria, 800, 2);
352 while (lnIndiceFila < tdtCamposEntidad.Rows.Count && Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"codcateg"]).Trim() == lcCategoria)
354 lcNombreBd = Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"basedatos"]).Trim();
355 lcNombreTabla = Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"tabla"]).Trim();
356 lcDescTabla = Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"desc_tabla"]).Trim();
357 lcCampoFiltro = Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"campoins"]).Trim();
359 llProcesarTabla = !
string.IsNullOrWhiteSpace(lcCampoFiltro);
360 DataTable ldtDatosTabla =
new DataTable();
365 DB.SQLExec(
"select * from " + DB.SQLDatabase(lcNombreBd, lcNombreTabla) +
" where " + lcCampoFiltro +
" = " + DB.SQLString(tcCodigoEntidad), ref ldtDatosTabla);
368 llProcesarTabla = ldtDatosTabla.Rows.Count > 0;
374 anadirCamposDatosEntidadHtml(tableHtml, tdtCamposEntidad, ldtDatosTabla, ref lnIndiceFila, lcCategoria, lcNombreBd, lcNombreTabla, lcDescTabla);
379 while (lnIndiceFila < tdtCamposEntidad.Rows.Count && Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"codcateg"]) == lcCategoria && Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"basedatos"]).Trim() == lcNombreBd && Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"tabla"]).Trim() == lcNombreTabla)
389 using (var sw =
new StringWriter())
391 tableHtml.RenderControl(
new System.Web.UI.HtmlTextWriter(sw));
392 htmlcategoria = sw.ToString();
393 htmltotal += (lnIndiceTabla != 0 ?
"<br><br>" :
"") + htmlcategoria;
413 private static void anadirCamposDatosEntidadHtml(
System.Web.UI.HtmlControls.HtmlTable tableHtml, DataTable tdtCamposEntidad, DataTable tdtDatosEntidad, ref
int tnIndiceFila,
string tcCategoria,
string tcNombreBd,
string tcNombreTabla,
string tcDescTabla)
415 bool llCabeceraTablaAdd =
false, llCambioRegistro=
true;
416 string lcDescCampo=
"", lcNombreCampo=
"", lcValorCampo=
"", lcFuncionValor=
"";
417 int lnIndiceFila = 0;
418 string lcColorCabecerasTablasDatos =
System.Drawing.ColorTranslator.ToHtml(
System.Drawing.Color.WhiteSmoke);
421 foreach (DataRow loRowDatosTabla
in tdtDatosEntidad.Rows)
423 lnIndiceFila = tnIndiceFila;
424 llCambioRegistro =
true;
427 while (lnIndiceFila < tdtCamposEntidad.Rows.Count && Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"codcateg"]).Trim() == tcCategoria && Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"basedatos"]).Trim() == tcNombreBd && Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"tabla"]).Trim() == tcNombreTabla)
429 lcDescCampo = Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"desc_campo"]).Trim();
430 lcNombreCampo = Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"campo"]).Trim();
431 lcFuncionValor = Convert.ToString(tdtCamposEntidad.Rows[lnIndiceFila][
"valorfunc"]).Trim();
433 lcValorCampo = obtenerValorColumnaDataRow(loRowDatosTabla, lcNombreCampo, lcFuncionValor) ;
436 if (!
string.IsNullOrWhiteSpace(lcValorCampo))
438 if (!llCabeceraTablaAdd)
441 anadirCabeceraHtmlSimple(tableHtml, !
string.IsNullOrWhiteSpace(tcDescTabla) ? tcDescTabla : tcNombreTabla, 2, lcColorCabecerasTablasDatos);
444 anadirCabeceraHtmlDoble(tableHtml,
"Información",
"Valor", 33, 64, lcColorCabecerasTablasDatos);
445 llCabeceraTablaAdd =
true;
446 llCambioRegistro =
false;
450 if (llCabeceraTablaAdd && llCambioRegistro)
452 anadirFilaHtml(tableHtml, 2,
" ",
" ");
453 llCambioRegistro =
false;
456 anadirFilaHtml(tableHtml, 2, lcDescCampo, lcValorCampo);
463 tnIndiceFila = lnIndiceFila;
475 private static System.Web.UI.HtmlControls.HtmlTable crearTablaHtmlCategoriaCabecSimple(
string tcTituloCabecera,
string tcColorCabecera,
int tnAnchoPixels,
int tnColSpan)
477 System.Web.UI.HtmlControls.HtmlTable tableHtml =
new System.Web.UI.HtmlControls.HtmlTable();
478 tableHtml.Border = 1;
479 tableHtml.CellPadding = 5;
480 tableHtml.CellSpacing = 0;
481 tableHtml.Width = tnAnchoPixels.ToString().Trim();
484 anadirCabeceraHtmlSimple(tableHtml, tcTituloCabecera, tnColSpan, tcColorCabecera);
498 private static System.Web.UI.HtmlControls.HtmlTable crearTablaHtmlCategoriaCabecDoble(
string tcTituloCabecera1,
string tcTituloCabecera2,
string tcColorCabecera,
int tnAnchoPixels)
500 System.Web.UI.HtmlControls.HtmlTable tableHtml =
new System.Web.UI.HtmlControls.HtmlTable();
501 tableHtml.Border = 1;
502 tableHtml.CellPadding = 5;
503 tableHtml.CellSpacing = 0;
504 tableHtml.Width = tnAnchoPixels.ToString().Trim();
507 anadirCabeceraHtmlDoble(tableHtml, tcTituloCabecera1, tcTituloCabecera2, 70, 30, tcColorCabecera);
520 private static void anadirCabeceraHtmlSimple(
System.Web.UI.HtmlControls.HtmlTable tableHtml,
string tcTituloCabecera,
int tnColSpan,
string tcColorHtml=
"")
522 System.Web.UI.HtmlControls.HtmlTableRow headerTabla =
new System.Web.UI.HtmlControls.HtmlTableRow();
523 System.Web.UI.HtmlControls.HtmlTableCell cell =
new System.Web.UI.HtmlControls.HtmlTableCell(
"th");
525 cell.InnerText = tcTituloCabecera;
528 cell.ColSpan = tnColSpan;
530 if (
string.IsNullOrWhiteSpace(tcColorHtml))
531 tcColorHtml =
System.Drawing.ColorTranslator.ToHtml(
System.Drawing.Color.WhiteSmoke);
532 cell.BgColor = tcColorHtml;
534 headerTabla.Cells.Add(cell);
536 tableHtml.Rows.Add(headerTabla);
549 private static void anadirCabeceraHtmlDoble(
System.Web.UI.HtmlControls.HtmlTable tableHtml,
string tcTituloCabeceraCol1,
string tcTituloCabeceraCol2,
int tnPrcAnchoCol1,
int tnPrcAnchoCol2,
string tcColorHtml =
"")
551 System.Web.UI.HtmlControls.HtmlTableRow headerTabla =
new System.Web.UI.HtmlControls.HtmlTableRow();
553 System.Web.UI.HtmlControls.HtmlTableCell cellCol1 =
new System.Web.UI.HtmlControls.HtmlTableCell(
"th");
554 cellCol1.InnerText = tcTituloCabeceraCol1;
555 if (
string.IsNullOrWhiteSpace(tcColorHtml))
556 tcColorHtml =
System.Drawing.ColorTranslator.ToHtml(
System.Drawing.Color.WhiteSmoke);
557 cellCol1.BgColor = tcColorHtml;
558 cellCol1.Width = tnPrcAnchoCol1.ToString().Trim() +
"%";
560 System.Web.UI.HtmlControls.HtmlTableCell cellCol2 =
new System.Web.UI.HtmlControls.HtmlTableCell(
"th");
561 cellCol2.InnerText = tcTituloCabeceraCol2;
562 if (
string.IsNullOrWhiteSpace(tcColorHtml))
563 tcColorHtml =
System.Drawing.ColorTranslator.ToHtml(
System.Drawing.Color.WhiteSmoke);
564 cellCol2.BgColor = tcColorHtml;
565 cellCol2.Width = tnPrcAnchoCol2.ToString().Trim()+
"%";
567 headerTabla.Cells.Add(cellCol1);
568 headerTabla.Cells.Add(cellCol2);
570 tableHtml.Rows.Add(headerTabla);
583 private static void anadirFilaHtml(
System.Web.UI.HtmlControls.HtmlTable tableHtml,
int tnNumCols,
string tcCampoCol1,
string tcCampoCol2=
"",
string tcAlignCol1=
"",
string tcAlignCol2=
"")
588 System.Web.UI.HtmlControls.HtmlTableRow row =
new System.Web.UI.HtmlControls.HtmlTableRow();
592 System.Web.UI.HtmlControls.HtmlTableCell cellCol1 =
new System.Web.UI.HtmlControls.HtmlTableCell();
594 if (!
string.IsNullOrWhiteSpace(tcCampoCol1))
595 cellCol1.InnerText = tcCampoCol1;
597 cellCol1.InnerHtml =
" ";
599 if (!
string.IsNullOrWhiteSpace(tcAlignCol1))
600 cellCol1.Align = tcAlignCol1;
602 row.Cells.Add(cellCol1);
607 System.Web.UI.HtmlControls.HtmlTableCell cellCol2 =
new System.Web.UI.HtmlControls.HtmlTableCell();
608 if (!
string.IsNullOrWhiteSpace(tcCampoCol2))
609 cellCol2.InnerText = tcCampoCol2;
611 cellCol2.InnerHtml =
" ";
613 if (!
string.IsNullOrWhiteSpace(tcAlignCol2))
614 cellCol2.Align = tcAlignCol2;
616 row.Cells.Add(cellCol2);
620 tableHtml.Rows.Add(row);
631 private static string obtenerValorColumnaDataRow(DataRow toRow,
string tcCampoObtener,
string tcFuncionValor)
634 object txValor = toRow[tcCampoObtener];
637 string lcTipo = txValor.GetType().ToString().Trim().ToLower();
641 case "system.boolean":
642 if ((
bool)txValor ==
true)
649 case "system.datetime":
650 DateTime ltFecha = (DateTime)txValor;
651 lcValor = ltFecha.Day.ToString().Trim() +
"/" + ltFecha.Month.ToString().Trim() +
"/" + ltFecha.Year.ToString().Trim();
654 if ((ltFecha.Hour != 0) || (ltFecha.Minute != 0) || (ltFecha.Second != 0))
655 lcValor = lcValor +
" " + ltFecha.Hour.ToString().Trim() +
":" + ltFecha.Minute.ToString().Trim() +
":" + ltFecha.Second.ToString().Trim();
659 case "system.decimal":
660 case "system.double":
664 case "system.uint16":
665 case "system.uint32":
666 case "system.uint64":
667 lcValor = txValor.ToString().Replace(
",",
".").Trim();
670 case "system.string":
671 lcValor = txValor.ToString().Trim();
672 lcValor = lcValor.Replace(
"'",
"''");
681 if (!
string.IsNullOrWhiteSpace(tcFuncionValor))
683 string[] laParamFuncionValor = tcFuncionValor.Trim().Split(
',');
684 if (laParamFuncionValor.Count() == 4)
688 object lxCampoFuncValor = DB.SQLValor(laParamFuncionValor[1], laParamFuncionValor[2], lcValor, laParamFuncionValor[3], laParamFuncionValor[0]);
689 lcValor = Convert.ToString(lxCampoFuncValor);
690 lcValor = lcValor.Trim();
static AddonsController Instance
Instancia al objeto singleton Addons
Argumentos para los eventos lanzados por el addons en caso de error
Clase EW_GLOBAL para gestionar las variables públicas de Eurowin, variables de empresa, variables de anchuras de campo, variables de mascaras, etc.
IAddonsManager AddonsManager
Gestor de Addons
Interficie de operaciones requeridas por el Addon de RGPD al Addon de GESTDOC
Dictionary< string, object > GetAddons()
Devuelve los addons cargados