2 using System.Collections.Generic;
5 using System.ComponentModel;
15 using System.Windows.Forms;
16 using System.Web.Script.Serialization;
26 #region PROPIEDADES PRIVADAS 32 private string _lcEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString().Trim();
41 #endregion PROPIEDADES PRIVADAS 44 #region PROPIEDADES PÚBLICAS 51 public string _Empresa
54 _Campo(
"EMPRESA", _lcEmpresa);
58 _Campo(
"EMPRESA", _lcEmpresa);
66 new public string _Codigo
70 return Convert.ToString(_Campo(
"CODIGO"));
86 _Campo(
"CODIGO", value);
87 _Empresa = _lcEmpresa;
100 if (_oConfiguracionComunicadosListados == null)
103 _oConfiguracionComunicadosListados.
_Mante =
this;
105 else if(_oConfiguracionComunicadosListados.
_Mante == null)
107 _oConfiguracionComunicadosListados.
_Mante =
this;
109 return _oConfiguracionComunicadosListados;
117 public string _Config
121 return Convert.
ToString(_Campo(
"CONFIG")).Trim();
125 _Campo(
"CONFIG", value);
150 public string _Asunto
154 return Convert.
ToString(_Campo(
"ASUNTO"));
158 _Campo(
"ASUNTO", value);
166 public string _TareaProgramacion
170 return _lisCampos.ContainsKey(
"TAR_CONF") ? Convert.ToString(_lisCampos[
"TAR_CONF"]._NewVal) :
"";
174 if (_lisCampos.ContainsKey(
"TAR_CONF")) _lisCampos[
"TAR_CONF"]._NewVal = value;
183 public bool _TareaActiva
187 return _lisCampos.ContainsKey(
"TAR_ACT") ? Convert.ToBoolean(_lisCampos[
"TAR_ACT"]._NewVal) :
false;
191 if (_lisCampos.ContainsKey(
"TAR_ACT")) _lisCampos[
"TAR_ACT"]._NewVal = value;
219 this._nTipoEnvio = (int)value;
233 public int _nTipoEnvio
237 int lnTmp = Convert.ToInt32(_Campo(
"TIPO_ENVIO"));
244 if (_lisCampos.ContainsKey(
"TIPO_ENVIO"))
248 _Campo(
"TIPO_ENVIO", lnValor);
270 this._nTipoDestinatarios = (int)value;
276 this._GrupoDest =
"";
285 public int _nTipoDestinatarios
289 int lnTmp = Convert.ToInt32(_Campo(
"DESTTARIOS"));
296 if (_lisCampos.ContainsKey(
"DESTTARIOS"))
300 _Campo(
"DESTTARIOS", lnValor);
314 public int _DestinoEnvio1
318 return Convert.ToInt32(_Campo(
"DESTINOS"));
322 _Campo(
"DESTINOS", value);
332 public string _DestinoEnvio2
336 return Convert.ToString(_Campo(
"DEST_TIPO"));
340 _Campo(
"DEST_TIPO", value);
348 public DateTime _FechaCreacion
352 return Convert.ToDateTime(_Campo(
"F_CREAC"));
356 _Campo(
"F_CREAC", value);
365 public string _Plantilla
369 return Convert.ToString(_Campo(
"PLANTILLA"));
373 _Campo(
"PLANTILLA", value);
390 public string _GrupoDest
394 return Convert.ToString(_Campo(
"GRUPODEST"));
398 _Campo(
"GRUPODEST", value);
407 public string _Observaciones
411 return Convert.ToString(_Campo(
"OBSERVACIO"));
415 _Campo(
"OBSERVACIO", value);
423 [DefaultValue(
false)]
428 return Convert.ToBoolean(_Campo(
"CERRADO"));
432 _Campo(
"CERRADO", value);
441 public DateTime? _FechaCierre
445 object obj = _Campo(
"F_CIERRE");
446 if (obj == null || obj == DBNull.Value)
449 return Convert.ToDateTime(_Campo(
"F_CIERRE"));
453 _Campo(
"F_CIERRE", value);
462 public string _Cuerpo
466 return Convert.ToString(_Campo(
"CUERPO")).Trim();
470 _Campo(
"CUERPO", value);
479 public string _Impresora
483 return Convert.ToString(_Campo(
"IMP_SEL")).Trim();
487 _Campo(
"IMP_SEL", value);
495 public int _Copias {
get;
set; } = -1;
501 [DefaultValue(
false)]
502 public bool _EmailValidarUnoAUno
506 return Convert.ToBoolean(_Campo(
"EMAI_VALUN"));
510 _Campo(
"EMAI_VALUN", value);
519 public string _Imp_Fichero
523 string fichero = Convert.ToString(_Campo(
"IMP_FILE")).Trim();
529 _Campo(
"IMP_FILE", value);
538 public string _Imp_TitulosColumnas
542 string columnas = Convert.ToString(_Campo(
"IMP_CAMPS")).Trim();
548 _Campo(
"IMP_CAMPS", value);
557 public string _Imp_TituloCampoClave
561 string lcCampoClave = Convert.ToString(_Campo(
"IMP_CCLIBR")).Trim();
567 _Campo(
"IMP_CCLIBR", value);
577 public string _Imp_CamposEmailDireccion
581 string fichero = Convert.ToString(_Campo(
"IMP_CDEST")).Trim();
587 _Campo(
"IMP_CDEST", value);
595 [DefaultValue(
false)]
596 public bool _ExcluirClientesBaja
600 return Convert.ToBoolean(_Campo(
"FLT_EXCBAJ"));
604 _Campo(
"FLT_EXCBAJ", value);
616 if (_oFicherosAdjuntosComunicados == null)
620 _oFicherosAdjuntosComunicados._ewMantePrincipal =
this;
622 _oFicherosAdjuntosComunicados._Load();
626 if (Convert.ToString(_oFicherosAdjuntosComunicados._Claves._Codigo._Valor) != _Codigo)
628 _oFicherosAdjuntosComunicados._Claves._Empresa._Valor = this._lcEmpresa;
629 _oFicherosAdjuntosComunicados._Claves._Codigo._Valor = _Codigo;
631 _oFicherosAdjuntosComunicados._Load();
635 return _oFicherosAdjuntosComunicados;
657 public delegate
void _Error_Message_LineaDestinatario_After_Handler(
string tcMissatge);
670 public bool _DesactivarEvento_Error_Message_LineaDestinatario_After {
get;
set; } =
false;
679 public string _Error_Message_LineaDestinatario
681 get {
return _cError_message_LineaDestinatario; }
684 _cError_message_LineaDestinatario = value;
686 if (!
string.IsNullOrWhiteSpace(_cError_message_LineaDestinatario))
688 if (!_DesactivarEvento_Error_Message_LineaDestinatario_After)
690 if (this._Error_Message_LineaDestinatario_After != null)
691 this._Error_Message_LineaDestinatario_After(_cError_message_LineaDestinatario);
696 private string _cError_message_LineaDestinatario =
"";
702 public bool _Cancelando =
false;
720 if (_IsDuplicar && this._nTipoDestinatarios != 2 )
722 return _oDestinatariosClientes;
725 if (_oDestinatariosClientes == null)
729 _oDestinatariosClientes._ewMantePrincipal =
this;
731 _oDestinatariosClientes._Load();
735 if (Convert.ToString(_oDestinatariosClientes._Claves._CodigoEntidad._Valor) != _Codigo)
737 _oDestinatariosClientes._Claves._CodigoEntidad._Valor = _Codigo;
739 _oDestinatariosClientes._Load();
744 return _oDestinatariosClientes;
757 if (_IsDuplicar && this._nTipoDestinatarios != 3 )
759 return _oDestinatariosProveedores;
762 if (_oDestinatariosProveedores == null)
766 _oDestinatariosProveedores._ewMantePrincipal =
this;
768 _oDestinatariosProveedores._Load();
772 if (Convert.ToString(_oDestinatariosProveedores._Claves._CodigoEntidad._Valor) != _Codigo)
774 _oDestinatariosProveedores._Claves._CodigoEntidad._Valor = _Codigo;
776 _oDestinatariosProveedores._Load();
781 return _oDestinatariosProveedores;
794 if (_IsDuplicar && this._nTipoDestinatarios != 4)
796 return _oDestinatariosClientesPotenciales;
799 if (_oDestinatariosClientesPotenciales == null)
803 _oDestinatariosClientesPotenciales._ewMantePrincipal =
this;
805 _oDestinatariosClientesPotenciales._Load();
809 if (Convert.ToString(_oDestinatariosClientesPotenciales._Claves._CodigoEntidad._Valor) != _Codigo)
811 _oDestinatariosClientesPotenciales._Claves._CodigoEntidad._Valor = _Codigo;
813 _oDestinatariosClientesPotenciales._Load();
818 return _oDestinatariosClientesPotenciales;
831 if (_IsDuplicar && this._nTipoDestinatarios != 6 )
833 return _oDestinatariosVendedores;
836 if (_oDestinatariosVendedores == null)
840 _oDestinatariosVendedores._ewMantePrincipal =
this;
842 _oDestinatariosVendedores._Load();
846 if (Convert.ToString(_oDestinatariosVendedores._Claves._CodigoEntidad._Valor) != _Codigo)
848 _oDestinatariosVendedores._Claves._CodigoEntidad._Valor = _Codigo;
850 _oDestinatariosVendedores._Load();
855 return _oDestinatariosVendedores;
868 if (_IsDuplicar && this._nTipoDestinatarios != 7 )
870 return _oDestinatariosCuentas;
873 if (_oDestinatariosCuentas == null)
877 _oDestinatariosCuentas._ewMantePrincipal =
this;
879 _oDestinatariosCuentas._Load();
883 if (Convert.ToString(_oDestinatariosCuentas._Claves._CodigoEntidad._Valor) != _Codigo)
885 _oDestinatariosCuentas._Claves._CodigoEntidad._Valor = _Codigo;
887 _oDestinatariosCuentas._Load();
892 return _oDestinatariosCuentas;
905 if (_IsDuplicar && this._nTipoDestinatarios != 8 )
907 return _oDestinatariosUsuarios;
910 if (_oDestinatariosUsuarios == null)
914 _oDestinatariosUsuarios._ewMantePrincipal =
this;
916 _oDestinatariosUsuarios._Load();
920 if (Convert.ToString(_oDestinatariosUsuarios._Claves._CodigoEntidad._Valor) != _Codigo)
922 _oDestinatariosUsuarios._Claves._CodigoEntidad._Valor = _Codigo;
924 _oDestinatariosUsuarios._Load();
929 return _oDestinatariosUsuarios;
943 if (_IsDuplicar && this._nTipoDestinatarios != 5)
945 return _oDestinatariosFicheroExterno;
948 if (_oDestinatariosFicheroExterno == null)
952 _oDestinatariosFicheroExterno._ewMantePrincipal =
this;
954 _oDestinatariosFicheroExterno._Load();
958 if (Convert.ToString(_oDestinatariosFicheroExterno._Claves._CodigoEntidad._Valor) != _Codigo)
960 _oDestinatariosFicheroExterno._Claves._CodigoEntidad._Valor = _Codigo;
962 _oDestinatariosFicheroExterno._Load();
967 return _oDestinatariosFicheroExterno;
985 public bool _ComunicadoProcExterno =
false;
994 public string _FicheroXmlRespuestaComunicadoProcExterno =
"";
1000 public bool _EsComunicadoRgpd
1019 public string _FicheroXmlEnlaceComunicadoProcExterno =
"";
1022 #region PROPIEDADES ESPECÍFICAS ÚTILES EN COMUNICADOS EXTERNOS GENERADOS DESDE ADDON RGDP 1028 #endregion PROPIEDADES ESPECÍFICAS ÚTILES EN COMUNICADOS EXTERNOS GENERADOS DESDE ADDON RGDP 1031 #endregion PROPIEDADES PÚBLICAS 1034 #region CONSTRUCTORES 1042 this.constructorVarios();
1054 this.constructorVarios();
1056 this._Codigo = tcCodigo;
1065 private void constructorVarios()
1067 this._lTodos =
true;
1068 this._Clave =
"Codigo";
1069 this._DataBase =
"Gestion";
1070 this._Tabla =
"c_comuni";
1076 this._GestionarCampoEmpresa =
true;
1078 this.Navegacion._Condicion =
"EMPRESA = " + DB.SQLString(_lcEmpresa);
1080 this._Pantalla =
"COMUNICA";
1082 this._Browser_Titulos_Campos =
"Código, Nombre";
1083 this._Browser_Clave =
"Código";
1084 this._Browser_Condicion =
"EMPRESA = '" + Convert.ToString(_lcEmpresa) +
"' ";
1090 string lcColumnaDestinatarios =
"";
1093 string lcNombreElemento =
"";
1098 if (lnElemento == 1)
1100 lcColumnaDestinatarios = DB.SQLIif(
"c.tipo=" + Convert.ToString((
int)item),
"'" + lcNombreElemento +
"'",
"SPACE(30)");
1104 lcColumnaDestinatarios = DB.SQLIif(
"c.tipo=" + Convert.ToString((
int)item),
"'" + lcNombreElemento +
"'", lcColumnaDestinatarios);
1108 lcColumnaDestinatarios +=
" as Destinatarios";
1110 lcColumnaDestinatarios =
"";
1111 this._Browser_Consulta_Personalizada =
"SELECT c.codigo as Código, c.nombre as Nombre, " +
1112 lcColumnaDestinatarios +
" " +
1113 "from " + DB.SQLDatabase(
"gestion",
"c_comuni") +
" c " +
1114 " where empresa=" + DB.SQLString(this._lcEmpresa) +
" " +
1115 "order by c.codigo ";
1117 _Browser_Titulo =
"Selección de comunicados";
1122 this._TituloMantenimiento =
"Mantenimiento de comunicados";
1123 this._TituloCabecera =
"Comunicados";
1131 #endregion CONSTRUCTORES 1134 #region METODOS PÚBLICOS OVERRIDE 1146 this._ListewManteTRel.Clear();
1148 _oConfiguracionComunicadosListados = null;
1150 if (
string.IsNullOrWhiteSpace(this._Codigo))
1151 this._ManteTRelDestinatarios = null;
1157 this._FicherosAdjuntosComunicados._Load();
1161 this._SeleccionarManteTRel();
1175 string lcCodigo = this._Codigo;
1177 llOk = base._Delete();
1184 this._RetrocederContadorEmpresa(lcCodigo);
1189 if (this._ManteTRelDestinatarios != null)
1190 this._ManteTRelDestinatarios._Delete();
1194 this._FicherosAdjuntosComunicados._Delete();
1203 DB.SQLExec(
"delete from " + DB.SQLDatabase(
"gestion",
"h_comuni") +
" " +
1204 "where empresa=" + DB.SQLString(this._lcEmpresa) +
" and codigo=" + DB.SQLString(lcCodigo));
1218 _Config = _oConfiguracionComunicadosListados == null ?
"" : _oConfiguracionComunicadosListados.
ToString();
1220 bool llOk = base._Save();
1224 if (this._oFicherosAdjuntosComunicados != null)
1225 this._oFicherosAdjuntosComunicados.
_Save();
1230 if (this._ManteTRelDestinatarios != null)
1232 _SeleccionarManteTRel();
1233 this._ManteTRelDestinatarios._Save();
1247 this._Empresa = this._lcEmpresa;
1249 bool llOk = base._Save_Before();
1256 if (!_oConfiguracionComunicadosListados.
_Validate())
1258 this._Error_Message = _oConfiguracionComunicadosListados.
_ErrorMessage;
1263 if (llOk && !FunctionsComu._ControlImagenes(_Cuerpo))
1265 _Error_Message =
"No se puede guardar el comunicado porque el tamaño total de las imágenes incluidas es superior a 1 MB.";
1284 if (
string.IsNullOrWhiteSpace(tcCodigo))
1286 tcCodigo = _ObtenerCodigoNuevo();
1289 tcCodigo = tcCodigo.Trim().PadLeft(DB.SQLAnchuraCampo(
"gestion",
"c_comuni",
"codigo"),
'0');
1293 if (tcCodigo.Trim().Length != DB.SQLAnchuraCampo(
"gestion",
"c_comuni",
"codigo"))
1295 _IsDuplicar =
false;
1299 duplicado = base._Duplicar(tcCodigo);
1307 oComunicados.
_Save();
1310 _IsDuplicar =
false;
1322 this._ForzarShowDialog =
true;
1329 #endregion METODOS PÚBLICOS OVERRIDE 1332 #region MÉTODOS PROTECTED OVERRIDE 1340 base._DescargarDatos();
1342 this._nTipoEnvio = 0;
1343 this._nTipoDestinatarios = 1;
1345 this._oFicherosAdjuntosComunicados = null;
1347 this._Imagenes = null;
1349 _oConfiguracionComunicadosListados = null;
1363 this._oDestinatariosClientes = null;
1364 this._oDestinatariosProveedores = null;
1365 this._oDestinatariosClientesPotenciales = null;
1366 this._oDestinatariosFicheroExterno = null;
1367 this._oDestinatariosCuentas = null;
1368 this._oDestinatariosVendedores = null;
1369 this._oDestinatariosUsuarios = null;
1372 this._ListewManteTRel.Clear();
1384 string lcWhere =
"";
1388 lcWhere = base._Where();
1389 if (!
string.IsNullOrWhiteSpace(lcWhere))
1390 lcWhere = lcWhere +
" and empresa = " + DB.SQLString(this._lcEmpresa);
1396 #endregion PROTECTED OVERRIDE 1399 #region MÉTODOS PROTECTED 1412 tcMensajeError =
"";
1415 string lcTrozo =
"";
1417 lcTrozo =
"No se ha detectado el campo que identifica la columna Email";
1419 lcTrozo =
"No se han detectado los campos que identifican las columnas Dirección, C.Postal, Población y Provincia";
1421 tcMensajeError = lcTrozo +
" en los destinatarios del grupo seleccionado.";
1426 Dictionary<string, string> loDicCamposEmailDireccion =
new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(toGrupo.
_Imp_CamposEmailDireccion.Trim());
1427 string lcValor =
"";
1428 int lnPosSep = 0, lnPosColumna = 0;
1434 switch (this._TipoEnvio)
1438 if (loDicCamposEmailDireccion.TryGetValue(
"email", out lcValor))
1440 lnPosSep = lcValor.IndexOf(
" @@ ");
1443 lnPosColumna = Convert.ToInt32(lcValor.Substring(lnPosSep + 4).Trim()) + 1;
1444 lcValor = lcValor.Substring(0, lnPosSep);
1445 if (!
string.IsNullOrWhiteSpace(lcValor) && lnPosColumna >= 1)
1452 tcMensajeError =
"No se ha detectado el campo que identifica la columna Email en los destinatarios del grupo " +
1453 "seleccionado." + Environment.NewLine + Environment.NewLine +
1454 "Imposible importar destinatarios del grupo.";
1461 if (loDicCamposEmailDireccion.TryGetValue(
"direccion", out lcValor))
1463 lnPosSep = lcValor.IndexOf(
" @@ ");
1466 lnPosColumna = Convert.ToInt32(lcValor.Substring(lnPosSep + 4).Trim()) + 1;
1467 lcValor = lcValor.Substring(0, lnPosSep);
1468 if (!
string.IsNullOrWhiteSpace(lcValor) && lnPosColumna >= 1)
1475 if (loDicCamposEmailDireccion.TryGetValue(
"cpostal", out lcValor))
1477 lnPosSep = lcValor.IndexOf(
" @@ ");
1480 lnPosColumna = Convert.ToInt32(lcValor.Substring(lnPosSep + 4).Trim()) + 1;
1481 lcValor = lcValor.Substring(0, lnPosSep);
1482 if (!
string.IsNullOrWhiteSpace(lcValor) && lnPosColumna >= 1)
1490 if (loDicCamposEmailDireccion.TryGetValue(
"poblacion", out lcValor))
1492 lnPosSep = lcValor.IndexOf(
" @@ ");
1495 lnPosColumna = Convert.ToInt32(lcValor.Substring(lnPosSep + 4).Trim()) + 1;
1496 lcValor = lcValor.Substring(0, lnPosSep);
1497 if (!
string.IsNullOrWhiteSpace(lcValor) && lnPosColumna >= 1)
1505 if (loDicCamposEmailDireccion.TryGetValue(
"provincia", out lcValor))
1507 lnPosSep = lcValor.IndexOf(
" @@ ");
1510 lnPosColumna = Convert.ToInt32(lcValor.Substring(lnPosSep + 4).Trim()) + 1;
1511 lcValor = lcValor.Substring(0, lnPosSep);
1512 if (!
string.IsNullOrWhiteSpace(lcValor) && lnPosColumna >= 1)
1520 tcMensajeError =
"No se han detectado los campos que identifican la dirección, c.postal, población y provincia " +
1521 "en los destinatarios del grupo seleccionado." + Environment.NewLine + Environment.NewLine +
1522 "Imposible importar destinatarios del grupo.";
1531 tcMensajeError =
"Se ha producido un error: " + e.Message;
1549 string lcDestino =
"";
1551 if (
string.IsNullOrWhiteSpace(tcJsonCamposEmailDireccion))
1554 Dictionary<string, string> loDicCamposEmailDireccion =
new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(tcJsonCamposEmailDireccion);
1572 switch (this._TipoEnvio)
1575 string lcColEmail =
"";
1576 if (loDicCamposEmailDireccion.TryGetValue(
"email", out lcColEmail))
1579 if (!
string.IsNullOrWhiteSpace(lcColEmail) && lcColEmail.IndexOf(
" @@ ") > 0)
1581 int lnPos = lcColEmail.IndexOf(
" @@ ");
1587 int lnPosColEmail = Convert.ToInt32(lcColEmail.Substring(lnPos + 4).Trim()) + 1;
1588 if (lnPosColEmail >= 1)
1590 toPropertyInfo = loType.GetProperty(
"_Campo" + lnPosColEmail.ToString().Trim());
1591 lcDestino = Convert.ToString(toPropertyInfo.GetValue(toDestinatarioGrupo, null));
1599 string lcColDireccion =
"";
1600 string lcColCodPostal =
"";
1601 string lcColPoblacion =
"";
1602 string lcColProvincia =
"";
1603 string lcValorDireccion =
"";
1604 string lcValorCodPostal =
"";
1605 string lcValorPoblacion =
"";
1606 string lcValorProvincia =
"";
1607 int lnPosicionCol = 0;
1609 if (loDicCamposEmailDireccion.TryGetValue(
"direccion", out lcColDireccion))
1611 if (!
string.IsNullOrWhiteSpace(lcColDireccion) && lcColDireccion.IndexOf(
" @@ ") > 0)
1613 int lnPos = lcColDireccion.IndexOf(
" @@ ");
1614 lnPosicionCol = Convert.ToInt32(lcColDireccion.Substring(lnPos + 4).Trim()) + 1;
1615 if (lnPosicionCol >= 1)
1617 toPropertyInfo = loType.GetProperty(
"_Campo" + lnPosicionCol.ToString().Trim());
1618 lcValorDireccion = Convert.ToString(toPropertyInfo.GetValue(toDestinatarioGrupo, null));
1623 if (loDicCamposEmailDireccion.TryGetValue(
"cpostal", out lcColCodPostal))
1625 if (!
string.IsNullOrWhiteSpace(lcColCodPostal) && lcColCodPostal.IndexOf(
" @@ ") > 0)
1627 int lnPos = lcColCodPostal.IndexOf(
" @@ ");
1632 lnPosicionCol = Convert.ToInt32(lcColCodPostal.Substring(lnPos + 4).Trim()) + 1;
1633 if (lnPosicionCol >= 1)
1635 toPropertyInfo = loType.GetProperty(
"_Campo" + lnPosicionCol.ToString().Trim());
1636 lcValorCodPostal = Convert.ToString(toPropertyInfo.GetValue(toDestinatarioGrupo, null));
1641 if (loDicCamposEmailDireccion.TryGetValue(
"poblacion", out lcColPoblacion))
1643 if (!
string.IsNullOrWhiteSpace(lcColPoblacion) && lcColPoblacion.IndexOf(
" @@ ") > 0)
1645 int lnPos = lcColPoblacion.IndexOf(
" @@ ");
1646 lnPosicionCol = Convert.ToInt32(lcColPoblacion.Substring(lnPos + 4).Trim()) + 1;
1647 if (lnPosicionCol >= 1)
1649 toPropertyInfo = loType.GetProperty(
"_Campo" + lnPosicionCol.ToString().Trim());
1650 lcValorPoblacion = Convert.ToString(toPropertyInfo.GetValue(toDestinatarioGrupo, null));
1655 if (loDicCamposEmailDireccion.TryGetValue(
"provincia", out lcColProvincia))
1657 if (!
string.IsNullOrWhiteSpace(lcColProvincia) && lcColProvincia.IndexOf(
" @@ ") > 0)
1659 int lnPos = lcColProvincia.IndexOf(
" @@ ");
1660 lnPosicionCol = Convert.ToInt32(lcColProvincia.Substring(lnPos + 4).Trim()) + 1;
1661 if (lnPosicionCol >= 1)
1663 toPropertyInfo = loType.GetProperty(
"_Campo" + lnPosicionCol.ToString().Trim());
1664 lcValorProvincia = Convert.ToString(toPropertyInfo.GetValue(toDestinatarioGrupo, null));
1669 lcDestino = lcValorDireccion.Trim() +
" " + lcValorCodPostal +
" " + lcValorPoblacion +
" " + lcValorProvincia;
1676 FUNCTIONS._MessageBox(
"Se ha producido un error: " + e.Message,
"Comunicados", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
1684 #endregion MÉTODOS PROTECTED 1687 #region MÉTODOS PÚBLICOS 1701 foreach (KeyValuePair<string, object> loItem
in this._Addons)
1710 loExtension._AdjuntarArchivosAdicionales(tlstArchivosAdjuntar);
1713 catch (Exception loEx)
1715 DB.Registrar_Error(loEx);
1716 this._Addons_Messagebox(loItem.Key,
"AdjuntarArchivosAdicionales", loEx.Message);
1735 foreach (KeyValuePair<string, object> loItem
in this._Addons)
1744 loExtension._eBeforeAfter = teBeforeAfter;
1745 loExtension._GenerarComunicado();
1748 catch (Exception loEx)
1750 DB.Registrar_Error(loEx);
1751 this._Addons_Messagebox(loItem.Key,
"GenerarComunicado", loEx.Message);
1774 foreach (KeyValuePair<string, object> loItem
in this._Addons)
1783 loExtension._eBeforeAfter = teBeforeAfter;
1784 loExtension._EnviarEmailImprimir(toSendMail, tcCuerpo, tcCodigo, tlEmailEnviadoImpresoOk);
1787 catch (Exception loEx)
1789 DB.Registrar_Error(loEx);
1790 this._Addons_Messagebox(loItem.Key,
"EnviarEmailImprimir", loEx.Message);
1807 Dictionary<string, string> loDicDatosAdic =
new Dictionary<string, string>();
1808 Dictionary<string, string> loDicDatosAddon =
new Dictionary<string, string>();
1812 foreach (KeyValuePair<string, object> loItem
in this._Addons)
1821 loDicDatosAddon = loExtension._ObtenerDatosAdicXmlRespuesta();
1822 if (loDicDatosAddon.Count > 0)
1824 foreach (var datos
in loDicDatosAddon)
1827 if (!loDicDatosAdic.TryGetValue(datos.Key, out valor))
1828 loDicDatosAdic.Add(datos.Key, datos.Value);
1833 catch (Exception loEx)
1835 DB.Registrar_Error(loEx);
1836 this._Addons_Messagebox(loItem.Key,
"ObtenerDatosAdicXmlRespuesta", loEx.Message);
1840 return loDicDatosAdic;
1852 switch (this._nTipoDestinatarios)
1857 this._ManteTRelDestinatarios = null;
1861 this._ManteTRelDestinatarios = this._DestinatariosClientes;
1865 this._ManteTRelDestinatarios = this._DestinatariosProveedores;
1869 this._ManteTRelDestinatarios = this._DestinatariosClientesPotenciales;
1873 this._ManteTRelDestinatarios = this._DestinatariosFicheroExterno;
1877 this._ManteTRelDestinatarios = this._DestinatariosVendedores;
1881 this._ManteTRelDestinatarios = this._DestinatariosCuentas;
1885 this._ManteTRelDestinatarios = this._DestinatariosUsuarios;
1902 if (toDicCamposEmailDireccion.Count == 0)
1903 return string.Empty;
1907 string lcDestino =
"";
1909 switch (this._TipoEnvio)
1913 string lcCampoEmail =
"";
1914 toDicCamposEmailDireccion.TryGetValue(
"email", out lcCampoEmail);
1916 if (!
string.IsNullOrWhiteSpace(lcCampoEmail))
1920 lnPosSep = lcCampoEmail.IndexOf(
" @@ ");
1922 lcCampoEmail = lcCampoEmail.Substring(0, lnPosSep);
1924 lcCampoEmail = Convert.ToString(loRowFicheroExterno[lcCampoEmail]);
1927 lcDestino = lcCampoEmail;
1933 string lcCampoDireccion =
"", lcCampoCPostal =
"", lcCampoPoblacion =
"", lcCampoProvincia =
"";
1935 toDicCamposEmailDireccion.TryGetValue(
"direccion", out lcCampoDireccion);
1936 if (!
string.IsNullOrWhiteSpace(lcCampoDireccion))
1940 lnPosSep = lcCampoDireccion.IndexOf(
" @@ ");
1942 lcCampoDireccion = lcCampoDireccion.Substring(0, lnPosSep);
1943 lcCampoDireccion = Convert.ToString(loRowFicheroExterno[lcCampoDireccion]);
1946 toDicCamposEmailDireccion.TryGetValue(
"cpostal", out lcCampoCPostal);
1947 if (!
string.IsNullOrWhiteSpace(lcCampoCPostal))
1951 lnPosSep = lcCampoCPostal.IndexOf(
" @@ ");
1953 lcCampoCPostal = lcCampoCPostal.Substring(0, lnPosSep);
1955 lcCampoCPostal = Convert.ToString(loRowFicheroExterno[lcCampoCPostal]);
1958 toDicCamposEmailDireccion.TryGetValue(
"poblacion", out lcCampoPoblacion);
1959 if (!
string.IsNullOrWhiteSpace(lcCampoPoblacion))
1963 lnPosSep = lcCampoPoblacion.IndexOf(
" @@ ");
1965 lcCampoPoblacion = lcCampoPoblacion.Substring(0, lnPosSep);
1967 lcCampoPoblacion = Convert.ToString(loRowFicheroExterno[lcCampoPoblacion]);
1970 toDicCamposEmailDireccion.TryGetValue(
"provincia", out lcCampoProvincia);
1971 if (!
string.IsNullOrWhiteSpace(lcCampoProvincia))
1975 lnPosSep = lcCampoProvincia.IndexOf(
" @@ ");
1977 lcCampoProvincia = lcCampoProvincia.Substring(0, lnPosSep);
1978 lcCampoProvincia = Convert.ToString(loRowFicheroExterno[lcCampoProvincia]);
1981 lcDestino = lcCampoDireccion.Trim() +
" " +
1982 lcCampoCPostal.Trim() +
" " +
1983 lcCampoPoblacion.Trim() +
" " +
1984 lcCampoProvincia +
" ";
1999 string lcValorSiguiente =
"";
2001 if (
string.IsNullOrEmpty(tcPrefix))
2003 string lcValorActual = Convert.ToString(DB.SQLValor(
"empresa",
"codigo",
this._lcEmpresa,
"Comunica"));
2004 lcValorSiguiente = Convert.ToString(Convert.ToInt32(lcValorActual) + 1);
2005 DB.SQLExec(
"update " + DB.SQLDatabase(
"gestion",
"empresa") +
" set comunica=" + lcValorSiguiente +
" " +
2006 "where codigo=" + DB.SQLString(this._lcEmpresa));
2011 int lnNumero = 0, lnAnchoCodigo = 0, lnAnchoCampo = 0;
2012 string lcSql, lcUltimoCodigo, lcWhere =
string.Empty;
2013 DataTable ldtPlantillas =
new DataTable();
2015 lnAnchoCampo = DB.SQLAnchuraCampo(_DataBase, _Tabla,
"codigo");
2016 lnAnchoCodigo = lnAnchoCampo - tcPrefix.Length;
2019 if (lnAnchoCampo > tcPrefix.Trim().Length)
2020 lcWhere = $
" and isnumeric(substring(codigo, {tcPrefix.Trim().Length + 1}, {lnAnchoCampo})) = {DB.SQLTrue()}";
2022 lcSql = $
"select top 1 codigo as codigo from {DB.SQLDatabase(_DataBase, _Tabla)} where ";
2023 lcSql += $
" codigo like '{tcPrefix}%' {lcWhere} order by codigo desc";
2025 bool llOk = DB.SQLExec(lcSql, ref ldtPlantillas);
2027 if (ldtPlantillas.Rows.Count == 0)
2029 lcValorSiguiente = $
"{tcPrefix}{new string('0', lnAnchoCodigo - 1)}1";
2033 lcUltimoCodigo = Convert.ToString(ldtPlantillas.Rows[0][
"codigo"]);
2034 if (!
string.IsNullOrEmpty(tcPrefix)) lcUltimoCodigo = lcUltimoCodigo.Replace(tcPrefix,
"");
2036 if (Int32.TryParse(lcUltimoCodigo, out lnNumero))
2038 lcValorSiguiente = ((lnNumero + 1).ToString()).Trim().PadLeft(lnAnchoCodigo,
'0');
2039 lcValorSiguiente = $
"{tcPrefix}{lcValorSiguiente}";
2043 FUNCTIONS._DisposeDatatable(ldtPlantillas);
2046 return lcValorSiguiente;
2057 if (
string.IsNullOrWhiteSpace(lcValorContadorPantalla))
2062 int lnValorContadorPantalla = 0;
2063 if (!Int32.TryParse(lcValorContadorPantalla, out lnValorContadorPantalla))
2066 int lnValorContadorEmpresa = Convert.ToInt32(DB.SQLValor(
"empresa",
"codigo",
this._lcEmpresa,
"Comunica"));
2067 if (lnValorContadorPantalla == lnValorContadorEmpresa)
2069 if (lnValorContadorEmpresa > 0)
2071 lnValorContadorEmpresa--;
2073 DB.SQLExec(
"update " + DB.SQLDatabase(
"gestion",
"empresa") +
" set comunica=" + DB.SQLString(lnValorContadorEmpresa) +
" " +
2074 "where codigo=" + DB.SQLString(this._lcEmpresa));
2089 bool llExiste =
false;
2090 string lcValorCodigo = Convert.ToString(DB.SQLValor(
"c_comuni",
"empresa=" + DB.SQLString(
this._lcEmpresa) +
" and codigo", tcCodigo,
"codigo"));
2091 if (lcValorCodigo == tcCodigo)
2103 if (
string.IsNullOrWhiteSpace(this._Codigo))
2105 this._Error_Message =
"No está situado en un comunicado." + Environment.NewLine + Environment.NewLine +
2106 "Imposible realizar acción de cerrar comunicado.";
2110 this._Cerrado =
true;
2111 this._FechaCierre = DateTime.Today;
2122 if (
string.IsNullOrWhiteSpace(this._Codigo))
2124 this._Error_Message =
"No está situado en un comunicado." + Environment.NewLine + Environment.NewLine +
2125 "Imposible realizar acción de abrir comunicado.";
2129 this._Cerrado =
false;
2130 this._FechaCierre = null;
2144 tcMensajeError =
"";
2151 if (!this.validarImportarGrupoFicheroExterno(loGrupo, out tcMensajeError))
2162 this._GrupoDest = loGrupo.
_Codigo;
2164 this._DestinatariosFicheroExterno._Items.Clear();
2166 PropertyInfo propInfo = null;
2168 string lcNombreCampo =
"", lcValor =
"", lcDestino =
"";
2172 loDestComunicado.
_Codigo = loDestGrupo._Codigo;
2173 loDestComunicado._Destino =
"";
2177 for (
int ln_i = 1; ln_i <= 50; ln_i++)
2179 lcNombreCampo =
"campo" + ln_i.ToString().Trim();
2180 propInfo = loType.GetProperty(
"_Campo" + ln_i.ToString().Trim());
2181 lcValor = Convert.ToString(propInfo.GetValue(loDestGrupo, null));
2182 propInfo.SetValue(loDestComunicado, lcValor, null);
2185 loDestComunicado._Destino = lcDestino;
2192 #endregion MÉTODOS PÚBLICOS 2201 #region PROPIEDADES PRIVADAS 2206 private string _lcEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString().Trim();
2209 #endregion PROPIEDADES PRIVADAS 2212 #region PROPIEDADES PUBLICAS 2227 #endregion PROPIEDADES PUBLICAS 2230 #region CONSTRUCTORES 2239 this.crearEstructura();
2251 this.crearEstructura();
2253 this._Claves._Empresa._Valor = this._lcEmpresa;
2254 this._Claves._Codigo._Valor = tcCodigo;
2260 #endregion CONSTRUCTORES 2263 #region MÉTODOS PRIVADOS 2269 private void crearEstructura()
2271 this._DataBase =
"GESTION";
2272 this._Tabla =
"ADJUNTOC";
2273 this._OrdenarPor =
"LINEA";
2275 this._Condicion =
"";
2276 this._Titulo_Browser =
"";
2279 this._AddCampoTRel(
"_Empresa",
"Empresa",
false,
true,
false);
2281 this._AddCampoTRel(
"_Codigo",
"Codigo",
false,
true,
false);
2283 this._AddCampoTRel(
"_Linea",
"Linea",
false,
true,
false);
2285 this._AddCampoTRel(
"_Fichero",
"Fichero",
true,
true,
true,
"Fichero");
2287 this._AddCampoTRel(
"_Usuario",
"Usuario",
false,
true,
false);
2293 #endregion MÉTODOS PRIVADOS 2296 #region MÉTODOS PUBLIC OVERRIDE SOBREESCRITOS DE EWMANTTREL 2304 this._Claves._Empresa._Valor = this._lcEmpresa;
2305 this._Claves._Codigo._Valor = this._oComunicado._Codigo;
2317 this._Claves._Empresa._Valor = this._lcEmpresa;
2318 this._Claves._Codigo._Valor = this._oComunicado._Codigo;
2326 #endregion MÉTODOS PUBLIC OVERRIDE SOBREESCRITOS DE EWMANTTREL 2363 this._Empresa._EsFiltro =
true;
2364 this._Empresa._EsCampoLinea =
false;
2370 this._Codigo._EsFiltro =
true;
2371 this._Codigo._EsCampoLinea =
false;
2376 this._Linea._EsFiltro =
false;
2377 this._Linea._EsCampoLinea =
true;
2392 public string _Empresa
2396 return this._cEmpresa;
2400 this._cEmpresa = value;
2403 private string _cEmpresa =
"";
2409 public string _Codigo
2413 return this._cCodigo;
2417 this._cCodigo = value;
2420 private string _cCodigo =
"";
2437 private int _nLinea = 0;
2443 public string _Fichero
2447 return this._cFichero;
2451 this._cFichero = value;
2454 private string _cFichero =
"";
2460 public string _Usuario
2464 return this._cUsuario;
2468 this._cUsuario = value;
2471 private string _cUsuario =
"";
2477 public object _Parent
2479 get {
return this._oParent; }
2512 bool lbFilaPlena =
true;
2514 lbFilaPlena = !
string.IsNullOrWhiteSpace(this._Fichero);
DestinatariosFicheroExterno _DestinatariosFicheroExterno
ManteTRel de destinatarios usuarios para el caso de que el grupo de destinatarios corresponda al tipo...
string _ErrorMessage
Mensaje de error
string CodigoDestino
Codigo destino
Clase para el envío de emails
TipoDestinatarios
Enumeración que define los posibles tipos de destinatarios en un grupo de destinatarios o comunicado...
Clase de negocio base para mantenimientos
bool _ExisteCodigo(string tcCodigo)
Devuelve true si existe comunicado en la base de datos con el código pasado como parámetro, false caso contrario.
ManteTRel de destinatarios de tipo 'Clientes potenciales'
TipoPlantillaComunicados
Enumeración que define los posibles tipos de plantillas para comunicados.
string _Imp_TitulosColumnas
Lista de títulos de columnas del fichero importado (en un grupo de destinatarios de tipo importación ...
Struct de retorno de una operación de duplicación
Definición de los objetos campo para las tablas relacionadas
PE-94313: Clase para gestionar el mantenimiento de las imagenes de los artículos PE-97714: Sacamos la...
string obtenerValorColDestinoGrupoFicheroExterno(string tcJsonCamposEmailDireccion, PropertyInfo toPropertyInfo, DestinatariosFicheroExterno.DestinatarioFicheroExterno toDestinatarioGrupo)
Devuelve el valor de la columna destino a poner en un comunicado de tipo 'Fichero externo' cuando lo ...
bool validarImportarGrupoFicheroExterno(GrupoDestComunicados toGrupo, out string tcMensajeError)
Al importar a un comunicado de tipo 'Fichero externo' los destinatarios de un grupo de destinatarios ...
override string _Where()
Evitar que borre el registro de codigo xxxx en las diferentes empresas si los encontraba, cosa que hacía.
override bool _Delete()
Borra el comunicado cargado.
Comunicados()
Constructor vacío.
Clase para las lineas de ficheros adjuntos al comunicado.
Es como el tipo de entrada asientos pero por negocio, sin formulario, pq quiero que me haga las propu...
ManteTRel de destinatarios de tipo 'Vendedores'
Comunicados _Comunicado
Instancia de la clase Comunicados
override void _Load()
Carga del ManteTRel de ficheros adjuntos del comunicado.
override bool _Save()
Guardar el comunicado.
BindingList< _LinTRel > _Items
Lista bindable de todos los items de la tabla relacionada
string _Codigo
Campo código.
Clase de negocio para el mantenimiento de grupos de destinatarios de comunicados. ...
override IResultadoDuplicacion _Duplicar(string tcCodigo)
Override del método de duplicación para realizar validaciones específicas
override string ToString()
Override para serializar el objeto
void _ShowDialog()
Abre el formulario de comunicados en forma modal y muestra el comunicado.
Listas previas Comunicados
bool _ImportarGrupoFicheroExterno(string tcGrupo, out string tcMensajeError)
Añadir los destinatarios de un grupo con tipo destinatarios 'Fichero externo' en un comunicado...
bool _Cerrar()
Cerrar comunicado
ManteTRel de destinatarios de tipo 'Usuarios'
void _SeleccionarManteTRel()
Según el tipo de destinatario seleccionar un mantetrel u otro para utilizar
Clase que permite extender la funcionalidad de la clase Comunicados
string _ObtenerColumnaDestinoDataRowFicheroExterno(DataRow loRowFicheroExterno, Dictionary< string, string > toDicCamposEmailDireccion)
Dado un DataRow de un fichero externo que se está importando, obtiene el campo Email/Dir.Postal que se ha de guardar en la columna _Destino del ManteTrel de destinatarios fichero externo. Se utiliza solo en comunicados. No se utiliza en grupos de destinatarios (en grupos no hay columna email/dir.postal destino).
ManteTRel de destinatarios de tipo 'Clientes'.
string _Imp_CamposEmailDireccion
Nombre de las columnas que representan el email, dirección, cpostal, poblacion, provincia y campo cla...
Comunicados(string tcCodigo)
Constructor con código de comunicado existente.
bool Fila_Plena()
Devuelve true si la línea está completa, false si falta declarar algún campo.
bool _Cerrado
Comunicado cerrado si/no
Clase para uso de funciones genéricas
bool EjecucionCorrecta
Resultado de la operación
ManteTRel de destinatarios de tipo 'Fichero externo Excel, CSV, XML, JSON'
Clave()
Inicializa una nueva instancia de la clase.
TipoParentDestinatarios
Enumeración que define los posibles tipos de entidades padres que pueden acoger destinatarios, en nuestro caso, grupos de destinatarios y comunicados.
virtual string _Codigo
Valor del campo clave que
string _ObtenerCodigoNuevo(string tcPrefix="")
Obtiene un nuevo nº de comunicado utilizando el contador de comunicados de empresa.
FicherosAdjuntosComunicados(string tcCodigo)
Inicializa una nueva intancia de la clase FicherosAdjuntosComunicados
bool _Abrir()
Abrir comunicado
void _Addons_EnviarEmailImprimir(TipoExecute teBeforeAfter, SendMail toSendMail, string tcCuerpo, string tcCodigo, bool tlEmailEnviadoImpresoOk)
Procesos adicionales a realizar antes de enviar email/imprimir a un destinatario y después de enviar/...
ManteTRel de destinatarios de tipo 'Proveedores'
TipoExecute
Tipos de ejecución de los métodos
void _Addons_AdjuntarArchivosAdicionales(List< string > tlstArchivosAdjuntar)
Adjuntar archivos adicionales comunes a todos los destinatarios.
override bool _Save()
Save del ManteTRel de ficheros adjuntos del comunicado.
void _RetrocederContadorEmpresa(string lcValorContadorPantalla)
Retrocede el contador de comunicados de empresa caso que el contador existente en pantalla coincida c...
void _Addons_GenerarComunicado(TipoExecute teBeforeAfter)
Procesos adicionales a realizar antes de generar el comunicado y después de generar el comunicado ...
Campos clave para registros únicos y carga de registros
FicherosAdjuntosComunicados()
Inicializa una nueva intancia de la clase.
_EstadosMantenimiento
Declaro un enum para los estados del mantenimiento.
string _Imp_TituloCampoClave
Título de la columna del fichero importado que ejerce como campo clave.
Comunicados _oComunicado
Objeto de negocio Comunicados del cual cuelga el mantetrel de ficheros adjuntos del comunicado ...
Interficie para resultados de duplicaciones
Definir la estructura de las líneas de destinatarios en un grupo de destinatarios basado en importaci...
Interfaz para objetos línea
IMante _Mante
Manteniemiento parent
string _Config
Configuración de las expresiones de comunicados
static ResultadoDuplicacion Fallida(string mensajeError)
Genera un resultado correcto
override void _Load()
Cargar los datos del comunicado.
override bool _Save_Before()
Verificar que al crear un nuevo comunicado dejemos por lo menos unos campos mínimos declarados...
string _Imp_Fichero
Ruta al fichero importado, caso de grupo de destinatarios de tipo "Importación fichero externo Excel...
_Error_Message_LineaDestinatario_After_Handler _Error_Message_LineaDestinatario_After
Evento que se dispara despues de establecer un valor en _Error_Message_LineaDestinatario ...
static ConfiguracionExpresionesListados _GetConfiguracion(string tcConfig)
Deserializa el objeto ConfiguracionComunicadosListados
FicherosAdjuntosComunicados _oParent
Objeto padre protected de la linea, el ManteTRel del que cuelga.
TipoEnvioComunicados
Enumeración que define los posibles tipos de envío en comunicados.
Dictionary< string, string > _Addons_ObtenerDatosAdicXmlRespuesta()
Obtener información adicional por parte de cada addon para almacenar en el fichero de respuesta XML q...
Clase de negocio para el mantenimiento de comunicados.
Interfaz para la definición de las claves para tablas relacionadas
Clase para el acceso a las tablas relacionadas de los mantenimientos.
Linea()
Inicializa una nueva intancia de la clase
Interface utilizada por los mantenimientos que tienen grid de destinatarios (mantenimiento de grupos ...
Definir la estructura de las líneas.
DateTime _FechaCierre
Fecha de cierre del comunicado.
bool _Validate()
Valida la configuración
Interface mantetrel destinatarios con las propiedades y métodos de la clase ManteTRel que utilizaremo...
ManteTRel de destinatarios de tipo 'Cuentas contables'
Interficie para la configuración de los comunicados
override void _DescargarDatos()
Descargar datos.