frmPlantillasPersonalizarUnidades.cs
1 using sage.ew.botones;
2 using sage.ew.empresa;
3 using sage.ew.enumerations;
4 using sage.ew.ewbase;
5 using sage.ew.formul;
6 using sage.ew.formul.Forms;
8 using sage.ew.global;
9 using sage.ew.interficies;
10 using sage.ew.objetos;
12 using sage.ew.usuario;
13 using System;
14 using System.Collections.Generic;
15 using System.Data;
16 using System.Drawing;
17 using System.Linq;
18 using System.Windows.Forms;
19 using static sage.ew.docsven.PlantillasVenta;
20 
21 namespace sage.ew.docsven
22 {
27  {
31  private bool _trabajaConTallaColor = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_color"));
32 
36  private bool _lModUnicaja = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_modunicaja"));
37 
41  private bool _trabajaConCajas = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_cajas"));
42 
46  public PlantillasVenta.PersonalizacionesArtCli _Personalizaciones = null;
47 
51  public bool Aceptar;
52 
53  // Propiedad interna para guardar el estado de sólo lectura
54  //
55  private bool _lSoloLectura = false;
56  private bool _lcAsesor = false;
57 
58  #region CONSTRUCTORES
59 
64  {
65  this._Init();
66  InitializeComponent();
67  }
68 
72  public frmPlantillasPersonalizarUnidades(bool tlSoloLectura, bool lcAsesor)
73  {
74  this._Init(tlSoloLectura);
75 
76  InitializeComponent();
77 
78  if (lcAsesor)
79  ewPanelTitulo1._Titulo = "Personalización de unidades de conceptos por clientes";
80 
81  _lcAsesor = lcAsesor;
82 
83  FormClosing += new FormClosingEventHandler(frmPlantillasPersonalizarUnidades_FormClosing);
84  }
85 
86  #endregion CONSTRUCTORES
87 
92  protected override void OnShown(EventArgs e)
93  {
94  base.OnShown(e);
95  }
96 
101  private void _Init(bool tlSoloLectura = false)
102  {
103  this._MostrarCrearAccesoDirecto = false;
104 
105  this._lSoloLectura = tlSoloLectura;
106 
107  return;
108  }
109 
114  protected override void OnLoad(EventArgs e)
115  {
116  // Posem false per si es tanca pel botó de tancar del form
117  Aceptar = false;
118 
119  base.OnLoad(e);
120 
121  _Suscripcion_Eventos();
122 
123  if (_Personalizaciones._Grid == null)
124  {
125  _Personalizaciones._Grid = mtgPersonalizaciones;
126  }
127 
128  mtgPersonalizaciones._Grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
129  // mtgPersonalizaciones._Grid.ScrollBars = ScrollBars.Vertical;
130  mtgPersonalizaciones._Grid._FiltrarPorColumna = true;
131  mtgPersonalizaciones._Grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
132  }
133 
134  private void btSalir1_Click(object sender, EventArgs e)
135  {
136  _Cancelar_Suscripcion_Eventos();
137 
138  this.Aceptar = false;
139  this.Close();
140  }
141 
142 
143  private void btDocCancelar1_Click(object sender, EventArgs e)
144  {
145  _Cancelar_Suscripcion_Eventos();
146 
147  this.Aceptar = false;
148  this.Close();
149  }
150 
151  private void btDocAceptar1_Click(object sender, EventArgs e)
152  {
153  var duplicados = mtgPersonalizaciones._Grid.Rows.Cast<DataGridViewRow>()
154  .GroupBy(row => new
155  {
156  Cliente = row.Cells["_Cliente"].Value.ToString().Trim(),
157  Articulo = row.Cells["_Articulo"].Value.ToString().Trim(),
158  Talla = (!_trabajaConTallaColor ? string.Empty : row.Cells["_Talla"].Value.ToString().Trim()),
159  Color = (!_trabajaConTallaColor ? string.Empty : row.Cells["_Color"].Value.ToString().Trim())
160  })
161  .Where(group => group.Count() > 1)
162  .ToList();
163 
164  if (duplicados.Any())
165  {
166  _MessageBox("Existen líneas duplicadas en la personalización de unidades. No se puede personalizar unidades para el mismo cliente y " + (!_lcAsesor ? "artículo." : "concepto."), MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
167  this.DialogResult = DialogResult.None;
168  return;
169  }
170 
171  // eliminar registros que no tengan cliente ni articulo de personalizados
172  for (int i = 0; i < mtgPersonalizaciones._Grid.Rows.Count; i++)
173  {
174  if (string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[i].Cells["_Cliente"].Value.ToString().Trim()) &&
175  string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[i].Cells["_Articulo"].Value.ToString().Trim()))
176  {
177  mtgPersonalizaciones._Grid.Rows.RemoveAt(i);
178  i--;
179  }
180  else
181  {
182  if (string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[i].Cells["_Articulo"].Value.ToString().Trim()))
183  {
184  _MessageBox("Existen líneas de clientes sin información del " + (!_lcAsesor ? "artículo" : "concepto") + ". Imposible su personalización.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
185  this.DialogResult = DialogResult.None;
186  return;
187  }
188  else
189  {
190  if (_Personalizaciones.lstArticulosTyC.Contains(mtgPersonalizaciones._Grid.Rows[i].Cells["_Articulo"].Value.ToString().Trim()))
191  {
192  if (string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[i].Cells["_Talla"].Value.ToString().Trim()) &&
193  string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[i].Cells["_Color"].Value.ToString().Trim()))
194  {
195  _MessageBox("Existen líneas de artículos que trabajan con talla y color que no tiene informadas su talla y color. No se puede personalizar unidades para dicho artículo, talla y color.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
196  this.DialogResult = DialogResult.None;
197  return;
198  }
199  }
200  }
201  }
202  }
203 
204 
205  _Cancelar_Suscripcion_Eventos();
206 
207  this.Aceptar = true;
208  this.Close();
209  }
210 
211  private void mantePlanificacion_Load(object sender, EventArgs e)
212  {
213 
214  }
215 
216  private void MtgPersonalizaciones__ColChange(DataGridViewCell tdgvCurrentCel)
217  {
218  if (tdgvCurrentCel != null)
219  {
220  if (mtgPersonalizaciones._Grid.Columns[mtgPersonalizaciones._Grid.CurrentCell.ColumnIndex].Name == "_Articulo")
221  {
222  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = false;
223 
224  if (string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[mtgPersonalizaciones._Grid.CurrentCell.RowIndex].Cells["_Cliente"].Value.ToString().Trim()))
225  {
226  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = true;
227  }
228  }
229 
230  if (mtgPersonalizaciones._Grid.Columns[mtgPersonalizaciones._Grid.CurrentCell.ColumnIndex].Name == "_Unidades")
231  {
232  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = false;
233 
234  if (string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[mtgPersonalizaciones._Grid.CurrentCell.RowIndex].Cells["_Cliente"].Value.ToString().Trim()) ||
235  string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[mtgPersonalizaciones._Grid.CurrentCell.RowIndex].Cells["_Articulo"].Value.ToString().Trim()))
236  {
237  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = true;
238  }
239  else
240  {
241  if (_trabajaConCajas && _Personalizaciones._Items[mtgPersonalizaciones._Grid.CurrentRow.Index]._oArticulo._Con_Cajas && _Personalizaciones._Items[mtgPersonalizaciones._Grid.CurrentRow.Index]._Cajas != 0M)
242  {
243  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = !_lModUnicaja;
244  }
245  else
246  {
247  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = false;
248  }
249  }
250  }
251 
252  if (mtgPersonalizaciones._Grid.Columns[mtgPersonalizaciones._Grid.CurrentCell.ColumnIndex].Name == "_Peso")
253  {
254  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = false;
255 
256  if (!string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[mtgPersonalizaciones._Grid.CurrentCell.RowIndex].Cells["_Articulo"].ToString().Trim()))
257  {
258  if (_Personalizaciones._Items[mtgPersonalizaciones._Grid.CurrentCell.RowIndex]._Unidades == 0)
259  {
260  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = true;
261  }
262  else
263  {
264  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = !_Personalizaciones._Items[mtgPersonalizaciones._Grid.CurrentCell.RowIndex]._oArticulo._Con_Peso;
265  }
266  }
267  }
268 
269  if (mtgPersonalizaciones._Grid.Columns[mtgPersonalizaciones._Grid.CurrentCell.ColumnIndex].Name == "_Cajas")
270  {
271  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = false;
272  if (!string.IsNullOrEmpty(mtgPersonalizaciones._Grid.Rows[mtgPersonalizaciones._Grid.CurrentCell.RowIndex].Cells["_Articulo"].ToString().Trim()))
273  {
274  mtgPersonalizaciones._Grid.CurrentCell.ReadOnly = !_Personalizaciones._Items[mtgPersonalizaciones._Grid.CurrentCell.RowIndex]._oArticulo._Con_Cajas;
275  }
276  }
277  }
278  }
279 
280  private void MtgPersonalizaciones__F4_AfterClick(object sender, bool tlAceptar, ref botones.btBrowser toBrowser)
281  {
282  if (!tlAceptar)
283  return;
284 
285  // Si s'ha seleccionat alguna cosa
286  if (toBrowser._Codigo_List != null)
287  {
288  //Si ha seleccionado algo
289  if (toBrowser._Codigo_List.Count > 0)
290  {
291  foreach (string lcCodigo in toBrowser._Codigo_List.Keys)
292  {
293  _Personalizaciones._listPersonalizar.Add(lcCodigo);
294  }
295 
296  _Personalizaciones._RecalcularDatos(toBrowser.NombreMantenimiento);
297 
298  // Vaciamos los seleccionados, ya que sino se queda en memoria
299  toBrowser._Codigo_List.Clear();
300 
301  mtgPersonalizaciones._Grid.CurrentCell = mtgPersonalizaciones._Grid[0, mtgPersonalizaciones._Grid.Rows.Count - 1];
302  }
303  }
304  }
305 
306  private void MtgPersonalizaciones__F5_BeforeClick(object sender, ref btMante toMante)
307  {
308  if (mtgPersonalizaciones._Grid.CurrentCell.OwningColumn.Name == "_Articulo")
309  {
310  string lcCodigo = mtgPersonalizaciones._Grid.CurrentCell.Value.ToString();
311  }
312  }
313 
314  private void _Cancelar_Suscripcion_Eventos()
315  {
316  mtgPersonalizaciones._F4_AfterClick -= MtgPersonalizaciones__F4_AfterClick;
317  mtgPersonalizaciones._F5_BeforeClick -= MtgPersonalizaciones__F5_BeforeClick;
318  mtgPersonalizaciones._ColChange -= MtgPersonalizaciones__ColChange;
319  if (this.DialogResult != DialogResult.None)
320  {
321  FormClosing -= new FormClosingEventHandler(frmPlantillasPersonalizarUnidades_FormClosing);
322  }
323  }
324 
325  private void _Suscripcion_Eventos()
326  {
327  mtgPersonalizaciones._F4_AfterClick += MtgPersonalizaciones__F4_AfterClick;
328  mtgPersonalizaciones._F5_BeforeClick += MtgPersonalizaciones__F5_BeforeClick;
329  mtgPersonalizaciones._ColChange += MtgPersonalizaciones__ColChange;
330  }
331 
332  private void frmPlantillasPersonalizarUnidades_FormClosing(object sender, FormClosingEventArgs e)
333  {
334  this.btDocCancelar1_Click(sender, (EventArgs)e);
335 
336  if (this.DialogResult == DialogResult.None)
337  e.Cancel = true;
338  }
339  }
340 }
frmPlantillasPersonalizarUnidades(bool tlSoloLectura, bool lcAsesor)
Constructor
Clase para las plantillas de documentos
Clase FormDialog basada en FormBase
Definition: FormDialog.cs:17
Muestra el mantenimiento correspondiente a _Form con el registro correspondiente al _Codigo ...
Presenta las personalizaciones de unidades por cliente
Clase para personalizaciones de unidades por clientes de la plantilla de presupuesto. Basada a partir de un ewManteTRel