frmDuplicarMante.cs
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
10 using sage.ew.botones;
11 using sage.ew.global;
12 using sage.ew.empresa;
13 using sage.ew.ewbase;
14 using sage.ew.db;
15 using sage.ew.ewbase.Clases;
16 using sage.ew.functions;
17 using sage.ew.formul.Forms;
19 
20 namespace sage.ew.formul.Forms
21 {
25  public partial class frmDuplicarMante : FormDialog
26  {
27  #region PROPIEDADES
28 
29  dynamic txtOrigen = null;
30  dynamic txtDestino = null;
31  private ewMante _ewMante = null;
32  private string _codigoOrigen = string.Empty;
36  public string lcNewCodigo = "";
40  public string lcMsgError = "";
41 
45  public bool MostrarBrowserDestino
46  {
47  get { return _mostrarBrowserDestino; }
48  set
49  {
50  _mostrarBrowserDestino = value;
51  MostrarOcultarBrowserDestino(value);
52  }
53  }
54  private bool _mostrarBrowserDestino;
55 
56  #endregion PROPIEDADES
57 
58  #region Eventos públicos
59 
63  public delegate void BrowserOrigen_ClickBefore_Handler(object sender, ref bool tlOk);
64 
68  public event BrowserOrigen_ClickBefore_Handler BrowserOrigen_ClickBefore;
69 
73  public delegate void BrowserOrigen_ClickAfter_Handler(object sender, bool tlAceptar);
74 
78  public event BrowserOrigen_ClickAfter_Handler BrowserOrigen_ClickAfter;
79 
83  public delegate void BrowserDestino_ClickBefore_Handler(object sender, ref bool tlOk);
84 
88  public event BrowserDestino_ClickBefore_Handler BrowserDestino_ClickBefore;
89 
93  public delegate void BrowserDestino_ClickAfter_Handler(object sender, bool tlAceptar);
94 
98  public event BrowserDestino_ClickAfter_Handler BrowserDestino_ClickAfter;
99 
103  public delegate void Aceptar_CambioCodigoOrigenBefore_Handler(object sender, ref string codigo);
104 
108  public event Aceptar_CambioCodigoOrigenBefore_Handler Aceptar_CambioCodigoOrigenBefore;
109 
110  #endregion Eventos públicos
111 
112  #region CONSTRUCTOR
113 
118  public frmDuplicarMante(bool lGeneraCodigoSiEsBlanco = true)
119  {
120  InitializeComponent();
121 
122  ewlabelCodigoBlanco.Visible = lGeneraCodigoSiEsBlanco;
123  }
124 
133  public frmDuplicarMante(ewMante ewMante, string tituloMante, Type txtcodlabel, string lcCodigo, bool lGeneraCodigoSiEsBlanco = true)
134  : this(ewMante, tituloMante, txtcodlabel, lcCodigo, txtcodlabel, lGeneraCodigoSiEsBlanco)
135  {
136  //Invoco al contructor con 2 types usando el mismo
137 
138  ewlabelCodigoBlanco.Visible = lGeneraCodigoSiEsBlanco;
139  }
140 
150  public frmDuplicarMante(ewMante ewMante, string tituloMante, Type txtcodlabel, string lcCodigo, Type txtcodlabelDestino, bool lGeneraCodigoSiEsBlanco = true)
151  {
152  InitializeComponent();
153 
154  _ewMante = ewMante;
155 
156  _Pantalla = _ewMante._Pantalla + "DUPLICAR";
157 
158  Text = "Duplicar " + tituloMante;
159  ewlabelTitulo.Text = "Este proceso creará un nuevo código de " + tituloMante.ToLower() + " en la empresa actual, con las mismas características que el código origen.";
160  ewPanelOrigen._Titulo = "Código " + tituloMante.ToLower() + " origen";
161  ewPanelDestino._Titulo = "Código " + tituloMante.ToLower() + " destino";
162 
163  txtOrigen = Activator.CreateInstance(txtcodlabel);
164  ewPanelOrigen._Panel.Controls.Add(txtOrigen);
165  txtOrigen.Location = new Point(100, 40);
166  txtOrigen.Size = new Size(574, 25);
167  txtOrigen.Name = "txtOrigen";
168  txtOrigen._CrearManteSiCodigoNoExiste = false;
169  txtOrigen.TabIndex = 0;
170  txtOrigen._Codigo = lcCodigo;
171  _codigoOrigen = lcCodigo;
172  if (txtOrigen is ewtxtcodlabel)
173  {
174  ((ewtxtcodlabel)txtOrigen)._Browser_Click_Before += TxtOrigen_Browser_Click_Before;
175  ((ewtxtcodlabel)txtOrigen)._Browser_Click_After += TxtOrigen_Browser_Click_After;
176  }
177 
178 
179  txtDestino = Activator.CreateInstance(txtcodlabelDestino);
180  ewPanelDestino._Panel.Controls.Add(txtDestino);
181  txtDestino.Location = new Point(100, 40);
182  txtDestino.Size = new Size(574, 25);
183  txtDestino.Name = "txtDestino";
184  txtDestino._CrearManteSiCodigoNoExiste = false;
185  txtDestino._Validar_Codigo = false;
186  txtDestino._Mostrar_Mante = false;
187  txtDestino._Mostrar_Browser = false;
188  txtDestino._Esconder_Label = true;
189  txtDestino.TabIndex = 1;
190  txtDestino.Validating += new System.ComponentModel.CancelEventHandler(txtDestino_Validating);
191  if (txtDestino is ewtxtcodlabel)
192  {
193  ((ewtxtcodlabel)txtDestino)._Browser_Click_Before += TxtDestino_Browser_Click_Before;
194  ((ewtxtcodlabel)txtDestino)._Browser_Click_After += TxtDestino_Browser_Click_After;
195  }
196 
197  ewlabelCodigoBlanco.Visible = lGeneraCodigoSiEsBlanco;
198  }
199 
200  #endregion CONSTRUCTOR
201 
202  #region OVERRIDES DE EVENTOS FORMULARIOS
203 
204 
205  #endregion OVERRIDES DE EVENTOS FORMULARIOS
206 
207  #region PROTECTED
208 
213  protected override void OnLoad(EventArgs e)
214  {
215  base.OnLoad(e);
216  }
217 
222  protected override void OnShown(EventArgs e)
223  {
224  base.OnShown(e);
225 
226  //Bug 215989 => Desalineado de texto. Fuerzo cambio para repintar. No funciona ni en el contructor
227  //ni en el OnLoad. Lo hago aquí para que se pinte correctamente
228  if (txtOrigen is ewtxtcodlabel)
229  {
230  string lcCodigo = txtOrigen._Codigo;
231 
232  ((ewtxtcodlabel)txtOrigen)._Tipo_Visual = ewtxtcodlabel._Tipos_Visuales.Combo;
233  ((ewtxtcodlabel)txtOrigen)._Tipo_Visual = ewtxtcodlabel._Tipos_Visuales.Estandar;
234 
235  // Volver a asignar el código, porque al cambiar el tipo visual se pierde
236  txtOrigen._Codigo = lcCodigo;
237  }
238 
239  txtDestino.Focus();
240  }
241 
242  #endregion PROTECTED
243 
244  #region METODOS PRIVADOS
245 
250  private void MostrarOcultarBrowserDestino(bool mostrar)
251  {
252  if(txtDestino!=null)
253  {
254  txtDestino._Mostrar_Browser = mostrar;
255  }
256  }
257 
262  private void TxtOrigen_Browser_Click_After(bool tlAceptar)
263  {
264  BrowserOrigen_ClickAfter?.Invoke(txtOrigen, tlAceptar);
265 
266  }
267 
272  private void TxtOrigen_Browser_Click_Before(ref bool tlOk)
273  {
274  BrowserOrigen_ClickBefore?.Invoke(txtOrigen, ref tlOk);
275  }
276 
281  private void TxtDestino_Browser_Click_After(bool tlAceptar)
282  {
283  BrowserDestino_ClickAfter?.Invoke(txtOrigen, tlAceptar);
284  }
285 
290  private void TxtDestino_Browser_Click_Before(ref bool tlOk)
291  {
292  BrowserDestino_ClickBefore?.Invoke(txtOrigen, ref tlOk);
293  }
294 
295 
301  private void btDocAceptar1_Click(object sender, EventArgs e)
302  {
303  var origen = ((ewtxtcodlabel)txtOrigen)._Codigo;
304  if (!origen.Equals(_codigoOrigen))
305  {
306  Type tipo = _ewMante.GetType();
307  _ewMante = Activator.CreateInstance(tipo) as ewMante;
308 
309  //Lanzo un evento justo antes de realizar una asignación
310  Aceptar_CambioCodigoOrigenBefore?.Invoke(_ewMante, ref origen);
311 
312  _ewMante._Codigo = origen;
313  }
314 
315  IResultadoDuplicacion resultado = _ewMante._Duplicar(txtDestino._Codigo);
316 
317  if (!resultado.EjecucionCorrecta)
318  {
319  DialogResult = DialogResult.None;
320  lcMsgError = resultado.Error;
321  }
322  else
323  {
324  DialogResult = DialogResult.Yes;
325 
326  lcNewCodigo = txtDestino._Codigo = resultado.CodigoDestino;
327  }
328 
329  Close();
330  }
331 
337  private void frmDuplicarMante_Load(object sender, EventArgs e)
338  {
339 
340  }
341 
347  private void txtDestino_Validating(object sender, CancelEventArgs e)
348  {
349  if (sender.GetType().Name == "txtArticulo" && !string.IsNullOrEmpty(txtDestino._Codigo.Trim()) && txtDestino._Codigo.Substring(0, 1) == " ")
350  {
351  this._MessageBox("No está permitido dar de alta nuevos artículos con espacios en el inicio del código '" + txtDestino._Codigo + "'.", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, DialogResult.OK);
352 
353 
354  txtDestino._Codigo = "";
355  e.Cancel = true;
356  }
357  }
358 
359  #endregion METODOS PRIVADOS
360  }
361 }
frmDuplicarMante(ewMante ewMante, string tituloMante, Type txtcodlabel, string lcCodigo, bool lGeneraCodigoSiEsBlanco=true)
Inicializa una nueva instancia de la clase
Clase de negocio base para mantenimientos
Definition: clsEwBase.cs:1643
_Tipos_Visuales
Definición de los posibles tipos visuales de la clase txtcodlabel
string _Pantalla
Nombre clave del formulario
Definition: clsEwBase.cs:2785
Formulario para la petición de parámetros para duplicar mantenimientos
BrowserOrigen_ClickAfter_Handler BrowserOrigen_ClickAfter
Evento que se al hacer click en el browser orígen
BrowserOrigen_ClickBefore_Handler BrowserOrigen_ClickBefore
Evento que se al hacer click en el browser orígen
frmDuplicarMante(bool lGeneraCodigoSiEsBlanco=true)
Inicializa una nueva instancia de la clase
override void OnShown(EventArgs e)
Override OnShown
Aceptar_CambioCodigoOrigenBefore_Handler Aceptar_CambioCodigoOrigenBefore
Evento que se lanza justo antes de asignar un código origen distinto del original ...
bool EjecucionCorrecta
Resultado de la operación
virtual string _Codigo
Valor del campo clave que
Definition: clsEwBase.cs:2513
Clase FormDialog basada en FormBase
Definition: FormDialog.cs:17
frmDuplicarMante(ewMante ewMante, string tituloMante, Type txtcodlabel, string lcCodigo, Type txtcodlabelDestino, bool lGeneraCodigoSiEsBlanco=true)
Inicializa una nueva instancia de la clase
BrowserDestino_ClickAfter_Handler BrowserDestino_ClickAfter
Evento que se al hacer click en el browser destino
Interficie para resultados de duplicaciones
BrowserDestino_ClickBefore_Handler BrowserDestino_ClickBefore
Evento que se al hacer click en el browser destino
override void OnLoad(EventArgs e)
Carga inicial del formulario.
Clase base para controles de tipo txtcodlabelf
virtual IResultadoDuplicacion _Duplicar(string tcCodigo)
Duplica el registro del mantenimiento
Definition: clsEwBase.cs:2294