3 using System.Collections.Generic;
12 using System.Windows.Forms;
27 # region Propiedades privadas 29 private string _cClase;
30 private string _cLibreria;
31 private string _cCarpeta;
32 private string _cValuekeys =
string.Empty;
34 # endregion Propiedades privadas 36 # region Propiedades públicas 37 public dynamic _Documento = null;
50 protected internal string _DescripcionDocEnlace =
string.Empty;
55 protected internal List<string> _DocumentosEnlace =
new List<string>();
56 # endregion Propiedades públicas 58 # region Eventos y delegados para refrescar el boón al volver de la gestión documental 59 public delegate
void _BotonGestionDocumental_Handler();
72 private void BotonGestionDocumental_Refresh()
74 if (_BotonGestionDocumental_Refresh != null) _BotonGestionDocumental_Refresh();
76 # endregion Eventos y delegados para refrescar el boón al volver de la gestión documental 86 # endregion Constructor 88 # region Métodos protected internal 89 protected internal void _GestDoc_Click()
94 if (_ewcontextmenustrip.Items.Count > 0)
95 _ewcontextmenustrip.Items.Clear();
97 DataTable ldtDocumentos = Documentos();
99 bool llDocumentos = (ldtDocumentos != null && ldtDocumentos.Rows.Count > 0);
103 AddDocumentosMenuContextual(ldtDocumentos);
104 _ewcontextmenustrip.Show(Cursor.Position.X, Cursor.Position.Y);
114 protected internal bool _DocumentosGestionDocumental()
116 DataTable ldtDocumentos = Documentos();
118 bool llDocumentos = (ldtDocumentos != null && ldtDocumentos.Rows.Count > 0);
122 # endregion Métodos protected internal 124 # region Métodos privados 125 public bool ViewDocumento(
int tnId)
133 IDocumento loIDocumento =
new Documento(tnId);
135 llOk = (loIDocumento.
_Id > 0);
136 llOk = llOk && loIDocumento.
_View();
149 private bool ShowDocumento(
int tnId)
152 IDocumento loIDocumento =
new Documento(tnId);
154 llOk = (loIDocumento.
_Id > 0);
157 loIDocumento.
_Show();
167 private void GestDocShow()
171 if (lofrmGestDoc != null)
173 if (_oEnlace != null && !
string.IsNullOrWhiteSpace(_cValuekeys))
176 lofrmGestDoc.
_Enlace = _oEnlace;
180 lofrmGestDoc._ShowDialog();
181 BotonGestionDocumental_Refresh();
191 if (_Documento == null)
198 switch (loTipoDocumento)
201 llOk = EnlaceGestionDocumentalStocks();
205 llOk = EnlaceGestionDocumentalVentasCompras();
208 llOk = EnlaceGestionDocumentalFacturaCompra();
211 llOk = EnlaceGestionDocumentalAsientos();
225 if (loEnlaceGestionDocumental != null)
228 return loEnlaceGestionDocumental;
239 private void LibreriaDocumento()
241 if (_Documento != null)
243 string lcCarpeta =
string.Empty;
245 Type loType = _Documento.GetType();
247 _cLibreria = Convert.ToString(loType.Module);
251 if (_cLibreria ==
"sage.50.exe")
252 _cLibreria = Sage50Assembly(loType, Convert.ToString(loType.Namespace), ref lcCarpeta);
255 _cLibreria = Path.GetFileNameWithoutExtension(_cLibreria);
257 lcCarpeta = loType.Namespace;
259 if (_cLibreria == lcCarpeta)
260 lcCarpeta =
string.Empty;
262 lcCarpeta = lcCarpeta.Replace(_cLibreria +
".",
"");
265 _cCarpeta = lcCarpeta;
266 _cClase = loType.Name;
279 private static string Sage50Assembly(Type toType,
string tcLibreria,ref
string tcCarperta)
281 List<string> ltsLibrerias =
new List<string>() {
"sage.ew.empresa",
"Sage.ES.S50.Comunicados",
"Sage.ES.S50.Fabricacion",
"Sage.ES.S50.Fintech",
"Sage.ES.S50.Modelos",
"Sage.ES.S50.NuevoEjercicio,",
"Sage.ES.S50.S50Update",
"sage.ew.articulo",
"sage.ew.botones",
"sage.ew.cliente",
"sage.ew.contabilidad",
"sage.ew.docscompra",
"sage.ew.docsven",
"sage.ew.docventatpv",
"sage.ew.ewbase",
"sage.ew.formul",
"sage.ew.functions",
"sage.ew.global",
"sage.ew.graficas",
"sage.ew.listados",
"sage.ew.lote",
"sage.ew.o365",
"sage.ew.objetos",
"sage.ew.perfiles",
"sage.ew.sepa",
"sage.ew.serie",
"sage.ew.stocks",
"sage.ew.tpv",
"sage.ew.txtbox",
"sage.ew.usuario" };
283 string lcLibreria = tcLibreria;
285 var lstLibreria = ltsLibrerias.AsEnumerable().Where(l=> lcLibreria.StartsWith(l)).ToList();
287 if (lstLibreria != null && lstLibreria.Count > 0)
289 lcLibreria = lstLibreria.First();
291 if (tcLibreria.StartsWith($
"{lcLibreria}."))
292 tcCarperta = tcLibreria.Replace($
"{lcLibreria}.",
"");
294 tcCarperta = tcLibreria.Replace($
"{lcLibreria}",
"");
298 if (lcLibreria ==
"sage.ew.empresa" && Convert.ToString(toType.Name).ToLower() ==
"empresa")
300 lcLibreria =
"sage.ew.ewbase";
301 tcCarperta =
"sage.ew.empresa";
311 private bool EnlaceGestionDocumentalStocks()
313 return (_Documento._DocumentLineas.Count > 0);
320 private bool EnlaceGestionDocumentalMantenimientos()
329 private bool EnlaceGestionDocumentalFacturaCompra()
331 return (!
string.IsNullOrWhiteSpace(_Documento._Numero) && !
string.IsNullOrWhiteSpace(_Documento._Cabecera._Proveedor));
338 private bool EnlaceGestionDocumentalAsientos()
340 return (_Documento._Numero > 0 && _Documento._Lineas.Count > 0);
347 private bool EnlaceGestionDocumentalVentasCompras()
349 return (!
string.IsNullOrWhiteSpace(_Documento._Numero) && _Documento._Lineas.Count > 0);
358 DataTable ldtDocumentos =
new DataTable();
359 _oEnlace = EnlaceGestionDocumental();
360 _cValuekeys =
string.Empty;
362 if (_Documento != null && _oEnlace != null)
364 if (_oEnlace.
_Keys.Count == 0)
367 string lcValor = FunctionsGestDoc._ValueKeys(_oEnlace);
369 if (
string.IsNullOrWhiteSpace(lcValor))
372 int lnIdEnlace = IdEnlace(_oEnlace);
376 _cValuekeys = lcValor;
378 if (_DocumentosEnlace.Count == 0)
379 ldtDocumentos = FunctionsGestDoc._DocumentosEnlace(_oEnlace, lnIdEnlace, lcValor);
383 return ldtDocumentos;
393 return FunctionsGestDoc._Enlace(toEnlace, _cLibreria, _cClase, _cCarpeta);
400 private void AddDocumentosMenuContextual(DataTable tdtDocumentos)
403 ToolStripItem[] loListDocs =
new ToolStripItem[tdtDocumentos.Rows.Count];
406 foreach (DataRow ldrDocumento
in tdtDocumentos.Rows)
410 if (ldrDocumento[
"iconSmall"] != null)
411 loIconSmall = ((Icon)ldrDocumento[
"iconSmall"]);
413 ToolStripItem loToolStripMenuItem =
new ToolStripMenuItem();
414 loToolStripMenuItem.Text = Convert.ToString(ldrDocumento[
"titulo"]).Trim();
415 loToolStripMenuItem.Name = Convert.ToString(ldrDocumento[
"iddoc"]);
416 loToolStripMenuItem.MouseDown +=
new MouseEventHandler(ToolStripButtonDocumento_MouseDown);
418 if (loIconSmall != null)
419 loToolStripMenuItem.Image = loIconSmall.ToBitmap();
421 loListDocs[lnIndice] = loToolStripMenuItem;
425 _ewcontextmenustrip.Items.AddRange(loListDocs);
427 _ewcontextmenustrip.Items.Add(
new ToolStripSeparator());
429 _ewcontextmenustrip.Items.Add(
"Gestión documental");
430 _ewcontextmenustrip.Items[_ewcontextmenustrip.Items.Count - 1].Name =
"gestdocumental";
431 _ewcontextmenustrip.Items[_ewcontextmenustrip.Items.Count - 1].Click +=
new EventHandler(ToolStripButtoNavigateGestDoc_Click);
439 private void ToolStripButtoNavigateGestDoc_Click(
object sender, EventArgs e)
450 private void ToolStripButtonDocumento_MouseDown(
object sender, MouseEventArgs e)
454 string lcMensajeError =
string.Empty;
458 lnId = Convert.ToInt32(((ToolStripItem)sender).Name);
462 lcMensajeError =
"Se ha producido un error al abrir al documento.";
465 if (lnId > 0 &&
string.IsNullOrWhiteSpace(lcMensajeError))
467 if (e.Button == MouseButtons.Right)
468 llOk = ShowDocumento(lnId);
470 llOk = ViewDocumento(lnId);
473 lcMensajeError = _Error_message;
476 if (!
string.IsNullOrWhiteSpace(lcMensajeError))
477 FUNCTIONS._MessageBox(lcMensajeError,
"Gestión documental", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
479 # endregion Métodos privados 481 # region Métodos privados 489 return FunctionsGestDoc._DeleteDocumentos(toDocumento);
499 _Documento = toDocumento;
503 FormBase loForm = ((dynamic)toDocumento)._FormDocumento;
507 Control[] loControls = loForm.Controls.Find(
"ButtonDocumentoGestDoc",
true);
509 if (loControls != null && loControls.Count() > 0)
527 _Documento = toDocumento;
531 FormBase loForm = ((dynamic)toDocumento)._FormDocumento;
535 Control[] loControls = loForm.Controls.Find(
"ButtonDocumentoGestDoc",
true);
537 if (loControls != null && loControls.Count() > 0)
540 _oButtonDocumentoGestDoc.Enabled =
true;
548 # endregion Métodos privados
void _DocumentosGestionDocumental(IGestionDocumental toDocumento)
Consulta si hay documentos en la gestión documental del formulario, para cambiar de icono Utilizado e...
DialogResult _Show()
Nos presenta el formulario asociado a este objeto
_BotonGestionDocumental_Handler _BotonGestionDocumental_Refresh
Desencadena el evento para poder refrescar el botón de la gestión documental
Interfaz IGestionDocumental para gestionar el enlace de la gestión documental con los diferentes docu...
Interfaz para el el Objeto Documento
Es como el tipo de entrada asientos pero por negocio, sin formulario, pq quiero que me haga las propu...
string _Error_message
En caso que haya error en alguna ejecución, nos añadirá la descripción del error
Clase pública "DocumentosGestDoc" base para la gestión de los documentos a añadir en los mantenimient...
bool _View(int tnVersion=0)
Abrirá el documento en solo lectura en una carpeta temporal del Windows
eTipoDocumentoGestDoc
Enumeración para gestionar el tipo de documento
string _Error_message
Mensaje de error
void _EnabledGestionDocumental(IGestionDocumental toDocumento)
Refresco del estado de enabled del control
Dictionary< string, string > _Keys
Relación entre los campos y las propiedades de la clase de negocio