CargarExtensionesCommand.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using sage.ew.interficies;
6 
7 namespace Sage.ES.S50.Addons
8 {
9  internal class CargarExtensionesCommand : Command
10  {
11  public CargarExtensionesCommand(IAddonsManager addons) : base(addons)
12  {
13  Name = "CargarExtensiones";
14  }
15 
16  protected override void CommandModulo(IModulo modulo, params object[] parameters)
17  {
18  IMante mante = parameters[0] as IMante;
19  IExtensionMante loExtension = null;
20 
21  if (!string.IsNullOrWhiteSpace(mante._Pantalla))
22  {
23  loExtension = (IExtensionMante)modulo._Extension(mante._Pantalla, mante); // PE-105397. Necesitamos capturar el mantenimiento para los manteTRel de los addons
24  if (loExtension == null)
25  {
26  loExtension = (IExtensionMante)modulo._Extension(mante._Pantalla);
27  }
28  }
29 
30  if (loExtension == null && !string.IsNullOrWhiteSpace(mante._Tabla))
31  {
32  loExtension = (IExtensionMante)modulo._Extension(mante._Tabla, mante); // PE-105397. Necesitamos capturar el mantenimiento para los manteTRel de los addons
33  if (loExtension == null)
34  {
35  loExtension = (IExtensionMante)modulo._Extension(mante._Tabla);
36  }
37  }
38 
39  // Task 188006: Preparar la clase MovCaja para que funcionen las extensiones de Mantenimientos.
40  //
41  // La propiedad _ManteAdic se utiliza sólamente en clases que derivan de ewMante pero no tienen formulario de mantenimiento, no
42  // tienen propiedad _Pantalla declarada ni propiedad _Tabla declarada, por ejemplo, la clase MovCaja de TPV y todas sus clases
43  // derivadas (CobrosCaja, CobrosVarios, CobrosPrevision, PagosVarios, PagosPrevision).
44  //
45  if (loExtension == null && !string.IsNullOrWhiteSpace(mante._ManteAdic))
46  {
47  loExtension = (IExtensionMante)modulo._Extension(mante._ManteAdic, mante);
48  if (loExtension == null)
49  {
50  loExtension = (IExtensionMante)modulo._Extension(mante._ManteAdic);
51  }
52  }
53 
54  if (loExtension != null)
55  {
56  loExtension._Mante = mante;
57  mante._Addons.Add(modulo._Nombre, loExtension);
58  }
59  }
60 
61  protected override ExpectedParameters GetExpectedParameters()
62  {
63  return new ExpectedParameters(new Type[] { typeof(IMante) });
64  }
65  protected override bool Condition(params object[] parameters)
66  {
67  return base.Condition(parameters) && (parameters[0] as IMante)._Addons.Count == 0;
68  }
69  }
70 }
PE-93426 Interficie para los módulos de la aplicación
Definition: IModulo.cs:22
Nueva interficie madre de IMantes y de la que colgara ewMante. Propiedades: _Codigo, _Nombre, _Error_Message. Metodos: _New, Save, _Delete, _Load, _Existe_Registro, _Clonar
Definition: IMantes.cs:17
Dictionary< string, object > _Addons
Diccionario donde cargaremos los addons disponibles (PE-100212)
Definition: IMantes.cs:54
string _Tabla
Nombre de la tabla que navegamos
Definition: IMantes.cs:64
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:68
string _Pantalla
Nombre clave del formulario
Definition: IMantes.cs:59
IMante _Mante
Referencia al mantenimiento original
Definition: IDocModulos.cs:79
object _Extension(string tcKey)
Se utilizará para obtener un objeto con las extensiones de los módulos disponibles para el documento ...
string _ManteAdic
Nombre de pantalla "virtual" que vamos a dar a las clases que deriven de ewMante y que necesiten util...
Definition: IMantes.cs:88
string _Nombre
Nombre interno del módulo y nombre del directorio de instación
Definition: IModulo.cs:49